From d6af999a58d1039141c0b13adbf53e98665e9e34 Mon Sep 17 00:00:00 2001 From: Matthias Hagmann <16444067+MattHag@users.noreply.github.com> Date: Fri, 8 Mar 2024 01:54:24 +0100 Subject: [PATCH] ui: Add insert rule below button This change adds an explicit button to add a new rule. Previously a new rule could only be created via context menu, which is hard is not beginner-friendly and not obvious. This change improves that. Related #2349 --- lib/solaar/ui/diversion_rules.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/solaar/ui/diversion_rules.py b/lib/solaar/ui/diversion_rules.py index 290912d86a..1aa1cf4f41 100644 --- a/lib/solaar/ui/diversion_rules.py +++ b/lib/solaar/ui/diversion_rules.py @@ -200,14 +200,23 @@ def _create_rules_panel(self): return vbox, view def _create_button_box(self): - button_box = Gtk.HBox(spacing=20) - button_box.set_margin_start(10) - button_box.set_margin_end(10) + hbox = Gtk.HBox(spacing=20) + hbox.set_margin_start(10) + hbox.set_margin_end(10) + hbox.set_valign(Gtk.Align.CENTER) + hbox.set_size_request(0, 50) + + self.insert_rule_btn = Gtk.Button.new_from_icon_name("document-revert", Gtk.IconSize.BUTTON) + self.insert_rule_btn.set_label(_("Insert new rule")) + self.insert_rule_btn.set_valign(Gtk.Align.CENTER) + self.insert_rule_btn.connect("clicked", lambda *_args: ()) # TODO insert rule below + 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) @@ -215,12 +224,10 @@ def _create_button_box(self): 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.discard_btn, False, False, 0) - button_box.pack_start(self.save_btn, False, False, 0) - button_box.set_halign(Gtk.Align.END) - button_box.set_valign(Gtk.Align.CENTER) - button_box.set_size_request(0, 50) - return button_box + hbox.pack_start(self.insert_rule_btn, False, False, 0) + hbox.pack_end(self.discard_btn, False, False, 0) + hbox.pack_end(self.save_btn, False, False, 0) + return hbox def _create_model(self): model = Gtk.TreeStore(RuleComponentWrapper)