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:
Yaroslav Chvanov
2023-03-04 17:43:24 +03:00
parent 5cead82b12
commit cdd1be7095
4 changed files with 162 additions and 191 deletions

View File

@@ -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 profiles 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>

View File

@@ -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 profiles 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>

View File

@@ -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

View File

@@ -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: