| 681 } |
681 } |
| 682 |
682 |
| 683 int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) |
683 int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) |
| 684 { |
684 { |
| 685 Tcl_Obj *list, *elem; |
685 Tcl_Obj *list, *elem; |
| 686 const char *cmds[] = { "account", "displayname", "handle", "list", NULL }; |
686 const char *cmds[] = { "account", "displayname", "handle", "list", "state", NULL }; |
| 687 enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, CMD_CONN_LIST } cmd; |
687 enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, |
| |
688 CMD_CONN_LIST, CMD_CONN_STATE } cmd; |
| 688 int error; |
689 int error; |
| 689 GList *cur; |
690 GList *cur; |
| 690 PurpleConnection *gc; |
691 PurpleConnection *gc; |
| 691 |
692 |
| 692 if (objc < 2) { |
693 if (objc < 2) { |
| 736 for (cur = purple_connections_get_all(); cur != NULL; cur = g_list_next(cur)) { |
737 for (cur = purple_connections_get_all(); cur != NULL; cur = g_list_next(cur)) { |
| 737 elem = purple_tcl_ref_new(PurpleTclRefConnection, cur->data); |
738 elem = purple_tcl_ref_new(PurpleTclRefConnection, cur->data); |
| 738 Tcl_ListObjAppendElement(interp, list, elem); |
739 Tcl_ListObjAppendElement(interp, list, elem); |
| 739 } |
740 } |
| 740 Tcl_SetObjResult(interp, list); |
741 Tcl_SetObjResult(interp, list); |
| |
742 break; |
| |
743 case CMD_CONN_STATE: |
| |
744 if (objc != 3) { |
| |
745 Tcl_WrongNumArgs(interp, 2, objv, "gc"); |
| |
746 return TCL_ERROR; |
| |
747 } |
| |
748 if ((gc = tcl_validate_gc(objv[2], interp)) == NULL) |
| |
749 return TCL_ERROR; |
| |
750 switch (purple_connection_get_state(gc)) { |
| |
751 case PURPLE_DISCONNECTED: |
| |
752 Tcl_SetObjResult(interp, Tcl_NewStringObj("disconnected", -1)); |
| |
753 break; |
| |
754 case PURPLE_CONNECTED: |
| |
755 Tcl_SetObjResult(interp, Tcl_NewStringObj("connected", -1)); |
| |
756 break; |
| |
757 case PURPLE_CONNECTING: |
| |
758 Tcl_SetObjResult(interp, Tcl_NewStringObj("connecting", -1)); |
| |
759 break; |
| |
760 } |
| 741 break; |
761 break; |
| 742 } |
762 } |
| 743 |
763 |
| 744 return TCL_OK; |
764 return TCL_OK; |
| 745 } |
765 } |