settings: handle missing divert-setting in action RW
This commit is contained in:
parent
55a91f0ae4
commit
13e4861043
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue