summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan Blanton <elb@pidgin.im>2009-04-18 02:52:46 +0000
committerEthan Blanton <elb@pidgin.im>2009-04-18 02:52:46 +0000
commit6368d3d5ed15e070287e1145d87e15d06c4f1f8a (patch)
treea40d9e7c0ba71bf07539fdbe8e9b298b5b4588df
parent8f37d0dc0f4d5287ad6b964364244e3822cef871 (diff)
downloadpidgin-6368d3d5ed15e070287e1145d87e15d06c4f1f8a.tar.gz
Add the Tcl command purple::connection state (purple_connection_get_state).
-rw-r--r--doc/TCL-HOWTO.dox4
-rw-r--r--libpurple/plugins/tcl/tcl_cmds.c24
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;