settings: handle missing divert-setting in action RW

This commit is contained in:
Peter F. Patel-Schneider 2022-01-17 11:37:00 -05:00
parent 55a91f0ae4
commit 13e4861043
1 changed files with 7 additions and 2 deletions

View File

@ -1189,12 +1189,16 @@ class ActionSettingRW:
self.move_action(dx, dy) self.move_action(dx, dy)
divertSetting = next(filter(lambda s: s.name == self.divert_setting_name, device.settings), None) divertSetting = next(filter(lambda s: s.name == self.divert_setting_name, device.settings), None)
if divertSetting is None:
_log.warn('setting %s not found on %s', self.divert_setting_name, device.name)
return None
self.device = device self.device = device
key = _bytes2int(data_bytes) key = _bytes2int(data_bytes)
if key: # Enable if key: # Enable
self.key = next((k for k in device.keys if k.key == key), None) self.key = next((k for k in device.keys if k.key == key), None)
if self.key: if self.key:
self.active = True self.active = True
if divertSetting:
divertSetting.write_key_value(int(self.key.key), 1) divertSetting.write_key_value(int(self.key.key), 1)
device.add_notification_handler(self.name, handler) device.add_notification_handler(self.name, handler)
from solaar.ui import status_changed as _status_changed from solaar.ui import status_changed as _status_changed
@ -1205,6 +1209,7 @@ class ActionSettingRW:
else: # Disable else: # Disable
if self.active: if self.active:
self.active = False self.active = False
if divertSetting:
divertSetting.write_key_value(int(self.key.key), 0) divertSetting.write_key_value(int(self.key.key), 0)
from solaar.ui import status_changed as _status_changed from solaar.ui import status_changed as _status_changed
_status_changed(device, refresh=True) # update main window _status_changed(device, refresh=True) # update main window