# HG changeset patch # User Ethan Blanton # Date 1240023166 0 # Node ID e5ebf3abd9f8876eb2f8fe3c77d0b60740718cda # Parent 4a18d518a572b447a7964a496f53fdb28d986585 Add the Tcl command purple::connection state (purple_connection_get_state). diff -r 4a18d518a572 -r e5ebf3abd9f8 doc/TCL-HOWTO.dox --- a/doc/TCL-HOWTO.dox Fri Apr 17 21:31:45 2009 +0000 +++ b/doc/TCL-HOWTO.dox Sat Apr 18 02:52:46 2009 +0000 @@ -173,6 +173,7 @@ purple::connection displayname gc purple::connection handle purple::connection list +purple::connection state @endcode @c purple::connection is a collection of subcommands pertaining to @@ -192,6 +193,9 @@ this list are appropriate as @c gc arguments to the other @c purple::connection subcommands or other commands requiring a gc. + @c state returns the PurpleConnectionState of this account as one of + the strings "connected", "disconnected", or "connecting". + @code purple::conv_send account who text @endcode diff -r 4a18d518a572 -r e5ebf3abd9f8 libpurple/plugins/tcl/tcl_cmds.c --- a/libpurple/plugins/tcl/tcl_cmds.c Fri Apr 17 21:31:45 2009 +0000 +++ b/libpurple/plugins/tcl/tcl_cmds.c Sat Apr 18 02:52:46 2009 +0000 @@ -683,8 +683,9 @@ int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { Tcl_Obj *list, *elem; - const char *cmds[] = { "account", "displayname", "handle", "list", NULL }; - enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, CMD_CONN_LIST } cmd; + const char *cmds[] = { "account", "displayname", "handle", "list", "state", NULL }; + enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, + CMD_CONN_LIST, CMD_CONN_STATE } cmd; int error; GList *cur; PurpleConnection *gc; @@ -739,6 +740,25 @@ } Tcl_SetObjResult(interp, list); break; + case CMD_CONN_STATE: + if (objc != 3) { + Tcl_WrongNumArgs(interp, 2, objv, "gc"); + return TCL_ERROR; + } + if ((gc = tcl_validate_gc(objv[2], interp)) == NULL) + return TCL_ERROR; + switch (purple_connection_get_state(gc)) { + case PURPLE_DISCONNECTED: + Tcl_SetObjResult(interp, Tcl_NewStringObj("disconnected", -1)); + break; + case PURPLE_CONNECTED: + Tcl_SetObjResult(interp, Tcl_NewStringObj("connected", -1)); + break; + case PURPLE_CONNECTING: + Tcl_SetObjResult(interp, Tcl_NewStringObj("connecting", -1)); + break; + } + break; } return TCL_OK;