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