UI 框架为 Game Macro 应用程序提供用户界面组件,采用模块化和可扩展设计。
| English Version | 中文版本 |
UI 系统围绕主外壳构建,具有导航树和动态页面加载功能。支持:
主应用程序外壳,包含导航树和页面管理。
UI_ShowMain() - 显示主应用程序窗口UI_OnNavChange() - 处理导航树选择UI_OnResize_LeftNav() - 处理窗口调整大小事件UI_SwitchPage(key) - 在不同页面间切换rootProfile := UI.Nav.Add("概览与配置")
rootData := UI.Nav.Add("数据与检测")
rootAuto := UI.Nav.Add("自动化")
rootAdv := UI.Nav.Add("高级功能")
rootTools := UI.Nav.Add("工具")
rootSet := UI.Nav.Add("设置")
布局管理和响应式设计。
基础 UI 组件和框架工具。
UI 使用基于页面的架构,每个功能区域都作为单独的页面实现。
UI_RegisterPage("profile", "概览与配置", Page_Profile_Build, Page_Profile_Layout, Page_Profile_OnEnter)
UI_RegisterPage("skills", "技能", Page_Skills_Build, Page_Skills_Layout)
UI_RegisterPage("rules", "循环规则", Page_Rules_Build, Page_Rules_Layout, Page_Rules_OnEnter)
UI 包含各种模态对话框用于特定任务:
UI 使用响应式布局系统,适应窗口大小变化。
; 左侧导航树
UI.Nav := UI.Main.Add("TreeView", "xm ym w220 h620 +Lines +Buttons")
; 右侧内容区域
UI.Content := UI.Main.Add("GroupBox", "x+10 yp w600 h620", "Content")
UI 通过语言系统支持多种语言:
; 初始化语言系统
Lang_Init(AppConfig_Get("Language", "zh-CN"))
; 使用翻译文本
UI.Main.Title := T("app.title", "Game Macro")
Languages/zh-CN.ini - 中文翻译Languages/en-US.ini - 英文翻译UI 使用 AutoHotkey 的事件系统处理用户交互。
; 按钮点击事件
myButton.OnEvent("Click", MyButton_Click)
; 树视图选择
UI.Nav.OnEvent("Click", UI_OnNavChange)
; 窗口关闭
UI.Main.OnEvent("Close", UI_OnMainClose)
Page_MyPage_Build() {
global UI
; 创建控件
UI.MyPage.Label := UI.Content.Add("Text", "xm ym", "我的页面标题")
UI.MyPage.Button := UI.Content.Add("Button", "x+10", "点击我")
; 注册事件
UI.MyPage.Button.OnEvent("Click", MyPage_ButtonClick)
}
Page_MyPage_Layout() {
global UI
; 定位控件
UI.MyPage.Label.Move(10, 10, 200, 20)
UI.MyPage.Button.Move(220, 10, 100, 25)
}
MyPage_ButtonClick(*) {
MsgBox "按钮被点击了!"
}
UI_OnNavChange(*) {
global UI, UI_NavMap
sel := UI.Nav.GetSelection()
if (!sel || !UI_NavMap.Has(sel)) {
return
}
key := UI_NavMap[sel]
UI_SwitchPage(key)
}
; 打开技能编辑器
GUI_SkillEditor_Show(skillData) {
; 创建对话框
editor := GUI_SkillEditor_Create()
; 填充数据
GUI_SkillEditor_LoadData(editor, skillData)
; 显示对话框
editor.Show("Modal")
; 等待用户操作
return GUI_SkillEditor_GetResult(editor)
}
UI_OnResize_LeftNav(*) {
global UI
; 获取窗口大小
winWidth := UI.Main.Pos.W
winHeight := UI.Main.Pos.H
; 调整导航树大小
UI.Nav.Move(10, 10, 220, winHeight - 50)
; 调整内容区域大小
UI.Content.Move(240, 10, winWidth - 260, winHeight - 50)
; 重新布局当前页面
if (UI.CurrentPage) {
UI.CurrentPage.Layout()
}
}
UI 设置存储在配置文件中:
uiConfig := {
Language: "zh-CN",
Theme: "dark",
FontSize: 12,
WindowSize: {Width: 1024, Height: 768},
Navigation: {
Expanded: true,
Width: 220
}
}
UI 支持主题切换:
; 设置主题
UI_SetTheme("dark") {
; 应用深色主题样式
UI.Main.BackColor := "0x1E1E1E"
UI.Main.SetFont("cWhite")
; 更新所有控件样式
UI_UpdateThemeStyles()
}
UI 框架包含全面的错误处理:
模块提供实时监控的调试接口:
; 启用 UI 调试
UI_EnableDebug()
; 获取调试信息
debugInfo := UI_GetDebugInfo()
详细的布局信息用于调试:
; 获取布局统计
layoutStats := UI_GetLayoutStats()
Logger_Debug("UI", "布局统计", layoutStats)