diff options
Diffstat (limited to 'src/dfeet/application.py')
-rw-r--r-- | src/dfeet/application.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/dfeet/application.py b/src/dfeet/application.py index 920f67b..5d88e00 100644 --- a/src/dfeet/application.py +++ b/src/dfeet/application.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import print_function -from gi.repository import Gtk, Gio, GObject, Gdk +from gi.repository import Gtk, Gio, GObject, Gdk, GLib from dfeet.window import DFeetWindow import gettext import os @@ -9,6 +9,20 @@ import os _ = gettext.gettext +def make_option(long_name, short_name=None, flags=0, arg=GLib.OptionArg.NONE, + arg_data=None, description=None, arg_description=None): + # surely something like this should exist inside PyGObject itself?! + option = GLib.OptionEntry() + option.long_name = long_name.lstrip('-') + option.short_name = 0 if not short_name else short_name.lstrip('-') + option.flags = flags + option.arg = arg + option.arg_data = arg_data + option.description = description + option.arg_description = arg_description + return option + + class DFeetApp(Gtk.Application): def __init__(self, package, version, data_dir): @@ -17,10 +31,26 @@ class DFeetApp(Gtk.Application): self.data_dir = data_dir Gtk.Application.__init__(self, application_id="org.gnome.dfeet", flags=Gio.ApplicationFlags.FLAGS_NONE) + self.add_main_option_entries([ + make_option("--version", description=_("Show version number and exit")), + make_option("--address", arg=GLib.OptionArg.STRING, arg_description="ADDRESS", + description=_("Open the specified bus address")), + ]) + + def do_handle_local_options(self, options): + self.options = options + if options.contains("version"): + print(_("D-Feet version: {}").format(self.version)) + return 0 + return -1 # Note that the function in C activate() becomes do_activate() in Python def do_activate(self): self._main_win = DFeetWindow(self, self.version, self.data_dir) + if self.options.contains("address"): + address = self.options.lookup_value("address").get_string() + if not self._main_win.connect_to(address): + self.quit() # Note that the function in C startup() becomes do_startup() in Python def do_startup(self): |