plugins can now unregister
new QUIT signal : we can or not close the core
This commit is contained in:
parent
d9316e83a2
commit
19f1e79a66
|
@ -49,6 +49,8 @@ class GajimHub:
|
||||||
|
|
||||||
def register(self, name, event):
|
def register(self, name, event):
|
||||||
""" Records a plugin from an event """
|
""" Records a plugin from an event """
|
||||||
|
if not self.queues.has_key(name):
|
||||||
|
return
|
||||||
qu = self.queues[name]
|
qu = self.queues[name]
|
||||||
if self.events.has_key(event) :
|
if self.events.has_key(event) :
|
||||||
if not qu in self.events[event]:
|
if not qu in self.events[event]:
|
||||||
|
@ -57,6 +59,26 @@ class GajimHub:
|
||||||
self.events[event] = [qu]
|
self.events[event] = [qu]
|
||||||
# END register
|
# END register
|
||||||
|
|
||||||
|
def unregisterEvents(self, name, event):
|
||||||
|
""" Records a plugin from an event """
|
||||||
|
if not self.queues.has_key(name):
|
||||||
|
return
|
||||||
|
qu = self.queues[name]
|
||||||
|
if self.events.has_key(event) :
|
||||||
|
if qu in self.events[event]:
|
||||||
|
self.events[event].remove(qu)
|
||||||
|
# END register
|
||||||
|
|
||||||
|
def unregister(self, name):
|
||||||
|
if not self.queues.has_key(name):
|
||||||
|
return
|
||||||
|
qu = self.queues[name]
|
||||||
|
for event in self.events:
|
||||||
|
if qu in self.events[event]:
|
||||||
|
self.events[event].remove(qu)
|
||||||
|
del self.queues[name]
|
||||||
|
# END unregister
|
||||||
|
|
||||||
def sendPlugin(self, event, con, data):
|
def sendPlugin(self, event, con, data):
|
||||||
""" Sends an event to registered plugins"""
|
""" Sends an event to registered plugins"""
|
||||||
if self.events.has_key(event):
|
if self.events.has_key(event):
|
||||||
|
|
|
@ -29,7 +29,7 @@ class GajimThread(threading.Thread):
|
||||||
self.queueIn = queueIn
|
self.queueIn = queueIn
|
||||||
self.queueOut = queueOut
|
self.queueOut = queueOut
|
||||||
threading.Thread.__init__(self, target = self.run, \
|
threading.Thread.__init__(self, target = self.run, \
|
||||||
name = name, args = () )
|
name = name)
|
||||||
self.start()
|
self.start()
|
||||||
# END __init__
|
# END __init__
|
||||||
|
|
||||||
|
@ -42,6 +42,6 @@ class GajimThread(threading.Thread):
|
||||||
res = eval(mod)
|
res = eval(mod)
|
||||||
except:
|
except:
|
||||||
print _("plugin %s cannot be launched : ") % self.getName() + \
|
print _("plugin %s cannot be launched : ") % self.getName() + \
|
||||||
sys.exc_info()[1][1]
|
sys.exc_info()[1][0]
|
||||||
# END run
|
# END run
|
||||||
# END GajimThread
|
# END GajimThread
|
||||||
|
|
16
core/core.py
16
core/core.py
|
@ -352,14 +352,16 @@ class GajimCore:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
con = None
|
con = None
|
||||||
#('QUIT', account, ())
|
#('QUIT', None, (plugin, kill_core ?)) kill core : 0 or 1
|
||||||
if ev[0] == 'QUIT':
|
if ev[0] == 'QUIT':
|
||||||
for con in self.connexions.keys():
|
self.hub.unregister(ev[2][0])
|
||||||
if self.connected[self.connexions[con]] == 1:
|
if ev[2][1]:
|
||||||
self.connected[self.connexions[con]] = 0
|
for con in self.connexions.keys():
|
||||||
con.disconnect()
|
if self.connected[self.connexions[con]] == 1:
|
||||||
self.hub.sendPlugin('QUIT', None, ())
|
self.connected[self.connexions[con]] = 0
|
||||||
return 1
|
con.disconnect()
|
||||||
|
self.hub.sendPlugin('QUIT', None, ())
|
||||||
|
return 1
|
||||||
#('ASK_CONFIG', account, (who_ask, section, default_config))
|
#('ASK_CONFIG', account, (who_ask, section, default_config))
|
||||||
elif ev[0] == 'ASK_CONFIG':
|
elif ev[0] == 'ASK_CONFIG':
|
||||||
if ev[2][1] == 'accounts':
|
if ev[2][1] == 'accounts':
|
||||||
|
|
|
@ -1103,7 +1103,7 @@ class roster_Window:
|
||||||
tell that to the core and exit gtk"""
|
tell that to the core and exit gtk"""
|
||||||
self.plugin.config['hiddenlines'] = string.join(self.hidden_lines, '\t')
|
self.plugin.config['hiddenlines'] = string.join(self.hidden_lines, '\t')
|
||||||
self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config))
|
self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config))
|
||||||
self.plugin.send('QUIT', None, '')
|
self.plugin.send('QUIT', None, ('gtkgui', 0))
|
||||||
print _("plugin gtkgui stopped")
|
print _("plugin gtkgui stopped")
|
||||||
gtk.mainquit()
|
gtk.mainquit()
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ import Queue
|
||||||
from common import i18n
|
from common import i18n
|
||||||
_ = i18n._
|
_ = i18n._
|
||||||
|
|
||||||
HOST = socket.gethostbyname(socket.gethostname())
|
|
||||||
|
|
||||||
def XMLescape(txt):
|
def XMLescape(txt):
|
||||||
"Escape XML entities"
|
"Escape XML entities"
|
||||||
|
@ -141,6 +140,7 @@ class plugin:
|
||||||
self.message_types = {}
|
self.message_types = {}
|
||||||
#create socket
|
#create socket
|
||||||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
HOST = socket.gethostbyname(socket.gethostname())
|
||||||
if self.config.has_key('host'):
|
if self.config.has_key('host'):
|
||||||
HOST = socket.gethostbyname(self.config['host'])
|
HOST = socket.gethostbyname(self.config['host'])
|
||||||
self.socket.bind((HOST, self.config['port']))
|
self.socket.bind((HOST, self.config['port']))
|
||||||
|
|
Loading…
Reference in New Issue