cimport purple
-cdef void signed_on_cb (connection.PurpleConnection *gc, glib.gpointer null):
- cdef account.PurpleAccount *acc = connection.c_purple_connection_get_account(gc)
- print "Account connected: %s %s" % (acc.username, acc.protocol_id)
-
cdef class Connection:
""" Connection class """
cdef connection.PurpleConnection *__conn
def __init__(self):
pass
-
- def connect(self):
- cdef int handle
-
- signals.c_purple_signal_connect(connection.c_purple_connections_get_handle(),
- "signed-on", &handle, <signals.PurpleCallback> signed_on_cb, NULL)
import etk
import ecore
import purple
-from xml.dom import minidom
+#from xml.dom import minidom
class MainWindow:
def __init__(self, quit_cb):
self.window.txt_area.text += sender + ": " + message + "<br> "
self.window.show()
+ def __purple_signal_signed_on_cb(self, username, protocol_id):
+ print "[DEBUG] Signed on: %s %s" % (username, protocol_id)
+
+ def __purple_signal_signed_off_cb(self, username, protocol_id):
+ print "[DEBUG] Signed off: %s %s" % (username, protocol_id)
+
+ def __purple_signal_buddy_signed_on_cb(self, name, alias):
+ print "[DEBUG]: Buddy signed on: %s %s" % (name, alias)
+
def __purple_signal_buddy_signed_off_cb(self, name, alias):
if self.buddies.has_key(name):
self.buddies[name] = None
self.buddies.pop(name)
- print "[DEBUG]: Buddy removed!"
+ print "[DEBUG]: Buddy signed off: %s %s" % (name, alias)
self.window.remove_buddy(name)
+ """
def __purple_signal_jabber_receiving_xmlnode_cb(self, message):
- xml = minidom.parse(message)
-
- for msg in xml.getElementsByTagName("message"):
- who = msg.getAttribute("from")
- for geoloc in msg.getElementsByTagNameNS("http://jabber.org/protocol/geoloc", "geoloc"):
- lat = geoloc.getElementsByTagName("lat")[0].childNodes[0].nodeValue
- lon = geoloc.getElementsByTagName("lon")[0].childNodes[0].nodeValue
- print "who: %s lat: %s lon: %s" % (who, lat, lon)
+ xml = minidom.parse(message)
+ for msg in xml.getElementsByTagName("message"):
+ who = msg.getAttribute("from")
+ for geoloc in msg.getElementsByTagNameNS("http://jabber.org/protocol/geoloc", "geoloc"):
+ lat = geoloc.getElementsByTagName("lat")[0].childNodes[0].nodeValue
+ lon = geoloc.getElementsByTagName("lon")[0].childNodes[0].nodeValue
+ print "who: %s lat: %s lon: %s" % (who, lat, lon)
+ """
def add_account(self):
username = "carmanplugintest@gmail.com"
self.account.get_protocol_options()
self.account.set_enabled("carman-purple-python", True)
self.account.password = password
- self.purple.connect()
+ self.purple.signal_connect("signed-on", self.__purple_signal_signed_on_cb)
+ self.purple.signal_connect("signed-off", self.__purple_signal_signed_off_cb)
+ self.purple.signal_connect("buddy-signed-on", self.__purple_signal_buddy_signed_on_cb)
self.purple.signal_connect("buddy-signed-off", self.__purple_signal_buddy_signed_off_cb)
- self.purple.signal_connect("jabber-receiving-xmlnode", self.__purple_signal_jabber_receiving_xmlnode_cb)
+ #self.purple.signal_connect("jabber-receiving-xmlnode", self.__purple_signal_jabber_receiving_xmlnode_cb)
def send_msg(self, name, msg):
if not self.conversations.has_key(name):
"notify": notify_cbs,
"request": request_cbs }[type][name] = func
- def connect(self):
- conn = Connection()
- conn.connect()
-
def signal_connect(self, name=None, cb=None):
cdef int handle
cdef plugin.PurplePlugin *jabber
global signal_cbs
signal_cbs[name] = cb
- if name == "buddy-signed-off":
+ if name == "signed-on":
+ signals.c_purple_signal_connect(
+ connection.c_purple_connections_get_handle(),
+ "signed-on", &handle,
+ <signals.PurpleCallback> signal_signed_on_cb, NULL)
+ elif name == "signed-off":
+ signals.c_purple_signal_connect(
+ connection.c_purple_connections_get_handle(),
+ "signed-off", &handle,
+ <signals.PurpleCallback> signal_signed_off_cb, NULL)
+ elif name == "buddy-signed-on":
+ signals.c_purple_signal_connect(
+ blist.c_purple_blist_get_handle(),
+ "buddy-signed-on", &handle,
+ <signals.PurpleCallback> signal_buddy_signed_on_cb, NULL)
+ elif name == "buddy-signed-off":
signals.c_purple_signal_connect(
blist.c_purple_blist_get_handle(),
"buddy-signed-off", &handle,
include "proxy.pyx"
include "account.pyx"
include "buddy.pyx"
-include "connection.pyx"
+#include "connection.pyx"
include "conversation.pyx"
signal_cbs = {}
+cdef void signal_signed_on_cb (connection.PurpleConnection *gc, \
+ glib.gpointer null):
+ cdef account.PurpleAccount *acc = connection.c_purple_connection_get_account(gc)
+ cdef char *c_username = NULL
+ cdef char *c_protocol_id = NULL
+
+ c_username = <char *> account.c_purple_account_get_username(acc)
+ if c_username == NULL:
+ username = None
+ else:
+ username = c_username
+
+ c_protocol_id = <char *> account.c_purple_account_get_protocol_id(acc)
+ if c_protocol_id == NULL:
+ protocol_id = None
+ else:
+ protocol_id = c_protocol_id
+
+ try:
+ (<object> signal_cbs["signed-on"])(username, protocol_id)
+ except KeyError:
+ pass
+
+cdef void signal_signed_off_cb (connection.PurpleConnection *gc, \
+ glib.gpointer null):
+ cdef account.PurpleAccount *acc = connection.c_purple_connection_get_account(gc)
+ cdef char *c_username = NULL
+ cdef char *c_protocol_id = NULL
+
+ c_username = <char *> account.c_purple_account_get_username(acc)
+ if c_username == NULL:
+ username = None
+ else:
+ username = c_username
+
+ c_protocol_id = <char *> account.c_purple_account_get_protocol_id(acc)
+ if c_protocol_id == NULL:
+ protocol_id = None
+ else:
+ protocol_id = c_protocol_id
+
+ try:
+ (<object> signal_cbs["signed-off"])(username, protocol_id)
+ except KeyError:
+ pass
+
+cdef void signal_buddy_signed_on_cb (blist.PurpleBuddy *buddy):
+ cdef char *c_name = NULL
+ cdef char *c_alias = NULL
+
+ c_name = <char *> blist.c_purple_buddy_get_name(buddy)
+ if c_name == NULL:
+ name = None
+ else:
+ name = c_name
+
+ c_alias = <char *> blist.c_purple_buddy_get_alias_only(buddy)
+ if c_alias == NULL:
+ alias = None
+ else:
+ alias = c_alias
+
+ try:
+ (<object> signal_cbs["buddy-signed-on"])(name, alias)
+ except KeyError:
+ pass
+
cdef void signal_buddy_signed_off_cb (blist.PurpleBuddy *buddy):
cdef char *c_name = NULL
cdef char *c_alias = NULL