diff options
author | Ethan Blanton <elb@pidgin.im> | 2009-04-18 02:52:46 +0000 |
---|---|---|
committer | Ethan Blanton <elb@pidgin.im> | 2009-04-18 02:52:46 +0000 |
commit | 6368d3d5ed15e070287e1145d87e15d06c4f1f8a (patch) | |
tree | a40d9e7c0ba71bf07539fdbe8e9b298b5b4588df | |
parent | 8f37d0dc0f4d5287ad6b964364244e3822cef871 (diff) | |
download | pidgin-6368d3d5ed15e070287e1145d87e15d06c4f1f8a.tar.gz |
Add the Tcl command purple::connection state (purple_connection_get_state).
-rw-r--r-- | doc/TCL-HOWTO.dox | 4 | ||||
-rw-r--r-- | libpurple/plugins/tcl/tcl_cmds.c | 24 |
2 files changed, 26 insertions, 2 deletions
diff --git a/doc/TCL-HOWTO.dox b/doc/TCL-HOWTO.dox index f8a483035c..43ea33aa99 100644 --- a/doc/TCL-HOWTO.dox +++ b/doc/TCL-HOWTO.dox @@ -173,6 +173,7 @@ purple::connection account gc 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 @@ purple::connection list 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 --git a/libpurple/plugins/tcl/tcl_cmds.c b/libpurple/plugins/tcl/tcl_cmds.c index 53af8595ef..c8f1aeb1aa 100644 --- a/libpurple/plugins/tcl/tcl_cmds.c +++ b/libpurple/plugins/tcl/tcl_cmds.c @@ -683,8 +683,9 @@ int tcl_cmd_cmd(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST 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 @@ int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj } 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; |