198 | 198 |
self.readonly = readonly
|
199 | 199 |
self.change_handlers = {}
|
200 | 200 |
|
|
201 |
self.profile_setting = SliderSetting(
|
|
202 |
"CURRENT PROFILE", 24, fmt="Profile {}", thresh=_eq
|
|
203 |
)
|
|
204 |
|
201 | 205 |
def on(self, id: str, fn):
|
202 | 206 |
if id in self.change_handlers:
|
203 | 207 |
raise ValueError("already have a handler for {}".format(id))
|
|
222 | 226 |
for id in order:
|
223 | 227 |
if id in data:
|
224 | 228 |
self.settings[id].value = data[id]
|
225 | |
elif id != 'active_profile':
|
|
229 |
else:
|
226 | 230 |
self.settings[id].restore_default()
|
227 | 231 |
|
228 | |
if id != 'active_profile':
|
229 | |
self.dispatch(id)
|
|
232 |
self.dispatch(id)
|
230 | 233 |
except OSError:
|
231 | 234 |
print(f"couldn't load profile{i}, falling back to defaults")
|
232 | 235 |
for id in order:
|
233 | |
if id != 'active_profile':
|
234 | |
self.settings[id].restore_default()
|
235 | |
self.dispatch(id)
|
236 | |
|
237 | |
self.settings['active_profile'].value = i
|
|
236 |
self.settings[id].restore_default()
|
|
237 |
self.dispatch(id)
|
|
238 |
|
|
239 |
self.profile_setting.value = i
|
238 | 240 |
|
239 | 241 |
def store(self, i=None):
|
240 | 242 |
if i == None:
|
241 | |
i = self.settings['active_profile'].value
|
|
243 |
i = self.profile_setting.value
|
242 | 244 |
|
243 | 245 |
if self.readonly:
|
244 | 246 |
print(f"readonly, skipped storing profile{i}")
|
|
246 | 248 |
|
247 | 249 |
data = {}
|
248 | 250 |
for id in self.settings:
|
249 | |
if id != 'active_profile':
|
250 | |
data[id] = self.settings[id].value
|
|
251 |
data[id] = self.settings[id].value
|
251 | 252 |
|
252 | 253 |
try:
|
253 | 254 |
with open(f'profile{i}.hex.json', 'w') as f:
|
|
326 | 327 |
self.settings.store()
|
327 | 328 |
|
328 | 329 |
@property
|
329 | |
def setting_id(self) -> str:
|
330 | |
gi, si = self.active
|
331 | |
if gi == 0:
|
332 | |
return 'active_profile'
|
333 | |
|
334 | |
return self.ui_setting_ids[gi][si]
|
335 | |
|
336 | |
@property
|
337 | 330 |
def setting(self) -> Setting:
|
338 | 331 |
gi, si = self.active
|
339 | 332 |
if gi == 0:
|
340 | |
return self.settings.get('active_profile')
|
|
333 |
return self.settings.profile_setting
|
341 | 334 |
|
342 | 335 |
return self.ui_settings[gi][si]
|
343 | 336 |
|
|
406 | 399 |
|
407 | 400 |
if handled:
|
408 | 401 |
self.update_display()
|
409 | |
self.settings.dispatch(self.setting_id, last_val)
|
410 | |
|
411 | |
return handled
|
|
402 |
|
|
403 |
if gi == 0:
|
|
404 |
# profile switched
|
|
405 |
self.settings.store(last_val)
|
|
406 |
self.settings.load(self.setting.value)
|
|
407 |
else:
|
|
408 |
self.settings.dispatch(self.ui_setting_ids[gi][si], last_val)
|