From fa563d45b9b494b315b0dbe226d88417633e5198 Mon Sep 17 00:00:00 2001 From: sezanzeb Date: Wed, 25 Nov 2020 23:55:31 +0100 Subject: [PATCH] switch to autoloat presets --- data/key-mapper.glade | 36 ++++++++++++++++++++++++++++++++++++ keymapper/config.py | 8 ++++++-- keymapper/daemon.py | 2 ++ keymapper/gtk/window.py | 10 +++++++++- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/data/key-mapper.glade b/data/key-mapper.glade index 18aebdd9..5f206f17 100644 --- a/data/key-mapper.glade +++ b/data/key-mapper.glade @@ -487,6 +487,42 @@ 2 + + + True + False + + + True + False + Automatically load this preset + 0 + + + True + True + 0 + + + + + True + True + + + + False + True + 1 + + + + + True + True + 3 + + True diff --git a/keymapper/config.py b/keymapper/config.py index 65bbbd59..2e2f66d9 100644 --- a/keymapper/config.py +++ b/keymapper/config.py @@ -44,12 +44,16 @@ class _Config: self._config = {} self.load_config() - def set_autoload_preset(self, device, preset): + def set_autoload_preset(self, device, preset, load=True): """Set a preset to be automatically applied on start.""" if self._config.get('autoload') is None: self._config['autoload'] = {} - self._config['autoload'][device] = preset + if load: + self._config['autoload'][device] = preset + elif self._config['autoload'].get(device) is not None: + # TODO test + del self._config['autoload'][device] def iterate_autoload_presets(self): """get tuples of (device, preset).""" diff --git a/keymapper/daemon.py b/keymapper/daemon.py index 995428ee..35bfc856 100644 --- a/keymapper/daemon.py +++ b/keymapper/daemon.py @@ -80,9 +80,11 @@ class Daemon(service.Object): """ def __init__(self, *args, autoload=True, **kwargs): """Constructs the daemon. You still need to run the GLib mainloop.""" + print(autoload) self.injectors = {} if autoload: for device, preset in config.iterate_autoload_presets(): + print(device, preset) mapping = Mapping() mapping.load(device, preset) self.injectors[device] = KeycodeInjector(device, mapping) diff --git a/keymapper/gtk/window.py b/keymapper/gtk/window.py index 8cbd1ca6..ff481ed7 100755 --- a/keymapper/gtk/window.py +++ b/keymapper/gtk/window.py @@ -37,7 +37,7 @@ from keymapper.gtk.row import Row from keymapper.gtk.unsaved import unsaved_changes_dialog, GO_BACK from keymapper.dev.reader import keycode_reader from keymapper.daemon import get_dbus_interface -from keymapper.paths import get_config_path +from keymapper.config import config def gtk_iteration(): @@ -288,6 +288,14 @@ class Window: # changes a bit keycode_reader.start_reading(self.selected_device) + def on_preset_autoload_switch_activate(self, _, active): + """Load the preset automatically next time the user logs in.""" + device = self.selected_device + preset = self.selected_preset + # TODO test call this and then check config + config.set_autoload_preset(device, preset, active) + config.save_config() + def on_select_device(self, dropdown): """List all presets, create one if none exist yet.""" if dropdown.get_active_id() == self.selected_device: