X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fplayer.py;h=8528f9e9a5412b26f3a89664b35d8ecbf5c0d749;hb=e24d0fddff4e27ffb8ffd191a6525fc872fa5d1f;hp=82a619546b3c91ccb600ae5d4c27bd2a7e0200f7;hpb=81becb22fdc69e406c685c65b9f55fd514df142b;p=projects%2Fchimara%2Fchimara.git diff --git a/player/player.py b/player/player.py index 82a6195..8528f9e 100644 --- a/player/player.py +++ b/player/player.py @@ -15,10 +15,18 @@ class Player(GObject.GObject): def __init__(self): super(Player, self).__init__() - # FIXME: should use the Keyfile backend, but that's not available from - # Python - self.prefs_settings = Gio.Settings('org.chimara-if.player.preferences') - self.state_settings = Gio.Settings('org.chimara-if.player.state') + if os.path.exists('chimara-config'): + keyfile = 'chimara-config' + else: + keyfile = os.path.expanduser('~/.chimara/config') + try: + # This only works on my custom-built gobject-introspection; opened + # bug #682702 + backend = Gio.keyfile_settings_backend_new(keyfile, "/org/chimara-if/player/", None) + except AttributeError: + backend = None + self.prefs_settings = Gio.Settings('org.chimara-if.player.preferences', backend=backend) + self.state_settings = Gio.Settings('org.chimara-if.player.state', backend=backend) builder = Gtk.Builder() builder.add_from_file('chimara.ui') @@ -60,37 +68,17 @@ class Player(GObject.GObject): self.glk = Chimara.IF() self.glk.props.ignore_errors = True - self.glk.set_css_from_file('style.css') + css_file = _maybe(self.prefs_settings.get_value('css-file')) + if css_file is None: + css_file = 'style.css' + self.glk.set_css_from_file(css_file) vbox = builder.get_object('vbox') vbox.pack_end(self.glk, True, True, 0) vbox.pack_start(menubar, False, False, 0) vbox.pack_start(toolbar, False, False, 0) - #builder.connect_signals(self) # FIXME Segfaults?! - builder.get_object('open').connect('activate', self.on_open_activate) - builder.get_object('restore').connect('activate', - self.on_restore_activate) - builder.get_object('save').connect('activate', self.on_save_activate) - builder.get_object('stop').connect('activate', self.on_stop_activate) - builder.get_object('recent').connect('item-activated', - self.on_recent_item_activated) - builder.get_object('undo').connect('activate', self.on_undo_activate) - builder.get_object('quit').connect('activate', self.on_quit_activate) - builder.get_object('copy').connect('activate', self.on_copy_activate) - builder.get_object('paste').connect('activate', self.on_paste_activate) - builder.get_object('preferences').connect('activate', - self.on_preferences_activate) - builder.get_object('about').connect('activate', self.on_about_activate) - toolbar_action.connect('toggled', self.on_toolbar_toggled) - self.aboutwindow.connect('response', lambda x, *args: x.hide()) - self.aboutwindow.connect('delete-event', - lambda x, *args: x.hide_on_delete()) - self.window.connect('delete-event', self.on_window_delete_event) - self.prefswindow.connect('response', lambda x, *args: x.hide()) - self.prefswindow.connect('delete-event', - lambda x, *args: x.hide_on_delete()) - # FIXME Delete to here when above bug is fixed + builder.connect_signals(self) self.glk.connect('notify::program-name', self.change_window_title) self.glk.connect('notify::story-name', self.change_window_title) @@ -267,6 +255,30 @@ class Player(GObject.GObject): if os.path.exists(blorbfile): self.glk.graphics_file = blorbfile + # Various signal handlers for GtkBuilder file + def gtk_widget_hide(self, *args): + return Gtk.Widget.hide(*args) + + def gtk_widget_hide_on_delete(self, *args): + return Gtk.Widget.hide_on_delete(*args) + + def dummy_handler(self, *args): + pass + + on_resource_file_set = dummy_handler + on_interpreter_cell_changed = dummy_handler + on_toggle_underline = dummy_handler + on_toggle_italic = dummy_handler + on_toggle_bold = dummy_handler + on_toggle_justify = dummy_handler + on_toggle_right = dummy_handler + on_toggle_center = dummy_handler + on_toggle_left = dummy_handler + on_background_color_set = dummy_handler + on_foreground_color_set = dummy_handler + on_font_set = dummy_handler + on_css_filechooser_file_set = dummy_handler + def _maybe(variant): """Gets a maybe value from a GVariant - not handled in PyGI"""