mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-05-10 02:09:46 +08:00
86792012e2
- 将配置中的中文文本改为英文原文,作为翻译源字符串 - 在C代码中为所有UI字符串添加_()包装以启用gettext翻译 - 更新对话框、主窗口和配置文件的文本处理方式
235 lines
9.7 KiB
C
235 lines
9.7 KiB
C
#include "ui/main_window.h"
|
|
#include "controller/callbacks.h"
|
|
#include "core/lua_config.h"
|
|
#include "utils/i18n.h"
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
|
|
// 创建路径列表控件
|
|
static Ihandle *create_path_list(const char *name)
|
|
{
|
|
Ihandle *list = IupFlatList();
|
|
IupSetAttribute(list, "NAME", name);
|
|
IupSetAttribute(list, "EXPAND", "YES");
|
|
IupSetAttribute(list, "ITEMPADDING", lua_config_get_string("list", "item_padding"));
|
|
IupSetAttribute(list, "BACKCOLOR", lua_config_get_string("list", "backcolor"));
|
|
IupSetAttribute(list, "BORDER", "YES");
|
|
IupSetAttribute(list, "CANFOCUS", "YES");
|
|
IupSetAttribute(list, "HLINE", "NO");
|
|
IupSetCallback(list, "DBLCLICK_CB", (Icallback)list_dblclick_cb);
|
|
IupSetCallback(list, "DROPFILES_CB", (Icallback)list_dropfiles_cb);
|
|
IupSetCallback(list, "K_ANY", (Icallback)list_k_any_cb);
|
|
return list;
|
|
}
|
|
|
|
// 创建主窗口
|
|
Ihandle *create_main_window(void)
|
|
{
|
|
// 创建系统路径列表
|
|
Ihandle *list_sys = create_path_list("LIST_SYS");
|
|
// 创建用户路径列表
|
|
Ihandle *list_user = create_path_list("LIST_USER");
|
|
|
|
// 创建搜索框
|
|
Ihandle *txt_search = IupText(NULL);
|
|
IupSetAttribute(txt_search, "NAME", "TXT_SEARCH");
|
|
IupSetAttribute(txt_search, "EXPAND", "HORIZONTAL");
|
|
IupSetAttribute(txt_search, "CUEBANNER", lua_config_get_string("label", "search_placeholder"));
|
|
IupSetCallback(txt_search, "VALUECHANGED_CB", (Icallback)txt_search_cb);
|
|
|
|
// 创建选项卡
|
|
Ihandle *tabs_main = IupTabs(
|
|
IupVbox(list_sys, NULL),
|
|
IupVbox(list_user, NULL),
|
|
NULL);
|
|
IupSetAttribute(tabs_main, "NAME", "TABS_MAIN");
|
|
IupSetAttribute(tabs_main, "TABTITLE0", _(lua_config_get_string("label", "tab_sys")));
|
|
IupSetAttribute(tabs_main, "TABTITLE1", _(lua_config_get_string("label", "tab_user")));
|
|
IupSetAttribute(tabs_main, "TABTYPE", "TOP");
|
|
|
|
// 创建操作按钮
|
|
Ihandle *btn_new = IupButton(_(lua_config_get_string("button", "new")), NULL);
|
|
IupSetAttribute(btn_new, "NAME", "BTN_NEW");
|
|
|
|
Ihandle *btn_edit = IupButton(_(lua_config_get_string("button", "edit")), NULL);
|
|
IupSetAttribute(btn_edit, "NAME", "BTN_EDIT");
|
|
|
|
Ihandle *btn_browse = IupButton(_(lua_config_get_string("button", "browse")), NULL);
|
|
IupSetAttribute(btn_browse, "NAME", "BTN_BROWSE");
|
|
|
|
Ihandle *btn_del = IupButton(_(lua_config_get_string("button", "del")), NULL);
|
|
IupSetAttribute(btn_del, "NAME", "BTN_DEL");
|
|
|
|
Ihandle *btn_up = IupButton(_(lua_config_get_string("button", "up")), NULL);
|
|
IupSetAttribute(btn_up, "NAME", "BTN_UP");
|
|
|
|
Ihandle *btn_down = IupButton(_(lua_config_get_string("button", "down")), NULL);
|
|
IupSetAttribute(btn_down, "NAME", "BTN_DOWN");
|
|
|
|
Ihandle *btn_clean = IupButton(_(lua_config_get_string("button", "clean")), NULL);
|
|
IupSetAttribute(btn_clean, "NAME", "BTN_CLEAN");
|
|
|
|
Ihandle *btn_import = IupButton(_(lua_config_get_string("button", "import")), NULL);
|
|
IupSetAttribute(btn_import, "NAME", "BTN_IMPORT");
|
|
|
|
Ihandle *btn_export = IupButton(_(lua_config_get_string("button", "export")), NULL);
|
|
IupSetAttribute(btn_export, "NAME", "BTN_EXPORT");
|
|
|
|
// 创建语言切换按钮
|
|
Ihandle *btn_lang = IupButton(_("Language"), NULL);
|
|
IupSetAttribute(btn_lang, "NAME", "BTN_LANG");
|
|
IupSetCallback(btn_lang, "ACTION", (Icallback)btn_lang_cb);
|
|
|
|
// 设置按钮回调
|
|
IupSetCallback(btn_new, "ACTION", (Icallback)btn_new_cb);
|
|
IupSetCallback(btn_edit, "ACTION", (Icallback)btn_edit_cb);
|
|
IupSetCallback(btn_browse, "ACTION", (Icallback)btn_browse_cb);
|
|
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_clean, "ACTION", (Icallback)btn_clean_cb);
|
|
IupSetCallback(btn_import, "ACTION", (Icallback)btn_import_cb);
|
|
IupSetCallback(btn_export, "ACTION", (Icallback)btn_export_cb);
|
|
|
|
// 设置按钮大小
|
|
const char *btn_size = lua_config_get_string("button", "rastersize");
|
|
IupSetAttribute(btn_new, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_edit, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_browse, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_del, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_up, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_down, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_clean, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_import, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_export, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_lang, "RASTERSIZE", btn_size);
|
|
|
|
// 创建操作按钮垂直布局
|
|
Ihandle *vbox_btns = IupVbox(
|
|
btn_new, btn_edit, btn_browse, btn_del,
|
|
IupFill(),
|
|
btn_clean,
|
|
IupFill(),
|
|
btn_import, btn_export,
|
|
btn_up, btn_down,
|
|
NULL);
|
|
IupSetAttribute(vbox_btns, "GAP", lua_config_get_string("layout", "vbox_gap"));
|
|
IupSetAttribute(vbox_btns, "MARGIN", lua_config_get_string("layout", "vbox_margin"));
|
|
|
|
// 创建主窗口水平布局
|
|
Ihandle *hbox_main = IupHbox(tabs_main, vbox_btns, NULL);
|
|
IupSetAttribute(hbox_main, "GAP", lua_config_get_string("layout", "hbox_gap"));
|
|
IupSetAttribute(hbox_main, "MARGIN", lua_config_get_string("layout", "hbox_margin"));
|
|
|
|
// 创建状态标签
|
|
Ihandle *lbl_status = IupLabel(lua_config_get_string("status", "normal"));
|
|
IupSetAttribute(lbl_status, "NAME", "LBL_STATUS");
|
|
IupSetAttribute(lbl_status, "EXPAND", "HORIZONTAL");
|
|
|
|
// 创建底部按钮
|
|
Ihandle *btn_ok = IupButton(_(lua_config_get_string("button", "ok")), NULL);
|
|
IupSetAttribute(btn_ok, "NAME", "BTN_OK");
|
|
Ihandle *btn_cancel = IupButton(_(lua_config_get_string("button", "cancel")), NULL);
|
|
IupSetAttribute(btn_cancel, "NAME", "BTN_CANCEL");
|
|
Ihandle *btn_help = IupButton(_(lua_config_get_string("button", "help")), NULL);
|
|
IupSetAttribute(btn_help, "NAME", "BTN_HELP");
|
|
|
|
// 设置底部按钮回调
|
|
IupSetCallback(btn_ok, "ACTION", (Icallback)btn_ok_cb);
|
|
IupSetCallback(btn_cancel, "ACTION", (Icallback)btn_cancel_cb);
|
|
IupSetCallback(btn_help, "ACTION", (Icallback)btn_help_cb);
|
|
|
|
// 设置底部按钮大小
|
|
IupSetAttribute(btn_ok, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_cancel, "RASTERSIZE", btn_size);
|
|
IupSetAttribute(btn_help, "RASTERSIZE", btn_size);
|
|
|
|
// 创建底部按钮水平布局
|
|
Ihandle *hbox_bottom = IupHbox(lbl_status, IupFill(), btn_help, btn_lang, btn_ok, btn_cancel, NULL);
|
|
IupSetAttribute(hbox_bottom, "GAP", lua_config_get_string("layout", "hbox_gap"));
|
|
IupSetAttribute(hbox_bottom, "MARGIN", lua_config_get_string("layout", "hbox_margin"));
|
|
IupSetAttribute(hbox_bottom, "ALIGNMENT", lua_config_get_string("layout", "hbox_alignment"));
|
|
|
|
// 创建主窗口垂直布局
|
|
Ihandle *vbox_all = IupVbox(
|
|
IupLabel(lua_config_get_string("label", "title")),
|
|
txt_search,
|
|
hbox_main,
|
|
hbox_bottom,
|
|
NULL);
|
|
IupSetAttribute(vbox_all, "MARGIN", lua_config_get_string("layout", "vbox_all_margin"));
|
|
IupSetAttribute(vbox_all, "GAP", lua_config_get_string("layout", "vbox_all_gap"));
|
|
|
|
// 创建主窗口对话框
|
|
Ihandle *dlg = IupDialog(vbox_all);
|
|
IupSetAttribute(dlg, "TITLE", _(lua_config_get_string("app", "name")));
|
|
IupSetAttribute(dlg, "RASTERSIZE", lua_config_get_string("dialog", "size"));
|
|
IupSetAttribute(dlg, "MINSIZE", lua_config_get_string("dialog", "minsize"));
|
|
IupSetAttribute(dlg, "MINBOX", "NO");
|
|
IupSetAttribute(dlg, "MAXBOX", "NO");
|
|
|
|
return dlg;
|
|
}
|
|
|
|
void refresh_main_window_ui(Ihandle *main_dlg)
|
|
{
|
|
if (!main_dlg)
|
|
return;
|
|
|
|
IupSetAttribute(main_dlg, "TITLE", _(lua_config_get_string("app", "name")));
|
|
|
|
IupSetAttribute(main_dlg, "TABTITLE0", _(lua_config_get_string("label", "tab_sys")));
|
|
IupSetAttribute(main_dlg, "TABTITLE1", _(lua_config_get_string("label", "tab_user")));
|
|
|
|
Ihandle *btn = IupGetDialogChild(main_dlg, "BTN_NEW");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "new")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_EDIT");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "edit")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_BROWSE");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "browse")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_DEL");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "del")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_UP");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "up")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_DOWN");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "down")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_CLEAN");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "clean")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_IMPORT");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "import")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_EXPORT");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "export")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_LANG");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _("Language"));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_OK");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "ok")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_CANCEL");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "cancel")));
|
|
|
|
btn = IupGetDialogChild(main_dlg, "BTN_HELP");
|
|
if (btn)
|
|
IupSetAttribute(btn, "TITLE", _(lua_config_get_string("button", "help")));
|
|
} |