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()
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits