华荣三照明、合信、荣欣八组合馈电
This commit is contained in:
106
menu_base.py
Normal file
106
menu_base.py
Normal file
@ -0,0 +1,106 @@
|
||||
from device_conf import class_comm_device_config
|
||||
|
||||
class class_menu_layer_info() :
|
||||
def __init__(self,
|
||||
menu_acitve : dict = None,
|
||||
config: class_comm_device_config = None) :
|
||||
|
||||
self.menu_display_start = 0
|
||||
self.menu_select = 0
|
||||
self.menu_active = menu_acitve
|
||||
self.config = config
|
||||
|
||||
if menu_acitve == None:
|
||||
self.menu_item_count = 0
|
||||
else :
|
||||
self.menu_item_count = len(menu_acitve)
|
||||
|
||||
class class_device_menu() :
|
||||
def __init__(self,
|
||||
device_remap = 0,
|
||||
device_config : class_comm_device_config = None):
|
||||
|
||||
self.config = device_config
|
||||
self.menu_table = None if device_config == None else device_config.get_menu_top()
|
||||
self.alias_table = None if device_config == None else device_config.get_alias_table()
|
||||
self.mqtt_table = None if device_config == None else device_config.get_mqtt_table()
|
||||
if device_config == None :
|
||||
self.comm_table = None
|
||||
self.func_comm_table_trigger_item = None
|
||||
else :
|
||||
self.comm_table, self.func_comm_table_trigger_item = device_config.get_comm_table()
|
||||
|
||||
self.device_remap = device_remap
|
||||
self.menu_layers : dict = []
|
||||
self.menu_layer_index = 0
|
||||
menu_layer_item = class_menu_layer_info(self.menu_table, self.config)
|
||||
self.menu_layers.append(menu_layer_item)
|
||||
|
||||
#更新菜单配置信息, 当设备发送变化时,菜单也会同步发生变化
|
||||
def menu_update_device_config(self, device_config : class_comm_device_config) :
|
||||
self.config = device_config
|
||||
if device_config == None :
|
||||
self.menu_table = None
|
||||
self.alias_table = None
|
||||
self.mqtt_table = None
|
||||
self.comm_table = None
|
||||
self.func_comm_table_trigger_item = None
|
||||
else :
|
||||
self.menu_table = device_config.get_menu_top()
|
||||
self.alias_table = device_config.get_alias_table()
|
||||
self.mqtt_table = device_config.get_mqtt_table()
|
||||
self.comm_table, self.func_comm_table_trigger_item = device_config.get_comm_table()
|
||||
|
||||
#修改菜单remap地址
|
||||
def menu_update_device_remap_addr(self, device_remap) :
|
||||
self.device_remap = device_remap
|
||||
|
||||
|
||||
#获取菜单层级信息
|
||||
def menu_get_layer_info(self) :
|
||||
return self.menu_layers[self.menu_layer_index]
|
||||
|
||||
#获取当前的活动菜单
|
||||
def menu_get_active_menu(self) :
|
||||
active_layer : class_menu_layer_info = self.menu_get_layer_info()
|
||||
menu_active = active_layer.menu_active
|
||||
return menu_active
|
||||
|
||||
#获取选中的有效菜单相
|
||||
def menu_get_active_item(self) :
|
||||
active_layer : class_menu_layer_info = self.menu_get_layer_info()
|
||||
menu_active = active_layer.menu_active
|
||||
menu_item = None
|
||||
if menu_active != None :
|
||||
if active_layer.menu_select < len(menu_active) :
|
||||
menu_item = menu_active[active_layer.menu_select]
|
||||
return menu_item
|
||||
|
||||
#返回上一层菜单
|
||||
def menu_return_to_upper_layer(self) :
|
||||
if self.menu_layer_index > 0 :
|
||||
self.menu_layer_index -= 1
|
||||
self.menu_layers.pop(-1)
|
||||
|
||||
active_layer : class_menu_layer_info = self.menu_get_layer_info()
|
||||
if active_layer.config != self.config :
|
||||
self.menu_update_device_config(active_layer.config)
|
||||
return active_layer
|
||||
|
||||
#返回最上一层菜单
|
||||
def menu_return_to_most_upper_layer(self) :
|
||||
while self.menu_layer_index > 0 :
|
||||
self.menu_layer_index -= 1
|
||||
self.menu_layers.pop(-1)
|
||||
|
||||
active_layer : class_menu_layer_info = self.menu_get_layer_info()
|
||||
if active_layer.config != self.config :
|
||||
self.menu_update_device_config(active_layer.config)
|
||||
return self.menu_get_layer_info()
|
||||
|
||||
#进入下一层菜单
|
||||
def menu_enter_sub_menu(self, sub_menu) :
|
||||
self.menu_layer_index += 1
|
||||
menu_layers = class_menu_layer_info(sub_menu, self.config)
|
||||
self.menu_layers.append(menu_layers)
|
||||
return self.menu_get_layer_info()
|
||||
Reference in New Issue
Block a user