Moved DBus type related instructions to scope which is executed only when there's a DBus support. No NameError exceptions are thrown anymore.
Makes debugging of plugins easier under WingIDE (which does not remember - at least it looks like that - the "ignore exception at this location" option when module is imported 'manually'). This could also be applied to src/remote_control.py .
This commit is contained in:
parent
da928f9183
commit
369ea5544b
|
@ -45,76 +45,6 @@ if dbus_support.supported:
|
||||||
if dbus_support:
|
if dbus_support:
|
||||||
import dbus.service
|
import dbus.service
|
||||||
import dbus.glib
|
import dbus.glib
|
||||||
|
|
||||||
INTERFACE = 'org.gajim.dbusplugin.RemoteInterface'
|
|
||||||
OBJ_PATH = '/org/gajim/dbusplugin/RemoteObject'
|
|
||||||
SERVICE = 'org.gajim.dbusplugin'
|
|
||||||
|
|
||||||
from common import gajim
|
|
||||||
from common import helpers
|
|
||||||
from time import time
|
|
||||||
from dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow
|
|
||||||
|
|
||||||
from plugins import GajimPlugin
|
|
||||||
from plugins.helpers import log_calls, log
|
|
||||||
from common import ged
|
|
||||||
|
|
||||||
class DBusPlugin(GajimPlugin):
|
|
||||||
name = u'D-Bus Support'
|
|
||||||
short_name = u'dbus'
|
|
||||||
version = u'0.1'
|
|
||||||
description = u'''D-Bus support. Based on remote_control module from
|
|
||||||
Gajim core but uses new events handling system.'''
|
|
||||||
authors = [u'Mateusz Biliński <mateusz@bilinski.it>']
|
|
||||||
homepage = u'http://blog.bilinski.it'
|
|
||||||
|
|
||||||
@log_calls('DBusPlugin')
|
|
||||||
def init(self):
|
|
||||||
self.config_dialog = None
|
|
||||||
#self.gui_extension_points = {}
|
|
||||||
#self.config_default_values = {}
|
|
||||||
|
|
||||||
self.events_names = ['Roster', 'AccountPresence', 'ContactPresence',
|
|
||||||
'ContactAbsence', 'ContactStatus', 'NewMessage',
|
|
||||||
'Subscribe', 'Subscribed', 'Unsubscribed',
|
|
||||||
'NewAccount', 'VcardInfo', 'LastStatusTime',
|
|
||||||
'OsInfo', 'GCPresence', 'GCMessage', 'RosterInfo',
|
|
||||||
'NewGmail']
|
|
||||||
|
|
||||||
self.signal_object = None
|
|
||||||
|
|
||||||
self.events_handlers = {}
|
|
||||||
self._set_handling_methods()
|
|
||||||
|
|
||||||
|
|
||||||
def activate(self):
|
|
||||||
session_bus = dbus_support.session_bus.SessionBus()
|
|
||||||
|
|
||||||
bus_name = dbus.service.BusName(SERVICE, bus=session_bus)
|
|
||||||
self.signal_object = SignalObject(bus_name)
|
|
||||||
|
|
||||||
def deactivate(self):
|
|
||||||
self.signal_object.remove_from_connection()
|
|
||||||
self.signal_object = None
|
|
||||||
|
|
||||||
def _set_handling_methods(self):
|
|
||||||
for event_name in self.events_names:
|
|
||||||
setattr(self, event_name,
|
|
||||||
new.instancemethod(
|
|
||||||
self._generate_handling_method(event_name),
|
|
||||||
self,
|
|
||||||
DBusPlugin))
|
|
||||||
self.events_handlers[event_name] = (ged.POSTCORE,
|
|
||||||
getattr(self, event_name))
|
|
||||||
|
|
||||||
def _generate_handling_method(self, event_name):
|
|
||||||
def handler(self, arg):
|
|
||||||
#print "Handler of event %s called"%(event_name)
|
|
||||||
if self.signal_object:
|
|
||||||
getattr(self.signal_object, event_name)(get_dbus_struct(arg))
|
|
||||||
|
|
||||||
return handler
|
|
||||||
|
|
||||||
# type mapping
|
# type mapping
|
||||||
|
|
||||||
# in most cases it is a utf-8 string
|
# in most cases it is a utf-8 string
|
||||||
|
@ -736,3 +666,74 @@ class SignalObject(dbus.service.Object):
|
||||||
else:
|
else:
|
||||||
gajim.interface.join_gc_room(account, room_jid, nick, password)
|
gajim.interface.join_gc_room(account, room_jid, nick, password)
|
||||||
|
|
||||||
|
INTERFACE = 'org.gajim.dbusplugin.RemoteInterface'
|
||||||
|
OBJ_PATH = '/org/gajim/dbusplugin/RemoteObject'
|
||||||
|
SERVICE = 'org.gajim.dbusplugin'
|
||||||
|
|
||||||
|
from common import gajim
|
||||||
|
from common import helpers
|
||||||
|
from time import time
|
||||||
|
from dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow
|
||||||
|
|
||||||
|
from plugins import GajimPlugin
|
||||||
|
from plugins.helpers import log_calls, log
|
||||||
|
from common import ged
|
||||||
|
|
||||||
|
class DBusPlugin(GajimPlugin):
|
||||||
|
name = u'D-Bus Support'
|
||||||
|
short_name = u'dbus'
|
||||||
|
version = u'0.1'
|
||||||
|
description = u'''D-Bus support. Based on remote_control module from
|
||||||
|
Gajim core but uses new events handling system.'''
|
||||||
|
authors = [u'Mateusz Biliński <mateusz@bilinski.it>']
|
||||||
|
homepage = u'http://blog.bilinski.it'
|
||||||
|
|
||||||
|
@log_calls('DBusPlugin')
|
||||||
|
def init(self):
|
||||||
|
self.config_dialog = None
|
||||||
|
#self.gui_extension_points = {}
|
||||||
|
#self.config_default_values = {}
|
||||||
|
|
||||||
|
self.events_names = ['Roster', 'AccountPresence', 'ContactPresence',
|
||||||
|
'ContactAbsence', 'ContactStatus', 'NewMessage',
|
||||||
|
'Subscribe', 'Subscribed', 'Unsubscribed',
|
||||||
|
'NewAccount', 'VcardInfo', 'LastStatusTime',
|
||||||
|
'OsInfo', 'GCPresence', 'GCMessage', 'RosterInfo',
|
||||||
|
'NewGmail']
|
||||||
|
|
||||||
|
self.signal_object = None
|
||||||
|
|
||||||
|
self.events_handlers = {}
|
||||||
|
self._set_handling_methods()
|
||||||
|
|
||||||
|
|
||||||
|
def activate(self):
|
||||||
|
session_bus = dbus_support.session_bus.SessionBus()
|
||||||
|
|
||||||
|
bus_name = dbus.service.BusName(SERVICE, bus=session_bus)
|
||||||
|
self.signal_object = SignalObject(bus_name)
|
||||||
|
|
||||||
|
def deactivate(self):
|
||||||
|
self.signal_object.remove_from_connection()
|
||||||
|
self.signal_object = None
|
||||||
|
|
||||||
|
def _set_handling_methods(self):
|
||||||
|
for event_name in self.events_names:
|
||||||
|
setattr(self, event_name,
|
||||||
|
new.instancemethod(
|
||||||
|
self._generate_handling_method(event_name),
|
||||||
|
self,
|
||||||
|
DBusPlugin))
|
||||||
|
self.events_handlers[event_name] = (ged.POSTCORE,
|
||||||
|
getattr(self, event_name))
|
||||||
|
|
||||||
|
def _generate_handling_method(self, event_name):
|
||||||
|
def handler(self, arg):
|
||||||
|
#print "Handler of event %s called"%(event_name)
|
||||||
|
if self.signal_object:
|
||||||
|
getattr(self.signal_object, event_name)(get_dbus_struct(arg))
|
||||||
|
|
||||||
|
return handler
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue