From c8d9b32c7006f4a19ddee946f91ec86071583ebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com> Date: Fri, 1 May 2026 22:53:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(undo):=20=E5=9C=A8=20UI=20=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=92=A4=E9=94=80/=E9=87=8D=E5=81=9A?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E5=B9=B6=E9=9B=86=E6=88=90=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- src/ui/main_window.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/ui/main_window.c b/src/ui/main_window.c index d554ad3..3c1d52c 100644 --- a/src/ui/main_window.c +++ b/src/ui/main_window.c @@ -67,6 +67,14 @@ Ihandle *create_main_window(void) Ihandle *btn_down = IupButton(_(lua_config_get_string("button", "down")), NULL); IupSetAttribute(btn_down, "NAME", CTRL_BTN_DOWN); + Ihandle *btn_undo = IupButton(_(lua_config_get_string("button", "undo")), NULL); + IupSetAttribute(btn_undo, "NAME", CTRL_BTN_UNDO); + IupSetAttribute(btn_undo, "ACTIVE", "NO"); // 初始无操作可撤销 + + Ihandle *btn_redo = IupButton(_(lua_config_get_string("button", "redo")), NULL); + IupSetAttribute(btn_redo, "NAME", CTRL_BTN_REDO); + IupSetAttribute(btn_redo, "ACTIVE", "NO"); // 初始无操作可重做 + Ihandle *btn_clean = IupButton(_(lua_config_get_string("button", "clean")), NULL); IupSetAttribute(btn_clean, "NAME", CTRL_BTN_CLEAN); @@ -88,6 +96,8 @@ Ihandle *create_main_window(void) IupSetCallback(btn_del, "ACTION", (Icallback)btn_del_cb); IupSetCallback(btn_up, "ACTION", (Icallback)btn_up_cb); IupSetCallback(btn_down, "ACTION", (Icallback)btn_down_cb); + IupSetCallback(btn_undo, "ACTION", (Icallback)btn_undo_cb); + IupSetCallback(btn_redo, "ACTION", (Icallback)btn_redo_cb); IupSetCallback(btn_clean, "ACTION", (Icallback)btn_clean_cb); IupSetCallback(btn_import, "ACTION", (Icallback)btn_import_cb); IupSetCallback(btn_export, "ACTION", (Icallback)btn_export_cb); @@ -103,6 +113,8 @@ Ihandle *create_main_window(void) IupSetAttribute(btn_clean, "RASTERSIZE", btn_size); IupSetAttribute(btn_import, "RASTERSIZE", btn_size); IupSetAttribute(btn_export, "RASTERSIZE", btn_size); + IupSetAttribute(btn_undo, "RASTERSIZE", btn_size); + IupSetAttribute(btn_redo, "RASTERSIZE", btn_size); IupSetAttribute(btn_lang, "RASTERSIZE", btn_size); // 创建操作按钮垂直布局 @@ -113,6 +125,7 @@ Ihandle *create_main_window(void) IupFill(), btn_import, btn_export, btn_up, btn_down, + btn_undo, btn_redo, NULL); IupSetAttribute(vbox_btns, "GAP", lua_config_get_string("layout", "vbox_gap")); IupSetAttribute(vbox_btns, "MARGIN", lua_config_get_string("layout", "vbox_margin")); @@ -204,6 +217,8 @@ void refresh_main_window_ui(Ihandle *main_dlg) SET_CHILD_TITLE(CTRL_BTN_CLEAN, "clean"); SET_CHILD_TITLE(CTRL_BTN_IMPORT, "import"); SET_CHILD_TITLE(CTRL_BTN_EXPORT, "export"); + SET_CHILD_TITLE(CTRL_BTN_UNDO, "undo"); + SET_CHILD_TITLE(CTRL_BTN_REDO, "redo"); SET_CHILD_TITLE(CTRL_BTN_OK, "ok"); SET_CHILD_TITLE(CTRL_BTN_CANCEL, "cancel"); SET_CHILD_TITLE(CTRL_BTN_HELP, "help");