1
This commit is contained in:
50
tool/code_generator.py
Normal file
50
tool/code_generator.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
def generate_menu_nodes_source(self):
|
||||||
|
"""生成菜单节点源文件"""
|
||||||
|
menu_src_file = os.path.join(self.output_dir, f"{self.source_prefix}nodes.c")
|
||||||
|
|
||||||
|
with open(menu_src_file, 'w', encoding='utf-8') as f:
|
||||||
|
f.write("/**\n")
|
||||||
|
f.write(" **********************************************************************************************************************\n")
|
||||||
|
f.write(" * @file menu_nodes.c\n")
|
||||||
|
f.write(" * @brief 电磁启动器菜单节点实现\n")
|
||||||
|
f.write(" * @author Code Generator\n")
|
||||||
|
f.write(" * @date 2025-12-22 12:00:00\n")
|
||||||
|
f.write(" **********************************************************************************************************************\n")
|
||||||
|
f.write(" */\n\n")
|
||||||
|
f.write("#include \"menu_nodes.h\"\n\n")
|
||||||
|
|
||||||
|
# 生成菜单节点数组
|
||||||
|
f.write("/* 菜单节点数组定义 */\n")
|
||||||
|
f.write("const MenuNode g_menu_nodes[] = {\n")
|
||||||
|
|
||||||
|
for i, node in enumerate(self.nodes):
|
||||||
|
f.write(" {\n")
|
||||||
|
f.write(f" .id = {node['id']},\n")
|
||||||
|
f.write(f" .parent_id = {node['parent_id']},\n")
|
||||||
|
f.write(f" .name_en = \"{node['name']['en']}",\n")
|
||||||
|
f.write(f" .name_cn = \"{node['name']['cn']}",\n")
|
||||||
|
f.write(f" .id_name = \"{node['id_name']}",\n")
|
||||||
|
f.write(f" .enter_cb = {node.get('enter_cb', 'NULL')},\n")
|
||||||
|
f.write(f" .display_cb = {node.get('display_cb', 'NULL')},\n")
|
||||||
|
f.write(f" .action_cb = {node.get('action_cb', 'NULL')},\n")
|
||||||
|
f.write(f" .visible_cb = {node.get('visible_cb', 'NULL')},\n")
|
||||||
|
f.write(f" .permission_level = {node.get('permission_level', 0)},\n")
|
||||||
|
f.write(f" .confirm_required = {str(node.get('confirm_required', False)).lower()},\n")
|
||||||
|
f.write(f" .bind_param_id = {node.get('bind_param_id', 0)},\n")
|
||||||
|
f.write(f" .menu_item_type = {node['c_code'].get('menu_item_type', 'SUB_MENU')}\n")
|
||||||
|
|
||||||
|
# 最后一个元素不需要逗号
|
||||||
|
if i == len(self.nodes) - 1:
|
||||||
|
f.write(" }\n")
|
||||||
|
else:
|
||||||
|
f.write(" },\n")
|
||||||
|
|
||||||
|
f.write("};
|
||||||
|
|
||||||
|
")
|
||||||
|
|
||||||
|
# 生成菜单节点数量
|
||||||
|
f.write("/* 菜单节点数量 */\n")
|
||||||
|
f.write("const uint32_t g_menu_node_count = sizeof(g_menu_nodes) / sizeof(g_menu_nodes[0]);\n\n")
|
||||||
|
|
||||||
|
print(f"菜单节点源文件生成成功: {menu_src_file}")
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user