summaryrefslogtreecommitdiff
path: root/src/dfeet/application.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/dfeet/application.py')
-rw-r--r--src/dfeet/application.py32
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):