Make it so disabling the extension disables all the settings/controls

This commit is contained in:
wheaney 2024-05-11 23:16:04 -07:00
parent f980832087
commit 61f73396dc
3 changed files with 22 additions and 3 deletions

View File

@ -11,6 +11,7 @@ class ConnectedDevice(Gtk.Box):
effect_enable_switch = Gtk.Template.Child()
display_distance_scale = Gtk.Template.Child()
display_distance_adjustment = Gtk.Template.Child()
follow_mode_switch = Gtk.Template.Child()
device_label = Gtk.Template.Child()
set_toggle_display_distance_start_button = Gtk.Template.Child()
@ -25,10 +26,21 @@ class ConnectedDevice(Gtk.Box):
def __init__(self):
super(Gtk.Box, self).__init__()
self.init_template()
self.all_enabled_state_inputs = [
self.display_distance_scale,
self.follow_mode_switch,
self.set_toggle_display_distance_start_button,
self.set_toggle_display_distance_end_button,
self.reassign_recenter_display_shortcut_button,
self.reassign_toggle_display_distance_shortcut_button,
self.reassign_toggle_follow_shortcut_button
]
self.settings = SettingsManager.get_instance().settings
self.ipc = XRDriverIPC.get_instance()
self.settings.bind('display-distance', self.display_distance_scale, 'value', Gio.SettingsBindFlags.DEFAULT)
self.settings.bind('display-distance', self.display_distance_adjustment, 'value', Gio.SettingsBindFlags.DEFAULT)
bind_shortcut_settings(self.get_parent(), [
[self.reassign_recenter_display_shortcut_button, self.recenter_display_shortcut_label],
@ -47,9 +59,15 @@ class ConnectedDevice(Gtk.Box):
self.follow_mode_switch.set_active(self.state_manager.follow_mode)
self.follow_mode_switch.connect('notify::active', self._request_follow_mode)
self.effect_enable_switch.connect('notify::active', self._refresh_inputs_for_enabled_state)
self.effect_enable_switch.set_active(ExtensionsManager.get_instance().is_enabled())
self._refresh_inputs_for_enabled_state(self.effect_enable_switch, None)
ExtensionsManager.get_instance().bind_property('breezy-enabled', self.effect_enable_switch, 'active', GObject.BindingFlags.BIDIRECTIONAL)
def _refresh_inputs_for_enabled_state(self, switch, param):
for widget in self.all_enabled_state_inputs:
widget.set_sensitive(switch.get_active())
def _request_follow_mode(self, switch, param):
if (self.state_manager.follow_mode == switch.get_active()):
return

View File

@ -32,6 +32,7 @@ class ExtensionsManager(GObject.GObject):
self.set_property('breezy-enabled', self.remote_extension_state)
def is_installed(self):
# TODO check specific version
return self._is_installed(BREEZY_DESKTOP_UUID)
def enable(self):

View File

@ -41,7 +41,7 @@
<object class="AdwActionRow">
<property name="title" translatable="true">Display distance</property>
<child>
<object class="GtkScale">
<object class="GtkScale" id="display_distance_scale">
<property name="valign">3</property>
<property name="draw-value">true</property>
<property name="value-pos">0</property>
@ -49,7 +49,7 @@
<property name="width-request">350</property>
<property name="has-origin">false</property>
<property name="adjustment">
<object class="GtkAdjustment" id="display_distance_scale">
<object class="GtkAdjustment" id="display_distance_adjustment">
<property name="lower">0.2</property>
<property name="upper">2.5</property>
<property name="step-increment">0.01</property>