mirror of
https://github.com/libratbag/piper.git
synced 2026-05-18 20:06:19 -04:00
Move report rate changing from ResolutionsPage to AdvancedPage
Not a setting people change often and it's also just weird to have it together with resolutions.
This commit is contained in:
@@ -19,6 +19,128 @@
|
||||
<property name="halign">center</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">20</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="spacing">20</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes" comments="Translators: the rate at which the device reports movement.">Report rate</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="track-visited-links">False</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="rate_button_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="tooltip-text" translatable="yes">Change the profile’s report rate</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="layout-style">expand</property>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_125">
|
||||
<property name="label">125</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_250</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="rate_250">
|
||||
<property name="label">250</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_500">
|
||||
<property name="label">500</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_1000">
|
||||
<property name="label">1000</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</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">Hz</property>
|
||||
<property name="track-visited-links">False</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
@@ -74,7 +196,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -116,7 +238,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@@ -12,152 +12,6 @@
|
||||
<property name="can-focus">False</property>
|
||||
<property name="border-width">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">none</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-end">12</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="spacing">20</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes" comments="Translators: the rate at which the device reports movement.">Report rate</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="track-visited-links">False</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="rate_button_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="tooltip-text" translatable="yes">Change the profile’s report rate</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="layout-style">expand</property>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_125">
|
||||
<property name="label">125</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_250</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="rate_250">
|
||||
<property name="label">250</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_500">
|
||||
<property name="label">500</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rate_1000">
|
||||
<property name="label">1000</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">rate_125</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</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">Hz</property>
|
||||
<property name="track-visited-links">False</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes" comments="Translators: the sensitivity of the device's sensor.">Sensitivity</property>
|
||||
<property name="track-visited-links">False</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
|
||||
@@ -19,6 +19,11 @@ class AdvancedPage(Gtk.Box):
|
||||
|
||||
angle_snapping: Gtk.Switch = Gtk.Template.Child() # type: ignore
|
||||
debounce: Gtk.ComboBox = Gtk.Template.Child() # type: ignore
|
||||
rate_1000: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_125: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_250: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_500: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_button_box: Gtk.ButtonBox = Gtk.Template.Child() # type: ignore
|
||||
|
||||
def __init__(
|
||||
self, device: RatbagdDevice, profile: RatbagdProfile, *args, **kwargs
|
||||
@@ -35,6 +40,33 @@ class AdvancedPage(Gtk.Box):
|
||||
"state-set", self._on_snapping_state_set
|
||||
)
|
||||
|
||||
self.rate_125.set_active(profile.report_rate == 125)
|
||||
self.rate_250.set_active(profile.report_rate == 250)
|
||||
self.rate_500.set_active(profile.report_rate == 500)
|
||||
self.rate_1000.set_active(profile.report_rate == 1000)
|
||||
|
||||
are_report_rates_supported = (
|
||||
profile.report_rate != 0 and len(profile.report_rates) != 0
|
||||
)
|
||||
self.rate_button_box.set_sensitive(are_report_rates_supported)
|
||||
self.rate_125.set_sensitive(125 in profile.report_rates)
|
||||
self.rate_250.set_sensitive(250 in profile.report_rates)
|
||||
self.rate_500.set_sensitive(500 in profile.report_rates)
|
||||
self.rate_1000.set_sensitive(1000 in profile.report_rates)
|
||||
|
||||
self._handler_125 = self.rate_125.connect(
|
||||
"toggled", self._on_report_rate_toggled, 125
|
||||
)
|
||||
self._handler_250 = self.rate_250.connect(
|
||||
"toggled", self._on_report_rate_toggled, 250
|
||||
)
|
||||
self._handler_500 = self.rate_500.connect(
|
||||
"toggled", self._on_report_rate_toggled, 500
|
||||
)
|
||||
self._handler_1000 = self.rate_1000.connect(
|
||||
"toggled", self._on_report_rate_toggled, 1000
|
||||
)
|
||||
|
||||
profile = self._profile
|
||||
|
||||
self._mousemap = MouseMap("#Buttons", device, spacing=20, border_width=20)
|
||||
@@ -71,3 +103,9 @@ class AdvancedPage(Gtk.Box):
|
||||
def _on_snapping_state_set(self, button: Gtk.Switch, state: bool) -> None:
|
||||
profile = self._profile
|
||||
profile.angle_snapping = 1 if state else 0
|
||||
|
||||
def _on_report_rate_toggled(self, button: Gtk.RadioButton, rate: int) -> None:
|
||||
if not button.get_active():
|
||||
return
|
||||
profile = self._profile
|
||||
profile.report_rate = rate
|
||||
|
||||
@@ -30,11 +30,6 @@ class ResolutionsPage(Gtk.Box):
|
||||
|
||||
add_resolution_row: Gtk.ListBoxRow = Gtk.Template.Child() # type: ignore
|
||||
listbox: Gtk.ListBox = Gtk.Template.Child() # type: ignore
|
||||
rate_1000: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_125: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_250: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_500: Gtk.RadioButton = Gtk.Template.Child() # type: ignore
|
||||
rate_button_box: Gtk.ButtonBox = Gtk.Template.Child() # type: ignore
|
||||
|
||||
def __init__(
|
||||
self, ratbagd_device: RatbagdDevice, profile: RatbagdProfile, *args, **kwargs
|
||||
@@ -50,19 +45,6 @@ class ResolutionsPage(Gtk.Box):
|
||||
self._last_activated_row = None
|
||||
self._profile = profile
|
||||
|
||||
self._handler_125 = self.rate_125.connect(
|
||||
"toggled", self._on_report_rate_toggled, 125
|
||||
)
|
||||
self._handler_250 = self.rate_250.connect(
|
||||
"toggled", self._on_report_rate_toggled, 250
|
||||
)
|
||||
self._handler_500 = self.rate_500.connect(
|
||||
"toggled", self._on_report_rate_toggled, 500
|
||||
)
|
||||
self._handler_1000 = self.rate_1000.connect(
|
||||
"toggled", self._on_report_rate_toggled, 1000
|
||||
)
|
||||
|
||||
mousemap = MouseMap("#Buttons", self._device, spacing=20, border_width=20)
|
||||
self.pack_start(mousemap, True, True, 0)
|
||||
# Place the MouseMap on the left
|
||||
@@ -78,36 +60,11 @@ class ResolutionsPage(Gtk.Box):
|
||||
mousemap.add(label, f"#button{button.index}")
|
||||
mousemap.show_all()
|
||||
|
||||
are_report_rates_supported = (
|
||||
profile.report_rate != 0 and len(profile.report_rates) != 0
|
||||
)
|
||||
self.rate_button_box.set_sensitive(are_report_rates_supported)
|
||||
self.rate_125.set_sensitive(125 in profile.report_rates)
|
||||
self.rate_250.set_sensitive(250 in profile.report_rates)
|
||||
self.rate_500.set_sensitive(500 in profile.report_rates)
|
||||
self.rate_1000.set_sensitive(1000 in profile.report_rates)
|
||||
|
||||
self.listbox.foreach(Gtk.Widget.destroy)
|
||||
for resolution in profile.resolutions:
|
||||
row = ResolutionRow(resolution)
|
||||
self.listbox.insert(row, resolution.index)
|
||||
|
||||
# Updates report rate to reflect the new active profile's report rate.
|
||||
with self.rate_125.handler_block(self._handler_125):
|
||||
self.rate_125.set_active(profile.report_rate == 125)
|
||||
with self.rate_250.handler_block(self._handler_250):
|
||||
self.rate_250.set_active(profile.report_rate == 250)
|
||||
with self.rate_500.handler_block(self._handler_500):
|
||||
self.rate_500.set_active(profile.report_rate == 500)
|
||||
with self.rate_1000.handler_block(self._handler_1000):
|
||||
self.rate_1000.set_active(profile.report_rate == 1000)
|
||||
|
||||
def _on_report_rate_toggled(self, button: Gtk.RadioButton, rate: int) -> None:
|
||||
if not button.get_active():
|
||||
return
|
||||
profile = self._profile
|
||||
profile.report_rate = rate
|
||||
|
||||
@Gtk.Template.Callback("_on_row_activated")
|
||||
def _on_row_activated(self, listbox: Gtk.ListBox, row: Gtk.ListBoxRow) -> None:
|
||||
if row is self._last_activated_row:
|
||||
|
||||
Reference in New Issue
Block a user