华荣三照明、合信、荣欣八组合馈电

This commit is contained in:
冯佳
2025-06-25 11:36:43 +08:00
parent 37d39f4578
commit 25b3cb7f2e
494 changed files with 114074 additions and 0 deletions

106
menu_base.py Normal file
View 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()