diff options
| author | s-ol <s+removethis@s-ol.nu> | 2022-11-20 13:49:07 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2022-11-20 13:49:07 +0000 |
| commit | d4aedccd16c988cea841d64a6f8125747effcfcc (patch) | |
| tree | e448e7bbeca76edbf9d15408f6948af2e6b1e4bf | |
| parent | group settings into categories (diff) | |
| download | firmware-d4aedccd16c988cea841d64a6f8125747effcfcc.tar.gz firmware-d4aedccd16c988cea841d64a6f8125747effcfcc.zip | |
handle profile setting separately
| -rw-r--r-- | hex33board/__init__.py | 8 | ||||
| -rw-r--r-- | hex33board/menu.py | 39 |
2 files changed, 18 insertions, 29 deletions
diff --git a/hex33board/__init__.py b/hex33board/__init__.py index 9cebcdf..ad290c0 100644 --- a/hex33board/__init__.py +++ b/hex33board/__init__.py @@ -82,9 +82,6 @@ class Keyboard: self.settings = Settings( { - "active_profile": SliderSetting( - "CURRENT PROFILE", 24, fmt="Profile {}", thresh=_eq - ), # MIDI "midi_ch_usb": Slider16Setting( "USB MIDI CHANNEL", fmt="CH{}", thresh=_eq @@ -175,7 +172,6 @@ class Keyboard: self.settings.on('flip', self.on_flip) self.settings.on('i2c_mode', self.on_i2c) self.settings.on('i2c_addr', self.on_i2c) - self.settings.on('active_profile', self.on_profile) self.sticky_modes = {} self.modes = { @@ -254,10 +250,6 @@ class Keyboard: self.modes["base"].update_scale() self.modes["base_shift"].update_display() - def on_profile(self, profile, last): - self.settings.store(last) - self.settings.load(profile) - @property def mode(self) -> Mode: return self._mode diff --git a/hex33board/menu.py b/hex33board/menu.py index 367b056..a078330 100644 --- a/hex33board/menu.py +++ b/hex33board/menu.py @@ -199,6 +199,10 @@ class Settings: self.readonly = readonly self.change_handlers = {} + self.profile_setting = SliderSetting( + "CURRENT PROFILE", 24, fmt="Profile {}", thresh=_eq + ) + def on(self, id: str, fn): if id in self.change_handlers: raise ValueError("already have a handler for {}".format(id)) @@ -223,23 +227,21 @@ class Settings: for id in order: if id in data: self.settings[id].value = data[id] - elif id != 'active_profile': + else: self.settings[id].restore_default() - if id != 'active_profile': - self.dispatch(id) + self.dispatch(id) except OSError: print(f"couldn't load profile{i}, falling back to defaults") for id in order: - if id != 'active_profile': - self.settings[id].restore_default() - self.dispatch(id) + self.settings[id].restore_default() + self.dispatch(id) - self.settings['active_profile'].value = i + self.profile_setting.value = i def store(self, i=None): if i == None: - i = self.settings['active_profile'].value + i = self.profile_setting.value if self.readonly: print(f"readonly, skipped storing profile{i}") @@ -247,8 +249,7 @@ class Settings: data = {} for id in self.settings: - if id != 'active_profile': - data[id] = self.settings[id].value + data[id] = self.settings[id].value try: with open(f'profile{i}.hex.json', 'w') as f: @@ -327,18 +328,10 @@ class MenuMode(Mode): self.settings.store() @property - def setting_id(self) -> str: - gi, si = self.active - if gi == 0: - return 'active_profile' - - return self.ui_setting_ids[gi][si] - - @property def setting(self) -> Setting: gi, si = self.active if gi == 0: - return self.settings.get('active_profile') + return self.settings.profile_setting return self.ui_settings[gi][si] @@ -407,6 +400,10 @@ class MenuMode(Mode): if handled: self.update_display() - self.settings.dispatch(self.setting_id, last_val) - return handled + if gi == 0: + # profile switched + self.settings.store(last_val) + self.settings.load(self.setting.value) + else: + self.settings.dispatch(self.ui_setting_ids[gi][si], last_val) |
