changeset 577530a024bb in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=577530a024bb description: import ged from plugin-system branch
diffstat:
src/common/connection.py | 2 +- src/common/gajim.py | 2 + src/gui_interface.py | 65 ++++++++++++++++++++++------------------------- 3 files changed, 33 insertions(+), 36 deletions(-)
diffs (168 lines):
diff -r 16666da7cd22 -r 577530a024bb src/common/connection.py --- a/src/common/connection.py Mon Jan 18 17:16:06 2010 +0100 +++ b/src/common/connection.py Tue Jan 19 21:32:45 2010 +0100 @@ -169,7 +169,7 @@ """ Always passes account name as first param """ - gajim.interface.dispatch(event, self.name, data) + gajim.ged.raise_event(event, self.name, data)
def _reconnect(self): """ diff -r 16666da7cd22 -r 577530a024bb src/common/gajim.py --- a/src/common/gajim.py Mon Jan 18 17:16:06 2010 +0100 +++ b/src/common/gajim.py Tue Jan 19 21:32:45 2010 +0100 @@ -67,6 +67,8 @@ connections = {} # 'account name': 'account (connection.Connection) instance' ipython_window = None
+ged = None # Global Events Dispatcher + log = logging.getLogger('gajim')
import logger diff -r 16666da7cd22 -r 577530a024bb src/gui_interface.py --- a/src/gui_interface.py Mon Jan 18 17:16:06 2010 +0100 +++ b/src/gui_interface.py Tue Jan 19 21:32:45 2010 +0100 @@ -85,6 +85,7 @@ import profile_window import config from threading import Thread +from common import ged
gajimpaths = common.configpaths.gajimpaths config_filename = gajimpaths['CONFIG_FILE'] @@ -1817,7 +1818,7 @@ # ('PEP_CONFIG', account, (node, form)) if 'pep_services' in self.instances[account]: self.instances[account]['pep_services'].config(data[0], data[1]) - + def handle_event_roster_item_exchange(self, account, data): # data = (action in [add, delete, modify], exchange_list, jid_from) dialogs.RosterItemExchangeWindow(account, data[0], data[1], data[2]) @@ -2016,17 +2017,7 @@ if pm_ctrl and hasattr(pm_ctrl, "update_contact"): pm_ctrl.update_contact()
- def register_handler(self, event, handler): - if event not in self.handlers: - self.handlers[event] = [] - - if handler not in self.handlers[event]: - self.handlers[event].append(handler) - - def unregister_handler(self, event, handler): - self.handlers[event].remove(handler) - - def register_handlers(self): + def create_core_handlers_list(self): self.handlers = { 'ROSTER': [self.handle_event_roster], 'WARNING': [self.handle_event_warning], @@ -2118,21 +2109,17 @@ 'PEP_RECEIVED': [self.handle_event_pep_received], 'CAPS_RECEIVED': [self.handle_event_caps_received] } - - def dispatch(self, event, account, data): + + def register_core_handlers(self): """ - Dispatch an network event to the event handlers of this class. Return - true if it could be dispatched to alteast one handler + Register core handlers in Global Events Dispatcher (GED). + + This is part of rewriting whole events handling system to use GED. """ - if event not in self.handlers: - log.warning('Unknown event %s dispatched to GUI: %s' % (event, data)) - return False - else: - log.debug('Event %s distpached to GUI: %s' % (event, data)) - for handler in self.handlers[event]: - handler(account, data) - return len(self.handlers[event]) - + for event_name, event_handlers in self.handlers.iteritems(): + for event_handler in event_handlers: + gajim.ged.register_event_handler(event_name, ged.CORE, + event_handler)
################################################################################ ### Methods dealing with gajim.events @@ -2800,13 +2787,15 @@ listener.disconnect(self.music_track_changed_signal) self.music_track_changed_signal = None
- def music_track_changed(self, unused_listener, music_track_info, account=None): + def music_track_changed(self, unused_listener, music_track_info, + account=None): if not account: accounts = gajim.connections.keys() else: accounts = [account] - - is_paused = hasattr(music_track_info, 'paused') and music_track_info.paused == 0 + + is_paused = hasattr(music_track_info, 'paused') and \ + music_track_info.paused == 0 if not music_track_info or is_paused: artist = title = source = '' else: @@ -2833,7 +2822,7 @@
def format_gdkcolor (gdkcolor): return format_rgb (*gdkcolor_to_rgb (gdkcolor)) - + # get style colors and create string for dvipng dummy = gtk.Invisible() dummy.ensure_style() @@ -3177,8 +3166,8 @@ except Exception: pass gobject.timeout_add_seconds(5, remote_init) - - + + def __init__(self): gajim.interface = self gajim.thread_interface = ThreadInterface @@ -3276,7 +3265,13 @@ self.handle_event_file_error) gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) gajim.default_session_type = ChatControlSession - self.register_handlers() + + # Creating Global Events Dispatcher + from common import ged + gajim.ged = ged.GlobalEventsDispatcher() + self.create_core_handlers_list() + self.register_core_handlers() + if gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'active') \ and gajim.HAVE_ZEROCONF: gajim.connections[gajim.ZEROCONF_ACC_NAME] = \ @@ -3421,8 +3416,8 @@ self.last_ftwindow_update = 0
self.music_track_changed_signal = None - - + + class PassphraseRequest: def __init__(self, keyid): self.keyid = keyid @@ -3503,7 +3498,7 @@ def thread_function(func, func_args, callback, callback_args): output = func(*func_args) gobject.idle_add(callback, output, *callback_args) - + Thread(target=thread_function, args=(func, func_args, callback, callback_args)).start()