diff --git a/scripts/gajim-remote.py b/scripts/gajim-remote.py
index 22bc4e405..6abc59f43 100755
--- a/scripts/gajim-remote.py
+++ b/scripts/gajim-remote.py
@@ -84,12 +84,9 @@ def gtk_quit():
argv_len = len(sys.argv)
-if argv_len < 2:
- send_error('Usage: ' + sys.argv[0] + ' command [arguments]')
+if argv_len < 2 or sys.argv[1] not in commands: # no args or bad args
+ end_error(compose_help())
-if sys.argv[1] not in commands:
- send_error(compose_help())
-
command = sys.argv[1]
if command == 'help':
diff --git a/src/config.py b/src/config.py
index e65e25870..7a11c5307 100644
--- a/src/config.py
+++ b/src/config.py
@@ -365,15 +365,20 @@ class PreferencesWindow:
st = gajim.config.get('log_notif_in_sep_file')
self.xml.get_widget('log_in_extern_checkbutton').set_active(st)
- # don't send os info
+ # send os info
st = gajim.config.get('send_os_info')
self.xml.get_widget('send_os_info_checkbutton').set_active(st)
- # don't check for new version
+ # check for new version
st = gajim.config.get('check_for_new_version')
btn = self.xml.get_widget('check_for_new_version_checkbutton')
btn.set_active(st)
+ # use dbus
+ st = gajim.config.get('use_dbus')
+ btn = self.xml.get_widget('enable_dbus_checkbutton')
+ btn.set_active(st)
+
self.xml.signal_autoconnect(self)
self.sound_tree.get_model().connect('row-changed',
@@ -790,6 +795,17 @@ class PreferencesWindow:
gajim.config.set('check_for_new_version', widget.get_active())
self.plugin.save_config()
+ def on_enable_dbus_checkbutton_toggled(self, widget):
+ isactive = widget.get_active()
+ gajim.config.set('use_dbus', isactive)
+ self.plugin.save_config()
+ if isactive:
+ if self.plugin.remote is None:
+ self.plugin.enable_dbus()
+ else:
+ if self.plugin.remote is not None:
+ self.plugin.disable_dbus()
+
def fill_msg_treeview(self):
self.xml.get_widget('delete_msg_button').set_sensitive(False)
model = self.msg_tree.get_model()
diff --git a/src/gajim.py b/src/gajim.py
index e2b29055f..f9ed09dcb 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -823,6 +823,15 @@ class Interface:
def save_config(self):
parser.write()
+ def enable_dbus(self):
+ import remote_control
+ self.remote = remote_control.Remote(self)
+
+ def disable_dbus(self):
+ if self.remote: # FIXME: A handler is already registered for the path starting with path[0] = "org"
+ del (self.remote)
+ self.remote = None
+
def __init__(self):
self.default_values = {
'inmsgcolor': gajim.config.get('inmsgcolor'),
@@ -886,10 +895,9 @@ class Interface:
self.roster = roster_window.RosterWindow(self)
if gajim.config.get('use_dbus'):
- import remote_control
- self.remote = remote_control.Remote(self)
+ self.enable_dbus()
else:
- self.remote = None
+ self.disable_dbus()
path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps/gajim.png')
pix = gtk.gdk.pixbuf_new_from_file(path_to_file)
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index 398ddebe8..3bd49c35d 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -5531,6 +5531,27 @@ Custom
False
+
+
+
+ True
+ If checked, Gajim can be controlled by other programs that support DBus
+ True
+ Enable DBus capabilities
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+