From 4025b83dfd19348b747ec50af91d0cdfa0e99a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius?= Date: Sat, 14 Nov 2020 20:28:00 -0300 Subject: [PATCH] ui: add icons to rule editor buttons and implement Ctrl+S shortcut --- lib/solaar/ui/diversion_rules.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/solaar/ui/diversion_rules.py b/lib/solaar/ui/diversion_rules.py index ae881aa0..0bf89544 100644 --- a/lib/solaar/ui/diversion_rules.py +++ b/lib/solaar/ui/diversion_rules.py @@ -190,8 +190,16 @@ class DiversionDialog: sw.set_size_request(0, 600) button_box = Gtk.HBox(spacing=20) - self.save_btn = Gtk.Button(_('Save changes'), halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER, sensitive=False) - self.discard_btn = Gtk.Button(_('Discard changes'), halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER, sensitive=False) + self.save_btn = Gtk.Button.new_from_icon_name('document-save', Gtk.IconSize.BUTTON) + self.save_btn.set_label('Save changes') + self.save_btn.set_always_show_image(True) + self.save_btn.set_sensitive(False) + self.save_btn.set_valign(Gtk.Align.CENTER) + self.discard_btn = Gtk.Button.new_from_icon_name('document-revert', Gtk.IconSize.BUTTON) + self.discard_btn.set_label('Discard changes') + self.discard_btn.set_always_show_image(True) + self.discard_btn.set_sensitive(False) + self.discard_btn.set_valign(Gtk.Align.CENTER) self.save_btn.connect('clicked', lambda *_args: self._save_yaml_file()) self.discard_btn.connect('clicked', lambda *_args: self._reload_yaml_file()) button_box.pack_start(self.save_btn, False, False, 0) @@ -295,6 +303,7 @@ class DiversionDialog: Ctrl + V paste below (or here if empty) Ctrl + Shift + V paste above * flatten + Ctrl + S save changes ''' state = e.state & (Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK) m, it = v.get_selection().get_selected() @@ -332,7 +341,9 @@ class DiversionDialog: menu.show_all() rect = self.view.get_cell_area(m.get_path(it), self.view.get_column(1)) menu.popup_at_rect(self.window.get_window(), rect, Gdk.Gravity.WEST, Gdk.Gravity.CENTER, e) - elif state & Gdk.ModifierType.CONTROL_MASK == 0: + elif self.dirty and e.keyval in [Gdk.KEY_s, Gdk.KEY_S]: + self._save_yaml_file() + else: if can_wrap: if e.keyval == Gdk.KEY_exclam: self._menu_do_negate(None, m, it)