From 1d72e1b542a8f2d18134e01c8ffb7ec229368dca Mon Sep 17 00:00:00 2001 From: sezanzeb Date: Sat, 26 Dec 2020 18:46:15 +0100 Subject: [PATCH] better guidance in the GUI --- keymapper/gtk/row.py | 44 +++++++++++++++++++++------- keymapper/gtk/window.py | 6 +++- readme/pylint.svg | 4 +-- readme/screenshot.png | Bin 28977 -> 29694 bytes readme/screenshot_2.png | Bin 59015 -> 59665 bytes tests/testcases/test_integration.py | 32 ++++++++++++++++++-- 6 files changed, 70 insertions(+), 16 deletions(-) diff --git a/keymapper/gtk/row.py b/keymapper/gtk/row.py index ab3ea155..3d1649c4 100644 --- a/keymapper/gtk/row.py +++ b/keymapper/gtk/row.py @@ -95,12 +95,8 @@ class Row(Gtk.ListBoxRow): def get_keycode(self): """Get a tuple of type, code and value from the left column. - Or None if no codes are mapped on this row. + Or None if no code is mapped on this row. """ - keycode = self.keycode_input.get_label() - if not keycode: - return None - return self.key def get_character(self): @@ -185,6 +181,32 @@ class Row(Gtk.ListBoxRow): value = store.get_value(tree_iter, 0) return key in value.lower() + def show_click_here(self): + """Show 'click here' on the keycode input button.""" + if self.get_keycode() is not None: + return + + self.keycode_input.set_label('click here') + self.keycode_input.set_opacity(0.3) + + def show_press_key(self): + """Show 'press key' on the keycode input button.""" + if self.get_keycode() is not None: + return + + self.keycode_input.set_label('press key') + self.keycode_input.set_opacity(1) + + def keycode_input_focus(self, *args): + """Refresh useful usage information.""" + self.show_press_key() + self.window.can_modify_mapping() + + def keycode_input_unfocus(self, *args): + """Refresh useful usage information.""" + self.show_click_here() + self.keycode_input.set_active(False) + def put_together(self, character): """Create all child GTK widgets and connect their signals.""" delete_button = Gtk.EventBox() @@ -199,23 +221,27 @@ class Row(Gtk.ListBoxRow): delete_button.set_size_request(50, -1) keycode_input = Gtk.ToggleButton() + self.keycode_input = keycode_input keycode_input.set_size_request(140, -1) if self.key is not None: keycode_input.set_label(to_string(*self.key)) + else: + self.show_click_here() # make the togglebutton go back to its normal state when doing # something else in the UI keycode_input.connect( 'focus-in-event', - self.window.can_modify_mapping + self.keycode_input_focus ) keycode_input.connect( 'focus-out-event', - lambda *args: keycode_input.set_active(False) + self.keycode_input_unfocus ) character_input = Gtk.Entry() + self.character_input = character_input character_input.set_alignment(0.5) character_input.set_width_chars(4) character_input.set_has_frame(False) @@ -245,9 +271,6 @@ class Row(Gtk.ListBoxRow): self.add(box) self.show_all() - self.character_input = character_input - self.keycode_input = keycode_input - def on_delete_button_clicked(self, *args): """Destroy the row and remove it from the config.""" key = self.get_keycode() @@ -256,4 +279,5 @@ class Row(Gtk.ListBoxRow): self.character_input.set_text('') self.keycode_input.set_label('') + self.key = None self.delete_callback(self) diff --git a/keymapper/gtk/window.py b/keymapper/gtk/window.py index 08b7b67e..5a90a092 100755 --- a/keymapper/gtk/window.py +++ b/keymapper/gtk/window.py @@ -405,7 +405,11 @@ class Window: logger.debug('Applying preset "%s" for "%s"', preset, device) if custom_mapping.changed: - self.show_status(CTX_APPLY, f'Applied outdated preset "{preset}"') + self.show_status( + CTX_APPLY, + f'Applied outdated preset "{preset}"', + 'Click "Save" first for changes to take effect' + ) else: self.show_status(CTX_APPLY, f'Applied preset "{preset}"') diff --git a/readme/pylint.svg b/readme/pylint.svg index bfc215bd..bde3a939 100644 --- a/readme/pylint.svg +++ b/readme/pylint.svg @@ -17,7 +17,7 @@ pylint - 9.77 - 9.77 + 9.76 + 9.76 \ No newline at end of file diff --git a/readme/screenshot.png b/readme/screenshot.png index ece82c77fd27fc6cfcc3e592146caaa5b9d675e4..01bf70974cec8850773de1c51e34cc49ece09a75 100644 GIT binary patch delta 4949 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 delta 4226 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