settings_template: Prepare removal of desktop_notifications dependency

Related #2273
This commit is contained in:
MattHag 2024-09-18 23:54:25 +02:00 committed by Peter F. Patel-Schneider
parent d5af19be8a
commit 2aa462532a
1 changed files with 18 additions and 7 deletions

View File

@ -20,6 +20,7 @@ import struct
import traceback import traceback
from time import time from time import time
from typing import Callable
from solaar.i18n import _ from solaar.i18n import _
@ -728,6 +729,15 @@ class ReprogrammableKeys(settings.Settings):
class DpiSlidingXY(settings.RawXYProcessing): class DpiSlidingXY(settings.RawXYProcessing):
def __init__(
self,
*args,
show_notification: Callable[[str, str], bool],
**kwargs,
):
super().__init__(*args, **kwargs)
self._show_notification = show_notification
def activate_action(self): def activate_action(self):
self.dpiSetting = next(filter(lambda s: s.name == "dpi" or s.name == "dpi_extended", self.device.settings), None) self.dpiSetting = next(filter(lambda s: s.name == "dpi" or s.name == "dpi_extended", self.device.settings), None)
self.dpiChoices = list(self.dpiSetting.choices) self.dpiChoices = list(self.dpiSetting.choices)
@ -745,12 +755,11 @@ class DpiSlidingXY(settings.RawXYProcessing):
self.device.setting_callback(self.device, type(self.dpiSetting), [newDpi]) self.device.setting_callback(self.device, type(self.dpiSetting), [newDpi])
def displayNewDpi(self, newDpiIdx): def displayNewDpi(self, newDpiIdx):
if desktop_notifications.available: selected_dpi = self.dpiChoices[newDpiIdx]
selected_dpi = self.dpiChoices[newDpiIdx] min_dpi = self.dpiChoices[0]
min_dpi = self.dpiChoices[0] max_dpi = self.dpiChoices[-1]
max_dpi = self.dpiChoices[-1] reason = f"DPI {selected_dpi} [min {min_dpi}, max {max_dpi}]"
reason = f"DPI {selected_dpi} [min {min_dpi}, max {max_dpi}]" self._show_notification(self.device, reason)
desktop_notifications.show(self.device, reason)
def press_action(self, key): # start tracking def press_action(self, key): # start tracking
self.starting = True self.starting = True
@ -912,7 +921,9 @@ class DivertKeys(settings.Settings):
if _F.ADJUSTABLE_DPI in device.features: if _F.ADJUSTABLE_DPI in device.features:
choices[k.key] = setting_class.choices_universe choices[k.key] = setting_class.choices_universe
if sliding is None: if sliding is None:
sliding = DpiSlidingXY(device, name="DpiSlding") sliding = DpiSlidingXY(
device, name="DpiSliding", show_notification=desktop_notifications.show
)
else: else:
choices[k.key] = setting_class.choices_divert choices[k.key] = setting_class.choices_divert
if not choices: if not choices: