ButtonDialog: move handedness to its separate stack page

This commit is contained in:
Jente Hidskes
2017-08-18 18:11:37 +02:00
parent 6dc3a54f71
commit 2965979484
2 changed files with 157 additions and 206 deletions

View File

@@ -40,242 +40,96 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="min_content_height">250</property>
<property name="max_content_width">0</property>
<property name="max_content_height">250</property>
<property name="propagate_natural_width">True</property>
<property name="propagate_natural_height">True</property>
<child>
<object class="GtkScrolledWindow" id="button_mappings">
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="min_content_height">250</property>
<property name="max_content_width">0</property>
<property name="max_content_height">250</property>
<property name="propagate_natural_width">True</property>
<property name="propagate_natural_height">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkViewport">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<object class="GtkSearchBar" id="search_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="tooltip_text" translatable="yes">Search for a button mapping</property>
<property name="hexpand">True</property>
<child>
<object class="GtkSearchBar" id="search_bar">
<object class="GtkSearchEntry" id="search_entry">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Search for a button mapping</property>
<property name="hexpand">True</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">30</property>
</object>
</child>
<property name="can_focus">True</property>
<property name="width_chars">30</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkListBox" id="listbox">
<property name="width_request">250</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<signal name="row-activated" handler="_on_row_activated" swapped="no"/>
<child>
<object class="GtkListBoxRow" id="row_keystroke">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Capture a macro for this button</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">6</property>
<property name="margin_right">6</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<child>
<object class="GtkLabel" id="label_keystroke">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">The currently set macro</property>
<property name="margin_left">10</property>
<property name="label" translatable="yes">None</property>
<property name="track_visited_links">False</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Send keystroke</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swap_primaries">
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="max_content_height">300</property>
<property name="propagate_natural_width">True</property>
<property name="propagate_natural_height">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkListBox">
<object class="GtkListBox" id="listbox">
<property name="width_request">250</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<signal name="row-activated" handler="_on_row_activated" swapped="no"/>
<child>
<object class="GtkListBoxRow">
<property name="width_request">100</property>
<object class="GtkListBoxRow" id="row_keystroke">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Capture a macro for this button</property>
<child>
<object class="GtkGrid">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_start">12</property>
<property name="margin_end">6</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="column_spacing">16</property>
<property name="margin_left">6</property>
<property name="margin_right">6</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<child>
<object class="GtkLabel">
<object class="GtkLabel" id="label_keystroke">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Swap primary mouse buttons</property>
<property name="track_visited_links">False</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Swaps the physical left- and right mouse buttons.</property>
<property name="single_line_mode">True</property>
<property name="max_width_chars">20</property>
<property name="tooltip_text" translatable="yes">The currently set macro</property>
<property name="margin_left">10</property>
<property name="label" translatable="yes">None</property>
<property name="track_visited_links">False</property>
<attributes>
<attribute name="scale" value="0.90000000000000002"/>
<attribute name="weight" value="bold"/>
</attributes>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButtonBox">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<property name="layout_style">expand</property>
<child>
<object class="GtkRadioButton" id="radio_left_handed">
<property name="label" translatable="yes">Left Handed</property>
<property name="height_request">35</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="hexpand">True</property>
<property name="draw_indicator">False</property>
<property name="tooltip_text" translatable="yes">The left mouse button generates a left mouse click</property>
<signal name="toggled" handler="_on_primary_mode_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radio_right_handed">
<property name="label" translatable="yes">Right Handed</property>
<property name="height_request">35</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="hexpand">True</property>
<property name="draw_indicator">False</property>
<property name="group">radio_left_handed</property>
<property name="tooltip_text" translatable="yes">The left mouse button generates a right mouse click</property>
<signal name="toggled" handler="_on_primary_mode_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
<property name="halign">start</property>
<property name="label" translatable="yes">Send keystroke</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="height">2</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
@@ -283,15 +137,15 @@
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
@@ -378,11 +232,111 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Set the device's handedness.</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="width_chars">15</property>
<property name="max_width_chars">20</property>
<property name="track_visited_links">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">This allows you to swap the order of the primary mouse buttons. In left-handedness mode, the physical left mouse button generates a right mouse click and vice versa.</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="max_width_chars">60</property>
<property name="track_visited_links">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButtonBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<property name="layout_style">expand</property>
<child>
<object class="GtkRadioButton" id="radio_left_handed">
<property name="label" translatable="yes">Left Handed</property>
<property name="height_request">35</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">The left mouse button generates a left mouse click</property>
<property name="hexpand">True</property>
<property name="active">True</property>
<property name="draw_indicator">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radio_right_handed">
<property name="label" translatable="yes">Right Handed</property>
<property name="height_request">35</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">The left mouse button generates a right mouse click</property>
<property name="hexpand">True</property>
<property name="draw_indicator">False</property>
<property name="group">radio_left_handed</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">handedness</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>

View File

@@ -72,12 +72,10 @@ class ButtonDialog(Gtk.Dialog):
RIGHT_HANDED_MODE = -1001
stack = GtkTemplate.Child()
button_mappings = GtkTemplate.Child()
listbox = GtkTemplate.Child()
label_keystroke = GtkTemplate.Child()
label_preview = GtkTemplate.Child()
row_keystroke = GtkTemplate.Child()
swap_primaries = GtkTemplate.Child()
radio_right_handed = GtkTemplate.Child()
radio_left_handed = GtkTemplate.Child()
empty_search_placeholder = GtkTemplate.Child()
@@ -116,8 +114,7 @@ class ButtonDialog(Gtk.Dialog):
def _init_primary_buttons_ui(self):
# Shows the listbox to swap the primary buttons.
self.swap_primaries.set_visible(True)
self.button_mappings.set_visible(False)
self.stack.set_visible_child_name("handedness")
# Left mouse button (index 0) is mapped to left mouse button, where
# mappings are 1-indexed and thus left mouse click has value 1.
# Or, right mouse button (index 1) is mapped to right mouse button,
@@ -257,7 +254,7 @@ class ButtonDialog(Gtk.Dialog):
# Overrides Gtk.Window's standard key press event callback, so we can
# capture the pressed buttons in capture mode. If we're not in capture
# mode, we trigger the search bar on any key press.
if self.stack.get_visible_child_name() == "overview":
if self.stack.get_visible_child_name() != "capture":
if self.search_bar.handle_event(event) == Gdk.EVENT_STOP:
return Gdk.EVENT_STOP
return Gtk.Window.do_key_press_event(self, event)
@@ -267,7 +264,7 @@ class ButtonDialog(Gtk.Dialog):
# Overrides Gtk.Window's standard key release event callback, so we can
# capture the released buttons in capture mode. If we're not in capture
# mode, we pass the event on to other widgets in the dialog.
if self.stack.get_visible_child_name() == "overview":
if self.stack.get_visible_child_name() != "capture":
return Gtk.Window.do_key_release_event(self, event)
return self._do_key_event(event)