Skip to content

Commit 06e34dd

Browse files
details-preferences: Split toggle feature callback
This is important to have because complex toggles require slightly different parameters. Fixes #3720
1 parent e0fd966 commit 06e34dd

File tree

1 file changed

+47
-38
lines changed

1 file changed

+47
-38
lines changed

Diff for: bottles/frontend/details_preferences_page.py

+47-38
Original file line numberDiff line numberDiff line change
@@ -226,25 +226,29 @@ def __init__(self, details, config, **kwargs):
226226
)
227227
self.btn_cwd.connect("clicked", self.choose_cwd)
228228
self.btn_cwd_reset.connect("clicked", self.reset_cwd, True)
229-
self.switch_mangohud.connect("state-set", self.__toggle_feature, "mangohud")
230-
self.switch_obsvkc.connect("state-set", self.__toggle_feature, "obsvkc")
231-
self.switch_vkbasalt.connect("state-set", self.__toggle_feature, "vkbasalt")
232-
self.switch_fsr.connect("state-set", self.__toggle_feature, "fsr")
229+
self.switch_mangohud.connect("state-set", self.__toggle_feature_cb, "mangohud")
230+
self.switch_obsvkc.connect("state-set", self.__toggle_feature_cb, "obsvkc")
231+
self.switch_vkbasalt.connect("state-set", self.__toggle_feature_cb, "vkbasalt")
232+
self.switch_fsr.connect("state-set", self.__toggle_feature_cb, "fsr")
233233
self.switch_nvapi.connect("state-set", self.__toggle_nvapi)
234-
self.switch_gamemode.connect("state-set", self.__toggle_feature, "gamemode")
235-
self.switch_gamescope.connect("state-set", self.__toggle_feature, "gamescope")
236-
self.switch_sandbox.connect("state-set", self.__toggle_feature, "sandbox")
237-
self.switch_discrete.connect("state-set", self.__toggle_feature, "discrete_gpu")
234+
self.switch_gamemode.connect("state-set", self.__toggle_feature_cb, "gamemode")
235+
self.switch_gamescope.connect(
236+
"state-set", self.__toggle_feature_cb, "gamescope"
237+
)
238+
self.switch_sandbox.connect("state-set", self.__toggle_feature_cb, "sandbox")
239+
self.switch_discrete.connect(
240+
"state-set", self.__toggle_feature_cb, "discrete_gpu"
241+
)
238242
self.switch_versioning_compression.connect(
239243
"state-set", self.__toggle_versioning_compression
240244
)
241245
self.switch_auto_versioning.connect(
242-
"state-set", self.__toggle_feature, "versioning_automatic"
246+
"state-set", self.__toggle_feature_cb, "versioning_automatic"
243247
)
244248
self.switch_versioning_patterns.connect(
245-
"state-set", self.__toggle_feature, "versioning_exclusion_patterns"
249+
"state-set", self.__toggle_feature_cb, "versioning_exclusion_patterns"
246250
)
247-
self.switch_vmtouch.connect("state-set", self.__toggle_feature, "vmtouch")
251+
self.switch_vmtouch.connect("state-set", self.__toggle_feature_cb, "vmtouch")
248252
self.combo_runner.connect("notify::selected", self.__set_runner)
249253
self.combo_dxvk.connect("notify::selected", self.__set_dxvk)
250254
self.combo_vkd3d.connect("notify::selected", self.__set_vkd3d)
@@ -265,7 +269,7 @@ def __init__(self, details, config, **kwargs):
265269
if RuntimeManager.get_runtimes("steam"):
266270
self.row_steam_runtime.set_visible(True)
267271
self.switch_steam_runtime.connect(
268-
"state-set", self.__toggle_feature, "use_steam_runtime"
272+
"state-set", self.__toggle_feature_cb, "use_steam_runtime"
269273
)
270274

271275
"""Toggle some utilities according to its availability"""
@@ -406,22 +410,22 @@ def set_config(self, config: BottleConfig):
406410
parameters = self.config.Parameters
407411

408412
# temporary lock functions connected to the widgets
409-
self.switch_mangohud.handler_block_by_func(self.__toggle_feature)
413+
self.switch_mangohud.handler_block_by_func(self.__toggle_feature_cb)
410414
self.switch_nvapi.handler_block_by_func(self.__toggle_nvapi)
411-
self.switch_vkbasalt.handler_block_by_func(self.__toggle_feature)
412-
self.switch_fsr.handler_block_by_func(self.__toggle_feature)
413-
self.switch_obsvkc.handler_block_by_func(self.__toggle_feature)
414-
self.switch_gamemode.handler_block_by_func(self.__toggle_feature)
415-
self.switch_gamescope.handler_block_by_func(self.__toggle_feature)
416-
self.switch_sandbox.handler_block_by_func(self.__toggle_feature)
417-
self.switch_discrete.handler_block_by_func(self.__toggle_feature)
415+
self.switch_vkbasalt.handler_block_by_func(self.__toggle_feature_cb)
416+
self.switch_fsr.handler_block_by_func(self.__toggle_feature_cb)
417+
self.switch_obsvkc.handler_block_by_func(self.__toggle_feature_cb)
418+
self.switch_gamemode.handler_block_by_func(self.__toggle_feature_cb)
419+
self.switch_gamescope.handler_block_by_func(self.__toggle_feature_cb)
420+
self.switch_sandbox.handler_block_by_func(self.__toggle_feature_cb)
421+
self.switch_discrete.handler_block_by_func(self.__toggle_feature_cb)
418422
self.switch_versioning_compression.handler_block_by_func(
419423
self.__toggle_versioning_compression
420424
)
421-
self.switch_auto_versioning.handler_block_by_func(self.__toggle_feature)
422-
self.switch_versioning_patterns.handler_block_by_func(self.__toggle_feature)
425+
self.switch_auto_versioning.handler_block_by_func(self.__toggle_feature_cb)
426+
self.switch_versioning_patterns.handler_block_by_func(self.__toggle_feature_cb)
423427
with contextlib.suppress(TypeError):
424-
self.switch_steam_runtime.handler_block_by_func(self.__toggle_feature)
428+
self.switch_steam_runtime.handler_block_by_func(self.__toggle_feature_cb)
425429
self.combo_runner.handler_block_by_func(self.__set_runner)
426430
self.combo_dxvk.handler_block_by_func(self.__set_dxvk)
427431
self.combo_vkd3d.handler_block_by_func(self.__set_vkd3d)
@@ -540,22 +544,24 @@ def set_config(self, config: BottleConfig):
540544
self.combo_sync.set_selected(sync_types.index(sync))
541545

542546
# unlock functions connected to the widgets
543-
self.switch_mangohud.handler_unblock_by_func(self.__toggle_feature)
547+
self.switch_mangohud.handler_unblock_by_func(self.__toggle_feature_cb)
544548
self.switch_nvapi.handler_unblock_by_func(self.__toggle_nvapi)
545-
self.switch_vkbasalt.handler_unblock_by_func(self.__toggle_feature)
546-
self.switch_fsr.handler_unblock_by_func(self.__toggle_feature)
547-
self.switch_obsvkc.handler_unblock_by_func(self.__toggle_feature)
548-
self.switch_gamemode.handler_unblock_by_func(self.__toggle_feature)
549-
self.switch_gamescope.handler_unblock_by_func(self.__toggle_feature)
550-
self.switch_sandbox.handler_unblock_by_func(self.__toggle_feature)
551-
self.switch_discrete.handler_unblock_by_func(self.__toggle_feature)
549+
self.switch_vkbasalt.handler_unblock_by_func(self.__toggle_feature_cb)
550+
self.switch_fsr.handler_unblock_by_func(self.__toggle_feature_cb)
551+
self.switch_obsvkc.handler_unblock_by_func(self.__toggle_feature_cb)
552+
self.switch_gamemode.handler_unblock_by_func(self.__toggle_feature_cb)
553+
self.switch_gamescope.handler_unblock_by_func(self.__toggle_feature_cb)
554+
self.switch_sandbox.handler_unblock_by_func(self.__toggle_feature_cb)
555+
self.switch_discrete.handler_unblock_by_func(self.__toggle_feature_cb)
552556
self.switch_versioning_compression.handler_unblock_by_func(
553557
self.__toggle_versioning_compression
554558
)
555-
self.switch_auto_versioning.handler_unblock_by_func(self.__toggle_feature)
556-
self.switch_versioning_patterns.handler_unblock_by_func(self.__toggle_feature)
559+
self.switch_auto_versioning.handler_unblock_by_func(self.__toggle_feature_cb)
560+
self.switch_versioning_patterns.handler_unblock_by_func(
561+
self.__toggle_feature_cb
562+
)
557563
with contextlib.suppress(TypeError):
558-
self.switch_steam_runtime.handler_unblock_by_func(self.__toggle_feature)
564+
self.switch_steam_runtime.handler_unblock_by_func(self.__toggle_feature_cb)
559565
self.combo_runner.handler_unblock_by_func(self.__set_runner)
560566
self.combo_dxvk.handler_unblock_by_func(self.__set_dxvk)
561567
self.combo_vkd3d.handler_unblock_by_func(self.__set_vkd3d)
@@ -582,12 +588,15 @@ def __show_feature_dialog(self, _widget: Gtk.Widget, dialog: Adw.Window) -> None
582588
window = dialog(window=self.window, config=self.config)
583589
window.present()
584590

585-
def __toggle_feature(self, _widget: Gtk.Widget, state: bool, key: str) -> None:
591+
def __toggle_feature(self, state: bool, key: str) -> None:
586592
"""Toggle a specific feature."""
587593
self.config = self.manager.update_config(
588594
config=self.config, key=key, value=state, scope="Parameters"
589595
).data["config"]
590596

597+
def __toggle_feature_cb(self, _widget: Gtk.Widget, state: bool, key: str) -> None:
598+
self.__toggle_feature(state=state, key=key)
599+
591600
def __set_sync_type(self, *_args):
592601
"""
593602
Set the sync type (wine, esync, fsync)
@@ -622,7 +631,7 @@ def __toggle_nvapi(self, widget=False, state=False):
622631
remove=not state,
623632
)
624633

625-
self.__toggle_feature(widget=None, state=state, key="dxvk_nvapi")
634+
self.__toggle_feature(state=state, key="dxvk_nvapi")
626635

627636
def __toggle_versioning_compression(self, widget, state):
628637
"""Toggle the versioning compression for current bottle"""
@@ -686,11 +695,11 @@ def update(result: Result[dict], error=False):
686695
self.config = result.data["config"]
687696
if self.config.Parameters.use_steam_runtime:
688697
self.switch_steam_runtime.handler_block_by_func(
689-
self.__toggle_feature
698+
self.__toggle_feature_cb
690699
)
691700
self.switch_steam_runtime.set_active(True)
692701
self.switch_steam_runtime.handler_unblock_by_func(
693-
self.__toggle_feature
702+
self.__toggle_feature_cb
694703
)
695704

696705
set_widgets_status(True)

0 commit comments

Comments
 (0)