From 59db3dc33be1249eb5784867667e42b4bcc033ff Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Wed, 18 Mar 2026 22:21:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ui):=20=E6=8F=90=E5=8F=96UI=E5=B8=B8?= =?UTF-8?q?=E9=87=8F=E5=88=B0=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=B9=B6?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 config.h 集中管理所有UI常量,如窗口标题、尺寸、颜色等 - 将全局变量和控件指针移至 globals.c 进行统一管理 - 更新 Makefile 以包含新增的源文件 - 修改 ui.c 使用配置常量替代硬编码值,提高可维护性 --- Makefile | 7 ++++-- bin/PathEditor.exe | Bin 245031 -> 245211 bytes include/config.h | 23 +++++++++++++++++++ src/globals.c | 24 ++++++++++++++++++++ src/main.c | 20 ----------------- src/ui.c | 54 +++++++++++++++++++++++---------------------- 6 files changed, 80 insertions(+), 48 deletions(-) create mode 100644 include/config.h create mode 100644 src/globals.c diff --git a/Makefile b/Makefile index 68eb141..44f9c1e 100644 --- a/Makefile +++ b/Makefile @@ -18,9 +18,9 @@ CFLAGS = -Wall -O2 -I$(INCLUDE_DIR) -I$(LOCAL_INCLUDE_DIR) -D_WIN32 -DUNICODE -D LDFLAGS = -L$(LIB_DIR) -liup -liupcd -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32 -ladvapi32 -mwindows # Source -SRC = src/main.c src/utils.c src/registry.c src/ui.c src/ui_utils.c src/cb_edit.c src/cb_file.c src/cb_main.c +SRC = src/main.c src/utils.c src/registry.c src/ui.c src/ui_utils.c src/cb_edit.c src/cb_file.c src/cb_main.c src/globals.c RES = ico/resources.rc -OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/ui_utils.o $(OBJ_DIR)/cb_edit.o $(OBJ_DIR)/cb_file.o $(OBJ_DIR)/cb_main.o $(OBJ_DIR)/resources.o +OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/ui_utils.o $(OBJ_DIR)/cb_edit.o $(OBJ_DIR)/cb_file.o $(OBJ_DIR)/cb_main.o $(OBJ_DIR)/globals.o $(OBJ_DIR)/resources.o EXE = $(BIN_DIR)/PathEditor.exe all: $(BIN_DIR) $(OBJ_DIR) $(EXE) @@ -58,6 +58,9 @@ $(OBJ_DIR)/cb_file.o: src/cb_file.c $(OBJ_DIR)/cb_main.o: src/cb_main.c $(CC) $(CFLAGS) -c -o $@ $< +$(OBJ_DIR)/globals.o: src/globals.c + $(CC) $(CFLAGS) -c -o $@ $< + $(OBJ_DIR)/resources.o: ico/resources.rc $(WINDRES) -i $< -o $@ diff --git a/bin/PathEditor.exe b/bin/PathEditor.exe index 0cc998436d3418166e1f094a81860d83321a8907..5d0174c62abc2e6cb811b2aaa922d65a3e43e625 100644 GIT binary patch delta 16297 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 +#include "globals.h" + +// 全局控件定义 +Ihandle *dlg = NULL; // 主对话框 +Ihandle *tabs_main = NULL; // 主选项卡 +Ihandle *list_sys = NULL, *list_user = NULL, *list_merged = NULL; // 列表控件 +Ihandle *lbl_status = NULL; // 状态栏 +Ihandle *btn_new = NULL, *btn_edit = NULL, *btn_browse = NULL, *btn_del = NULL, *btn_up = NULL, *btn_down = NULL; // 右侧按钮 +Ihandle *btn_undo = NULL, *btn_redo = NULL; // 撤销重做按钮 +Ihandle *btn_import = NULL, *btn_export = NULL; // 导入导出按钮 +Ihandle *btn_ok = NULL, *btn_cancel = NULL, *btn_help = NULL; // 确认取消帮助按钮 +Ihandle *btn_clean = NULL; // 一键清理按钮 +Ihandle *btn_theme = NULL; // 主题切换按钮 +Ihandle *txt_search = NULL; // 搜索框 + +// 历史记录栈 +HistoryStack undo_stack = {0}; +HistoryStack redo_stack = {0}; + +// 全局变量定义 +StringList raw_sys_paths = {0}; +StringList raw_user_paths = {0}; +int is_dark_mode = 0; // 默认浅色模式 diff --git a/src/main.c b/src/main.c index fb0414e..5b5d435 100644 --- a/src/main.c +++ b/src/main.c @@ -7,27 +7,7 @@ #include "ui.h" #include "cb_main.h" -// 全局控件定义 -Ihandle *dlg; // 主对话框 -Ihandle *tabs_main; // 主选项卡 -Ihandle *list_sys, *list_user, *list_merged; // 列表控件 -Ihandle *lbl_status; // 状态栏 -Ihandle *btn_new, *btn_edit, *btn_browse, *btn_del, *btn_up, *btn_down; // 右侧按钮 -Ihandle *btn_undo, *btn_redo; // 撤销重做按钮 -Ihandle *btn_import, *btn_export; // 导入导出按钮 -Ihandle *btn_ok, *btn_cancel, *btn_help; // 确认取消帮助按钮 -Ihandle *btn_clean; // 一键清理按钮 -Ihandle *btn_theme; // 主题切换按钮 -Ihandle *txt_search; // 搜索框 -// 历史记录栈 -HistoryStack undo_stack = {0}; -HistoryStack redo_stack = {0}; - -// 全局变量定义 -StringList raw_sys_paths = {0}; -StringList raw_user_paths = {0}; -int is_dark_mode = 0; // 默认浅色模式 // 主函数 int main(int argc, char **argv) diff --git a/src/ui.c b/src/ui.c index c1feb65..c00b885 100644 --- a/src/ui.c +++ b/src/ui.c @@ -1,4 +1,5 @@ #include "ui.h" +#include "config.h" #include "globals.h" #include "ui_utils.h" #include "cb_edit.h" @@ -12,8 +13,8 @@ Ihandle *create_path_list() Ihandle *list = IupFlatList(); IupSetAttribute(list, "EXPAND", "YES"); IupSetAttribute(list, "MULTIPLE", "YES"); - IupSetAttribute(list, "ITEMPADDING", "5x5"); - IupSetAttribute(list, "BACKCOLOR", "255 255 255"); + IupSetAttribute(list, "ITEMPADDING", UI_LIST_ITEM_PADDING); + IupSetAttribute(list, "BACKCOLOR", UI_LIST_BGCOLOR); IupSetAttribute(list, "BORDER", "YES"); IupSetAttribute(list, "CANFOCUS", "YES"); IupSetAttribute(list, "HLINE", "NO"); @@ -49,16 +50,16 @@ Ihandle *create_main_buttons() IupSetCallback(btn_down, "ACTION", (Icallback)btn_down_cb); IupSetCallback(btn_clean, "ACTION", (Icallback)btn_clean_cb); - // 设置按钮大小 (宽度和高度都增加约1/4) - IupSetAttribute(btn_new, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_edit, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_browse, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_del, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_undo, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_redo, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_up, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_down, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_clean, "RASTERSIZE", "100x32"); + // 设置按钮大小 + IupSetAttribute(btn_new, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_edit, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_browse, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_del, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_undo, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_redo, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_up, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_down, "RASTERSIZE", UI_BUTTON_SIZE); + IupSetAttribute(btn_clean, "RASTERSIZE", UI_BUTTON_SIZE); Ihandle *vbox_btns = IupVbox( btn_new, btn_edit, btn_browse, btn_del, @@ -69,7 +70,7 @@ Ihandle *create_main_buttons() IupFill(), btn_up, btn_down, NULL); - IupSetAttribute(vbox_btns, "GAP", "5"); + IupSetAttribute(vbox_btns, "GAP", UI_GAP_BUTTONS); IupSetAttribute(vbox_btns, "MARGIN", "0x0"); return vbox_btns; @@ -81,30 +82,30 @@ Ihandle *create_bottom_buttons() // 创建底部按钮 btn_help = IupButton("帮助(H)", NULL); IupSetCallback(btn_help, "ACTION", (Icallback)btn_help_cb); - IupSetAttribute(btn_help, "RASTERSIZE", "80x32"); + IupSetAttribute(btn_help, "RASTERSIZE", UI_BUTTON_SMALL_SIZE); btn_theme = IupButton("深色模式", NULL); IupSetCallback(btn_theme, "ACTION", (Icallback)btn_theme_cb); - IupSetAttribute(btn_theme, "RASTERSIZE", "80x32"); + IupSetAttribute(btn_theme, "RASTERSIZE", UI_BUTTON_SMALL_SIZE); lbl_status = IupLabel("就绪"); IupSetAttribute(lbl_status, "EXPAND", "HORIZONTAL"); btn_import = IupButton("导入配置", NULL); IupSetCallback(btn_import, "ACTION", (Icallback)btn_import_cb); - IupSetAttribute(btn_import, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_import, "RASTERSIZE", UI_BUTTON_SIZE); btn_export = IupButton("导出配置", NULL); IupSetCallback(btn_export, "ACTION", (Icallback)btn_export_cb); - IupSetAttribute(btn_export, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_export, "RASTERSIZE", UI_BUTTON_SIZE); btn_ok = IupButton("确定(O)", NULL); IupSetCallback(btn_ok, "ACTION", (Icallback)btn_ok_cb); - IupSetAttribute(btn_ok, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_ok, "RASTERSIZE", UI_BUTTON_SIZE); btn_cancel = IupButton("取消(C)", NULL); IupSetCallback(btn_cancel, "ACTION", (Icallback)btn_cancel_cb); - IupSetAttribute(btn_cancel, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_cancel, "RASTERSIZE", UI_BUTTON_SIZE); Ihandle *hbox_bottom = IupHbox( btn_help, @@ -116,7 +117,7 @@ Ihandle *create_bottom_buttons() btn_ok, btn_cancel, NULL); - IupSetAttribute(hbox_bottom, "GAP", "10"); + IupSetAttribute(hbox_bottom, "GAP", UI_GAP_BOTTOM); IupSetAttribute(hbox_bottom, "ALIGNMENT", "ACENTER"); IupSetAttribute(hbox_bottom, "MARGIN", "0x0"); @@ -133,7 +134,7 @@ Ihandle *create_main_dialog() IupSetAttribute(list_merged, "READONLY", "YES"); IupSetAttribute(list_merged, "MULTIPLE", "NO"); - IupSetAttribute(list_merged, "BGCOLOR", "240 240 240"); // 灰色背景 + IupSetAttribute(list_merged, "BGCOLOR", UI_LIST_MERGED_BGCOLOR); // 灰色背景 // 创建标签页 tabs_main = IupTabs(list_sys, list_user, list_merged, NULL); @@ -154,18 +155,19 @@ Ihandle *create_main_dialog() // 布局 Ihandle *btns = create_main_buttons(); Ihandle *hbox_mid = IupHbox(tabs_main, btns, NULL); - IupSetAttribute(hbox_mid, "GAP", "10"); + IupSetAttribute(hbox_mid, "GAP", UI_GAP_MAIN); IupSetAttribute(hbox_mid, "MARGIN", "0x0"); Ihandle *bottom = create_bottom_buttons(); Ihandle *vbox_main = IupVbox(txt_search, hbox_mid, bottom, NULL); - IupSetAttribute(vbox_main, "GAP", "10"); - IupSetAttribute(vbox_main, "MARGIN", "10x10"); + IupSetAttribute(vbox_main, "GAP", UI_GAP_MAIN); + IupSetAttribute(vbox_main, "MARGIN", UI_MARGIN_MAIN); Ihandle *dlg = IupDialog(vbox_main); - IupSetAttribute(dlg, "TITLE", "Path Editor"); - IupSetAttribute(dlg, "SIZE", "480x400"); + IupSetAttribute(dlg, "TITLE", UI_WINDOW_TITLE); + IupSetAttribute(dlg, "RASTERSIZE", UI_WINDOW_SIZE); + IupSetAttribute(dlg, "MINSIZE", UI_WINDOW_SIZE); return dlg; } \ No newline at end of file