From ce232cb02492af9403464709deb50783ecb030e9 Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Wed, 25 Mar 2026 19:18:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5=20Lua=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=B3=BB=E7=BB=9F=E5=AE=9E=E7=8E=B0=20UI=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=83=AD=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 Lua 5.5 库支持,包含头文件和动态链接库 - 新增 lua_config 模块,提供配置初始化、获取字符串/整型值等功能 - 创建 config.lua 配置文件,集中管理所有 UI 文本、尺寸和布局参数 - 移除原有的硬编码 config.h,将 UI 常量迁移至 Lua 配置 - 修改主窗口、对话框和回调函数,动态读取 Lua 配置值 - 更新 CMakeLists.txt,添加 Lua 库依赖和 DLL 复制步骤 - 删除过时的 Makefile,统一使用 CMake 构建 --- CMakeLists.txt | 13 +- Makefile | 60 --- include/config.h | 33 -- include/core/lua_config.h | 34 ++ libs/lua/include/lauxlib.h | 271 ++++++++++++++ libs/lua/include/lua.h | 547 +++++++++++++++++++++++++++ libs/lua/include/lua.hpp | 10 + libs/lua/include/luaconf.h | 745 +++++++++++++++++++++++++++++++++++++ libs/lua/include/lualib.h | 65 ++++ libs/lua/liblua55.a | Bin 0 -> 95174 bytes libs/lua/lua55.dll | Bin 0 -> 371668 bytes lua/config.lua | 71 ++++ src/controller/callbacks.c | 13 +- src/core/lua_config.c | 200 ++++++++++ src/main.c | 10 +- src/ui/dialogs.c | 9 +- src/ui/main_window.c | 83 +++-- 17 files changed, 2017 insertions(+), 147 deletions(-) delete mode 100644 Makefile delete mode 100644 include/config.h create mode 100644 include/core/lua_config.h create mode 100644 libs/lua/include/lauxlib.h create mode 100644 libs/lua/include/lua.h create mode 100644 libs/lua/include/lua.hpp create mode 100644 libs/lua/include/luaconf.h create mode 100644 libs/lua/include/lualib.h create mode 100644 libs/lua/liblua55.a create mode 100644 libs/lua/lua55.dll create mode 100644 lua/config.lua create mode 100644 src/core/lua_config.c diff --git a/CMakeLists.txt b/CMakeLists.txt index c45fb7d..141f7f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ set(SOURCES src/core/registry_service.c src/core/path_manager.c src/core/app_context.c + src/core/lua_config.c src/controller/callbacks.c ico/resources.rc ) @@ -51,15 +52,18 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include/controller ${CMAKE_SOURCE_DIR}/include/utils ${CMAKE_SOURCE_DIR}/libs/IUP/include + ${CMAKE_SOURCE_DIR}/libs/lua/include ) # 设置库文件搜索路径 target_link_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/libs/IUP + ${CMAKE_SOURCE_DIR}/libs/lua ) # 链接所需库 target_link_libraries(${PROJECT_NAME} PRIVATE + lua55 iup iupcd gdi32 @@ -70,11 +74,18 @@ target_link_libraries(${PROJECT_NAME} PRIVATE advapi32 ) -# 编译完成后,仅将程序实际需要的核心 DLL 文件复制到构建输出目录 +# 编译完成后,复制程序实际需要的核心 DLL 文件到构建输出目录 set(IUP_REQUIRED_DLLS "${CMAKE_CURRENT_SOURCE_DIR}/libs/IUP/iup.dll") +set(LUA_REQUIRED_DLLS "${CMAKE_CURRENT_SOURCE_DIR}/libs/lua/lua55.dll") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${IUP_REQUIRED_DLLS} "$" COMMENT "Copying required DLLs to build directory..." ) +add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${LUA_REQUIRED_DLLS} + "$" + COMMENT "Copying Lua DLL to build directory..." +) diff --git a/Makefile b/Makefile deleted file mode 100644 index 1da684a..0000000 --- a/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -CC = gcc -WINDRES = windres - -# Paths - specific to user environment -IUP_DIR = libs/iup-3.31_Win64_dllw6_lib -INCLUDE_DIR = $(IUP_DIR)/include -LIB_DIR = $(IUP_DIR) -LOCAL_INCLUDE_DIR = include - -# Output Directories -OBJ_DIR = obj -BIN_DIR = bin - -# Flags -# -mwindows: Create GUI app (no console) -# -DUNICODE -D_UNICODE: Use Wide Character API -CFLAGS = -Wall -O2 -I$(INCLUDE_DIR) -I$(LOCAL_INCLUDE_DIR) -D_WIN32 -DUNICODE -D_UNICODE -fexec-charset=UTF-8 -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/callbacks.c src/ui.c src/globals.c -RES = ico/resources.rc -OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/callbacks.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/globals.o $(OBJ_DIR)/resources.o -EXE = $(BIN_DIR)/PathEditor.exe - -all: $(BIN_DIR) $(OBJ_DIR) $(EXE) - -$(BIN_DIR): - if not exist $(BIN_DIR) mkdir $(BIN_DIR) - -$(OBJ_DIR): - if not exist $(OBJ_DIR) mkdir $(OBJ_DIR) - -$(EXE): $(OBJ) - $(CC) -o $@ $^ $(LDFLAGS) - -$(OBJ_DIR)/main.o: src/main.c - $(CC) $(CFLAGS) -c -o $@ $< - -$(OBJ_DIR)/utils.o: src/utils.c - $(CC) $(CFLAGS) -c -o $@ $< - -$(OBJ_DIR)/registry.o: src/registry.c - $(CC) $(CFLAGS) -c -o $@ $< - -$(OBJ_DIR)/callbacks.o: src/callbacks.c - $(CC) $(CFLAGS) -c -o $@ $< - -$(OBJ_DIR)/ui.o: src/ui.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 $@ - -clean: - if exist $(OBJ_DIR)\*.o del /Q $(OBJ_DIR)\*.o - if exist $(BIN_DIR)\*.exe del /Q $(BIN_DIR)\*.exe \ No newline at end of file diff --git a/include/config.h b/include/config.h deleted file mode 100644 index e3c9810..0000000 --- a/include/config.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -// ============================================================================ -// UI的配置常量 -// ============================================================================ - -// 应用程序名称 -#define APP_NAME "PathEditor" // 编辑环境变量应用程序名称 -#define APP_NAME_READONLY "PathEditor (只读模式)" // 编辑环境变量只读模式标题 - -// 对话框设置 -#define UI_DLG_SIZE "800x800" // 对话框默认大小 (像素) -#define UI_DLG_MINSIZE "800x800" // 对话框最小大小 (像素) - -// 列表控件设置 -#define UI_LIST_ITEM_PADDING "5x5" // 列表项内边距 -#define UI_LIST_BACKCOLOR "255 255 255" // 列表背景颜色 - -// 按钮设置 -#define UI_BTN_RASTERSIZE "100x32" // 按钮默认大小 - -// 布局间隙和边距 -#define UI_VBOX_GAP "5" // 垂直布局项间隙 -#define UI_VBOX_MARGIN "0x0" // 垂直布局外边距 -#define UI_VBOX_ALL_MARGIN "10x10" // 垂直布局总外边距 -#define UI_VBOX_ALL_GAP "5" // 垂直布局总间隙 - -#define UI_HBOX_GAP "10" // 水平布局项间隙 -#define UI_HBOX_MARGIN "10x10" // 水平布局外边距 -#define UI_HBOX_ALIGNMENT "ACENTER" // 水平布局对齐方式 - -#endif // CONFIG_H diff --git a/include/core/lua_config.h b/include/core/lua_config.h new file mode 100644 index 0000000..9e638a9 --- /dev/null +++ b/include/core/lua_config.h @@ -0,0 +1,34 @@ +#ifndef LUA_CONFIG_H +#define LUA_CONFIG_H + +#include + +// 初始化 Lua 配置系统 +// 返回值: 0 成功, -1 失败 +int lua_config_init(void); + +// 销毁 Lua 配置系统 +void lua_config_destroy(void); + +// 获取字符串配置值 +// section: 配置章节名 (如 "app", "dialog", "button") +// key: 配置键名 (如 "name", "size", "rastersize") +// 返回值: 配置值字符串, 失败时返回 NULL +const char* lua_config_get_string(const char* section, const char* key); + +// 获取整型配置值 +// section: 配置章节名 +// key: 配置键名 +// default_value: 默认值 (当配置不存在或转换失败时返回) +// 返回值: 配置值或默认值 +int lua_config_get_int(const char* section, const char* key, int default_value); + +// 重新加载配置文件 +// 返回值: 0 成功, -1 失败 +int lua_config_reload(void); + +// 获取配置加载状态 +// 返回值: 1 已加载, 0 未加载 +int lua_config_is_loaded(void); + +#endif // LUA_CONFIG_H \ No newline at end of file diff --git a/libs/lua/include/lauxlib.h b/libs/lua/include/lauxlib.h new file mode 100644 index 0000000..7f1d3ca --- /dev/null +++ b/libs/lua/include/lauxlib.h @@ -0,0 +1,271 @@ +/* +** $Id: lauxlib.h $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include +#include + +#include "luaconf.h" +#include "lua.h" + + +/* global table */ +#define LUA_GNAME "_G" + + +typedef struct luaL_Buffer luaL_Buffer; + + +/* extra error code for 'luaL_loadfilex' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +/* key, in the registry, for table of loaded modules */ +#define LUA_LOADED_TABLE "_LOADED" + + +/* key, in the registry, for table of preloaded loaders */ +#define LUA_PRELOAD_TABLE "_PRELOAD" + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + +#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number)) + +LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz); +#define luaL_checkversion(L) \ + luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES) + +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); +LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg); +LUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg, + lua_Integer def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int arg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); +LUALIB_API int (luaL_execresult) (lua_State *L, int stat); + +LUALIB_API void *luaL_alloc (void *ud, void *ptr, size_t osize, + size_t nsize); + + +/* predefined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename, + const char *mode); + +#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) + +LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, + const char *name, const char *mode); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + +LUALIB_API unsigned luaL_makeseed (lua_State *L); + +LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx); + +LUALIB_API void (luaL_addgsub) (luaL_Buffer *b, const char *s, + const char *p, const char *r); +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, + const char *p, const char *r); + +LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); + +LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); + +LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1, + const char *msg, int level); + +LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, + lua_CFunction openf, int glb); + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + + +#define luaL_newlibtable(L,l) \ + lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) + +#define luaL_newlib(L,l) \ + (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) + +#define luaL_argcheck(L, cond,arg,extramsg) \ + ((void)(luai_likely(cond) || luaL_argerror(L, (arg), (extramsg)))) + +#define luaL_argexpected(L,cond,arg,tname) \ + ((void)(luai_likely(cond) || luaL_typeerror(L, (arg), (tname)))) + +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) + + +/* +** Perform arithmetic operations on lua_Integer values with wrap-around +** semantics, as the Lua core does. +*/ +#define luaL_intop(op,v1,v2) \ + ((lua_Integer)((lua_Unsigned)(v1) op (lua_Unsigned)(v2))) + + +/* push the value used to represent failure/error */ +#if defined(LUA_FAILISFALSE) +#define luaL_pushfail(L) lua_pushboolean(L, 0) +#else +#define luaL_pushfail(L) lua_pushnil(L) +#endif + + + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + +struct luaL_Buffer { + char *b; /* buffer address */ + size_t size; /* buffer size */ + size_t n; /* number of characters in buffer */ + lua_State *L; + union { + LUAI_MAXALIGN; /* ensure maximum alignment for buffer */ + char b[LUAL_BUFFERSIZE]; /* initial buffer */ + } init; +}; + + +#define luaL_bufflen(bf) ((bf)->n) +#define luaL_buffaddr(bf) ((bf)->b) + + +#define luaL_addchar(B,c) \ + ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ + ((B)->b[(B)->n++] = (c))) + +#define luaL_addsize(B,s) ((B)->n += (s)) + +#define luaL_buffsub(B,s) ((B)->n -= (s)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz); +LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz); + +#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE) + +/* }====================================================== */ + + + +/* +** {====================================================== +** File handles for IO library +** ======================================================= +*/ + +/* +** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and +** initial structure 'luaL_Stream' (it may contain other fields +** after that initial structure). +*/ + +#define LUA_FILEHANDLE "FILE*" + + +typedef struct luaL_Stream { + FILE *f; /* stream (NULL for incompletely created streams) */ + lua_CFunction closef; /* to close stream (NULL for closed streams) */ +} luaL_Stream; + +/* }====================================================== */ + + +/* +** {============================================================ +** Compatibility with deprecated conversions +** ============================================================= +*/ +#if defined(LUA_COMPAT_APIINTCASTS) + +#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a)) +#define luaL_optunsigned(L,a,d) \ + ((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d))) + +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) + +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#endif +/* }============================================================ */ + + + +#endif + + diff --git a/libs/lua/include/lua.h b/libs/lua/include/lua.h new file mode 100644 index 0000000..ab473dc --- /dev/null +++ b/libs/lua/include/lua.h @@ -0,0 +1,547 @@ +/* +** $Id: lua.h $ +** Lua - A Scripting Language +** Lua.org, PUC-Rio, Brazil (www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include +#include + + +#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2025 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +#define LUA_VERSION_MAJOR_N 5 +#define LUA_VERSION_MINOR_N 5 +#define LUA_VERSION_RELEASE_N 0 + +#define LUA_VERSION_NUM (LUA_VERSION_MAJOR_N * 100 + LUA_VERSION_MINOR_N) +#define LUA_VERSION_RELEASE_NUM (LUA_VERSION_NUM * 100 + LUA_VERSION_RELEASE_N) + + +#include "luaconf.h" + + +/* mark for precompiled code ('Lua') */ +#define LUA_SIGNATURE "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** Pseudo-indices +** (The stack size is limited to INT_MAX/2; we keep some free empty +** space after that to help overflow detection.) +*/ +#define LUA_REGISTRYINDEX (-(INT_MAX/2 + 1000)) +#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) + + +/* thread status */ +#define LUA_OK 0 +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRERR 5 + + +typedef struct lua_State lua_State; + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + +#define LUA_NUMTYPES 9 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* predefined values in the registry */ +/* index 1 is reserved for the reference mechanism */ +#define LUA_RIDX_GLOBALS 2 +#define LUA_RIDX_MAINTHREAD 3 +#define LUA_RIDX_LAST 3 + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + +/* unsigned integer type */ +typedef LUA_UNSIGNED lua_Unsigned; + +/* type for continuation-function contexts */ +typedef LUA_KCONTEXT lua_KContext; + + +/* +** Type for C functions registered with Lua +*/ +typedef int (*lua_CFunction) (lua_State *L); + +/* +** Type for continuation functions +*/ +typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx); + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud); + + +/* +** Type for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + +/* +** Type for warning functions +*/ +typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont); + + +/* +** Type used by the debug API to collect debug information +*/ +typedef struct lua_Debug lua_Debug; + + +/* +** Functions to be called by the debugger in specific events +*/ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* +** RCS ident string +*/ +extern const char lua_ident[]; + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud, unsigned seed); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); +LUA_API int (lua_closethread) (lua_State *L, lua_State *from); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +LUA_API lua_Number (lua_version) (lua_State *L); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_absindex) (lua_State *L, int idx); +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_rotate) (lua_State *L, int idx, int n); +LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); +LUA_API int (lua_checkstack) (lua_State *L, int n); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isinteger) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); +LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API lua_Unsigned (lua_rawlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** Comparison and arithmetic functions +*/ + +#define LUA_OPADD 0 /* ORDER TM, ORDER OP */ +#define LUA_OPSUB 1 +#define LUA_OPMUL 2 +#define LUA_OPMOD 3 +#define LUA_OPPOW 4 +#define LUA_OPDIV 5 +#define LUA_OPIDIV 6 +#define LUA_OPBAND 7 +#define LUA_OPBOR 8 +#define LUA_OPBXOR 9 +#define LUA_OPSHL 10 +#define LUA_OPSHR 11 +#define LUA_OPUNM 12 +#define LUA_OPBNOT 13 + +LUA_API void (lua_arith) (lua_State *L, int op); + +#define LUA_OPEQ 0 +#define LUA_OPLT 1 +#define LUA_OPLE 2 + +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len); +LUA_API const char *(lua_pushexternalstring) (lua_State *L, + const char *s, size_t len, lua_Alloc falloc, void *ud); +LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API int (lua_getglobal) (lua_State *L, const char *name); +LUA_API int (lua_gettable) (lua_State *L, int idx); +LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawget) (lua_State *L, int idx); +LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p); + +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API int (lua_getiuservalue) (lua_State *L, int idx, int n); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_setglobal) (lua_State *L, const char *name); +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_seti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API int (lua_setiuservalue) (lua_State *L, int idx, int n); + + +/* +** 'load' and 'call' functions (load and run Lua code) +*/ +LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, + lua_KContext ctx, lua_KFunction k); +#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) + +LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, + lua_KContext ctx, lua_KFunction k); +#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) + +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname, const char *mode); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx, + lua_KFunction k); +LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg, + int *nres); +LUA_API int (lua_status) (lua_State *L); +LUA_API int (lua_isyieldable) (lua_State *L); + +#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) + + +/* +** Warning-related functions +*/ +LUA_API void (lua_setwarnf) (lua_State *L, lua_WarnFunction f, void *ud); +LUA_API void (lua_warning) (lua_State *L, const char *msg, int tocont); + + +/* +** garbage-collection options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCISRUNNING 6 +#define LUA_GCGEN 7 +#define LUA_GCINC 8 +#define LUA_GCPARAM 9 + + +/* +** garbage-collection parameters +*/ +/* parameters for generational mode */ +#define LUA_GCPMINORMUL 0 /* control minor collections */ +#define LUA_GCPMAJORMINOR 1 /* control shift major->minor */ +#define LUA_GCPMINORMAJOR 2 /* control shift minor->major */ + +/* parameters for incremental mode */ +#define LUA_GCPPAUSE 3 /* size of pause between successive GCs */ +#define LUA_GCPSTEPMUL 4 /* GC "speed" */ +#define LUA_GCPSTEPSIZE 5 /* GC granularity */ + +/* number of parameters */ +#define LUA_GCPN 6 + + +LUA_API int (lua_gc) (lua_State *L, int what, ...); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); +LUA_API void (lua_len) (lua_State *L, int idx); + +#define LUA_N2SBUFFSZ 64 +LUA_API unsigned (lua_numbertocstring) (lua_State *L, int idx, char *buff); +LUA_API size_t (lua_stringtonumber) (lua_State *L, const char *s); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); + +LUA_API void (lua_toclose) (lua_State *L, int idx); +LUA_API void (lua_closeslot) (lua_State *L, int idx); + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE)) + +#define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL) +#define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL) + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) lua_pushstring(L, "" s) + +#define lua_pushglobaltable(L) \ + ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + +#define lua_insert(L,idx) lua_rotate(L, (idx), 1) + +#define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1)) + +#define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1)) + +/* }============================================================== */ + + +/* +** {============================================================== +** compatibility macros +** =============================================================== +*/ + +#define lua_newuserdata(L,s) lua_newuserdatauv(L,s,1) +#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1) +#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1) + +#define lua_resetthread(L) lua_closethread(L,NULL) + +/* }============================================================== */ + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILCALL 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + + +LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); +LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); +LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); + +LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); +LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, + int fidx2, int n2); + +LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook (lua_gethook) (lua_State *L); +LUA_API int (lua_gethookmask) (lua_State *L); +LUA_API int (lua_gethookcount) (lua_State *L); + + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ + const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ + const char *source; /* (S) */ + size_t srclen; /* (S) */ + int currentline; /* (l) */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + unsigned char nups; /* (u) number of upvalues */ + unsigned char nparams;/* (u) number of parameters */ + char isvararg; /* (u) */ + unsigned char extraargs; /* (t) number of extra arguments */ + char istailcall; /* (t) */ + int ftransfer; /* (r) index of first value transferred */ + int ntransfer; /* (r) number of transferred values */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + struct CallInfo *i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +#define LUAI_TOSTRAUX(x) #x +#define LUAI_TOSTR(x) LUAI_TOSTRAUX(x) + +#define LUA_VERSION_MAJOR LUAI_TOSTR(LUA_VERSION_MAJOR_N) +#define LUA_VERSION_MINOR LUAI_TOSTR(LUA_VERSION_MINOR_N) +#define LUA_VERSION_RELEASE LUAI_TOSTR(LUA_VERSION_RELEASE_N) + +#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE + + +/****************************************************************************** +* Copyright (C) 1994-2025 Lua.org, PUC-Rio. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/libs/lua/include/lua.hpp b/libs/lua/include/lua.hpp new file mode 100644 index 0000000..2853364 --- /dev/null +++ b/libs/lua/include/lua.hpp @@ -0,0 +1,10 @@ +// lua.hpp +// Lua header files for C++ +// 'extern "C" not supplied automatically in lua.h and other headers +// because Lua also compiles as C++ + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} diff --git a/libs/lua/include/luaconf.h b/libs/lua/include/luaconf.h new file mode 100644 index 0000000..96a7780 --- /dev/null +++ b/libs/lua/include/luaconf.h @@ -0,0 +1,745 @@ +/* +** $Id: luaconf.h $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef luaconf_h +#define luaconf_h + +#include +#include + + +/* +** =================================================================== +** General Configuration File for Lua +** +** Some definitions here can be changed externally, through the compiler +** (e.g., with '-D' options): They are commented out or protected +** by '#if !defined' guards. However, several other definitions +** should be changed directly here, either because they affect the +** Lua ABI (by making the changes here, you ensure that all software +** connected to Lua, such as C libraries, will be compiled with the same +** configuration); or because they are seldom changed. +** +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +** {==================================================================== +** System Configuration: macros to adapt (if needed) Lua to some +** particular platform, for instance restricting it to C89. +** ===================================================================== +*/ + +/* +@@ LUA_USE_C89 controls the use of non-ISO-C89 features. +** Define it if you want Lua to avoid the use of a few C99 features +** or Windows-specific features on Windows. +*/ +/* #define LUA_USE_C89 */ + + +/* +** By default, Lua on Windows use (some) specific Windows features +*/ +#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE) +#define LUA_USE_WINDOWS /* enable goodies for regular Windows */ +#endif + + +#if defined(LUA_USE_WINDOWS) +#define LUA_DL_DLL /* enable support for DLL */ +#define LUA_USE_C89 /* broadly, Windows is C89 */ +#endif + + +/* +** When POSIX DLL ('LUA_USE_DLOPEN') is enabled, the Lua stand-alone +** application will try to dynamically link a 'readline' facility +** for its REPL. In that case, LUA_READLINELIB is the name of the +** library it will look for those facilities. If lua.c cannot open +** the specified library, it will generate a warning and then run +** without 'readline'. If that macro is not defined, lua.c will not +** use 'readline'. +*/ +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#define LUA_READLINELIB "libreadline.so" +#endif + + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* macOS does not need -ldl */ +#define LUA_READLINELIB "libedit.dylib" +#endif + + +#if defined(LUA_USE_IOS) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN +#endif + + +#if defined(LUA_USE_C89) && defined(LUA_USE_POSIX) +#error "POSIX is not compatible with C89" +#endif + + +/* +@@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits. +*/ +#define LUAI_IS32INT ((UINT_MAX >> 30) >= 3) + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Number types. These options should not be +** set externally, because any other code connected to Lua must +** use the same configuration. +** =================================================================== +*/ + +/* +@@ LUA_INT_TYPE defines the type for Lua integers. +@@ LUA_FLOAT_TYPE defines the type for Lua floats. +** Lua should work fine with any mix of these options supported +** by your C compiler. The usual configurations are 64-bit integers +** and 'double' (the default), 32-bit integers and 'float' (for +** restricted platforms), and 'long'/'double' (for C compilers not +** compliant with C99, which may not have support for 'long long'). +*/ + +/* predefined options for LUA_INT_TYPE */ +#define LUA_INT_INT 1 +#define LUA_INT_LONG 2 +#define LUA_INT_LONGLONG 3 + +/* predefined options for LUA_FLOAT_TYPE */ +#define LUA_FLOAT_FLOAT 1 +#define LUA_FLOAT_DOUBLE 2 +#define LUA_FLOAT_LONGDOUBLE 3 + + +/* Default configuration ('long long' and 'double', for 64-bit Lua) */ +#define LUA_INT_DEFAULT LUA_INT_LONGLONG +#define LUA_FLOAT_DEFAULT LUA_FLOAT_DOUBLE + + +/* +@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats. +*/ +/* #define LUA_32BITS */ + + +/* +@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for +** C89 ('long' and 'double'); Windows always has '__int64', so it does +** not need to use this case. +*/ +#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS) +#define LUA_C89_NUMBERS 1 +#else +#define LUA_C89_NUMBERS 0 +#endif + + +#if defined(LUA_32BITS) /* { */ +/* +** 32-bit integers and 'float' +*/ +#if LUAI_IS32INT /* use 'int' if big enough */ +#define LUA_INT_TYPE LUA_INT_INT +#else /* otherwise use 'long' */ +#define LUA_INT_TYPE LUA_INT_LONG +#endif +#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT + +#elif LUA_C89_NUMBERS /* }{ */ +/* +** largest types available for C89 ('long' and 'double') +*/ +#define LUA_INT_TYPE LUA_INT_LONG +#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE + +#else /* }{ */ +/* use defaults */ + +#define LUA_INT_TYPE LUA_INT_DEFAULT +#define LUA_FLOAT_TYPE LUA_FLOAT_DEFAULT + +#endif /* } */ + + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Paths. +** =================================================================== +*/ + +/* +** LUA_PATH_SEP is the character that separates templates in a path. +** LUA_PATH_MARK is the string that marks the substitution points in a +** template. +** LUA_EXEC_DIR in a Windows path is replaced by the executable's +** directory. +*/ +#define LUA_PATH_SEP ";" +#define LUA_PATH_MARK "?" +#define LUA_EXEC_DIR "!" + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +** Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +** C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ + +#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#if defined(_WIN32) /* { */ +/* +** In Windows, any exclamation mark ('!') in the path is replaced by the +** path of the directory of the executable file of the current process. +*/ +#define LUA_LDIR "!\\lua\\" +#define LUA_CDIR "!\\" +#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\" + +#if !defined(LUA_PATH_DEFAULT) +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \ + LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \ + ".\\?.lua;" ".\\?\\init.lua" +#endif + +#if !defined(LUA_CPATH_DEFAULT) +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.dll;" \ + LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ + LUA_CDIR"loadall.dll;" ".\\?.dll" +#endif + +#else /* }{ */ + +#define LUA_ROOT "/usr/local/" +#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" +#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + +#if !defined(LUA_PATH_DEFAULT) +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \ + "./?.lua;" "./?/init.lua" +#endif + +#if !defined(LUA_CPATH_DEFAULT) +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so" +#endif + +#endif /* } */ + + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if !defined(LUA_DIRSEP) + +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + +#endif + + +/* +** LUA_IGMARK is a mark to ignore all after it when building the +** module name (e.g., used to build the luaopen_ function name). +** Typically, the suffix after the mark is the module version, +** as in "mod-v1.2.so". +*/ +#define LUA_IGMARK "-" + +/* }================================================================== */ + + +/* +** {================================================================== +** Marks for exported symbols in the C code +** =================================================================== +*/ + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all auxiliary library functions. +@@ LUAMOD_API is a mark for all standard library opening functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) /* { */ + +#if defined(LUA_CORE) || defined(LUA_LIB) /* { */ +#define LUA_API __declspec(dllexport) +#else /* }{ */ +#define LUA_API __declspec(dllimport) +#endif /* } */ + +#else /* }{ */ + +#define LUA_API extern + +#endif /* } */ + + +/* +** More often than not the libs go together with the core. +*/ +#define LUALIB_API LUA_API + +#if defined(__cplusplus) +/* Lua uses the "C name" when calling open functions */ +#define LUAMOD_API extern "C" +#else +#define LUAMOD_API LUA_API +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Compatibility with previous versions +** =================================================================== +*/ + +/* +@@ LUA_COMPAT_GLOBAL avoids 'global' being a reserved word +*/ +#define LUA_COMPAT_GLOBAL + + +/* +@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated +** functions in the mathematical library. +** (These functions were already officially removed in 5.3; +** nevertheless they are still available here.) +*/ +/* #define LUA_COMPAT_MATHLIB */ + + +/* +@@ The following macros supply trivial compatibility for some +** changes in the API. The macros themselves document how to +** change your code to avoid using them. +** (Once more, these macros were officially removed in 5.3, but they are +** still available here.) +*/ +#define lua_strlen(L,i) lua_rawlen(L, (i)) + +#define lua_objlen(L,i) lua_rawlen(L, (i)) + +#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) +#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Numbers (low-level part). +** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_* +** satisfy your needs. +** =================================================================== +*/ + +/* +@@ LUAI_UACNUMBER is the result of a 'default argument promotion' +@@ over a floating number. +@@ l_floatatt(x) corrects float attribute 'x' to the proper float type +** by prefixing it with one of FLT/DBL/LDBL. +@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats. +@@ LUA_NUMBER_FMT is the format for writing floats with the maximum +** number of digits that respects tostring(tonumber(numeral)) == numeral. +** (That would be floor(log10(2^n)), where n is the number of bits in +** the float mantissa.) +@@ LUA_NUMBER_FMT_N is the format for writing floats with the minimum +** number of digits that ensures tonumber(tostring(number)) == number. +** (That would be LUA_NUMBER_FMT+2.) +@@ l_mathop allows the addition of an 'l' or 'f' to all math operations. +@@ l_floor takes the floor of a float. +@@ lua_str2number converts a decimal numeral to a number. +*/ + + +/* The following definition is good for most cases here */ + +#define l_floor(x) (l_mathop(floor)(x)) + + +/* now the variable definitions */ + +#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT /* { single float */ + +#define LUA_NUMBER float + +#define l_floatatt(n) (FLT_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.7g" +#define LUA_NUMBER_FMT_N "%.9g" + +#define l_mathop(op) op##f + +#define lua_str2number(s,p) strtof((s), (p)) + + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE /* }{ long double */ + +#define LUA_NUMBER long double + +#define l_floatatt(n) (LDBL_##n) + +#define LUAI_UACNUMBER long double + +#define LUA_NUMBER_FRMLEN "L" +#define LUA_NUMBER_FMT "%.19Lg" +#define LUA_NUMBER_FMT_N "%.21Lg" + +#define l_mathop(op) op##l + +#define lua_str2number(s,p) strtold((s), (p)) + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE /* }{ double */ + +#define LUA_NUMBER double + +#define l_floatatt(n) (DBL_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.15g" +#define LUA_NUMBER_FMT_N "%.17g" + +#define l_mathop(op) op + +#define lua_str2number(s,p) strtod((s), (p)) + +#else /* }{ */ + +#error "numeric float type not defined" + +#endif /* } */ + + + +/* +@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER. +@@ LUAI_UACINT is the result of a 'default argument promotion' +@@ over a LUA_INTEGER. +@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers. +@@ LUA_INTEGER_FMT is the format for writing integers. +@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. +@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. +@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED. +@@ lua_integer2str converts an integer to a string. +*/ + + +/* The following definitions are good for most cases here */ + +#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" + +#define LUAI_UACINT LUA_INTEGER + +#define lua_integer2str(s,sz,n) \ + l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n)) + +/* +** use LUAI_UACINT here to avoid problems with promotions (which +** can turn a comparison between unsigneds into a signed comparison) +*/ +#define LUA_UNSIGNED unsigned LUAI_UACINT + + +/* now the variable definitions */ + +#if LUA_INT_TYPE == LUA_INT_INT /* { int */ + +#define LUA_INTEGER int +#define LUA_INTEGER_FRMLEN "" + +#define LUA_MAXINTEGER INT_MAX +#define LUA_MININTEGER INT_MIN + +#define LUA_MAXUNSIGNED UINT_MAX + +#elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */ + +#define LUA_INTEGER long +#define LUA_INTEGER_FRMLEN "l" + +#define LUA_MAXINTEGER LONG_MAX +#define LUA_MININTEGER LONG_MIN + +#define LUA_MAXUNSIGNED ULONG_MAX + +#elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */ + +/* use presence of macro LLONG_MAX as proxy for C99 compliance */ +#if defined(LLONG_MAX) /* { */ +/* use ISO C99 stuff */ + +#define LUA_INTEGER long long +#define LUA_INTEGER_FRMLEN "ll" + +#define LUA_MAXINTEGER LLONG_MAX +#define LUA_MININTEGER LLONG_MIN + +#define LUA_MAXUNSIGNED ULLONG_MAX + +#elif defined(LUA_USE_WINDOWS) /* }{ */ +/* in Windows, can use specific Windows types */ + +#define LUA_INTEGER __int64 +#define LUA_INTEGER_FRMLEN "I64" + +#define LUA_MAXINTEGER _I64_MAX +#define LUA_MININTEGER _I64_MIN + +#define LUA_MAXUNSIGNED _UI64_MAX + +#else /* }{ */ + +#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \ + or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)" + +#endif /* } */ + +#else /* }{ */ + +#error "numeric integer type not defined" + +#endif /* } */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Dependencies with C99 and other C details +** =================================================================== +*/ + +/* +@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89. +** (All uses in Lua have only one format item.) +*/ +#if !defined(LUA_USE_C89) +#define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i) +#else +#define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i)) +#endif + + +/* +@@ lua_strx2number converts a hexadecimal numeral to a number. +** In C99, 'strtod' does that conversion. Otherwise, you can +** leave 'lua_strx2number' undefined and Lua will provide its own +** implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_strx2number(s,p) lua_str2number(s,p) +#endif + + +/* +@@ lua_pointer2str converts a pointer to a readable string in a +** non-specified way. +*/ +#define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p) + + +/* +@@ lua_number2strx converts a float to a hexadecimal numeral. +** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that. +** Otherwise, you can leave 'lua_number2strx' undefined and Lua will +** provide its own implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_number2strx(L,b,sz,f,n) \ + ((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n))) +#endif + + +/* +** 'strtof' and 'opf' variants for math functions are not valid in +** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the +** availability of these variants. ('math.h' is already included in +** all files that use these macros.) +*/ +#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF)) +#undef l_mathop /* variants not available */ +#undef lua_str2number +#define l_mathop(op) (lua_Number)op /* no variant */ +#define lua_str2number(s,p) ((lua_Number)strtod((s), (p))) +#endif + + +/* +@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation +** functions. It must be a numerical type; Lua will use 'intptr_t' if +** available, otherwise it will use 'ptrdiff_t' (the nearest thing to +** 'intptr_t' in C89) +*/ +#define LUA_KCONTEXT ptrdiff_t + +#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \ + __STDC_VERSION__ >= 199901L +#include +#if defined(INTPTR_MAX) /* even in C99 this type is optional */ +#undef LUA_KCONTEXT +#define LUA_KCONTEXT intptr_t +#endif +#endif + + +/* +@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point). +** Change that if you do not want to use C locales. (Code using this +** macro must include the header 'locale.h'.) +*/ +#if !defined(lua_getlocaledecpoint) +#define lua_getlocaledecpoint() (localeconv()->decimal_point[0]) +#endif + + +/* +** macros to improve jump prediction, used mostly for error handling +** and debug facilities. (Some macros in the Lua API use these macros. +** Define LUA_NOBUILTIN if you do not want '__builtin_expect' in your +** code.) +*/ +#if !defined(luai_likely) + +#if defined(__GNUC__) && !defined(LUA_NOBUILTIN) +#define luai_likely(x) (__builtin_expect(((x) != 0), 1)) +#define luai_unlikely(x) (__builtin_expect(((x) != 0), 0)) +#else +#define luai_likely(x) (x) +#define luai_unlikely(x) (x) +#endif + +#endif + + + +/* }================================================================== */ + + +/* +** {================================================================== +** Language Variations +** ===================================================================== +*/ + +/* +@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some +** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from +** numbers to strings. Define LUA_NOCVTS2N to turn off automatic +** coercion from strings to numbers. +*/ +/* #define LUA_NOCVTN2S */ +/* #define LUA_NOCVTS2N */ + + +/* +@@ LUA_USE_APICHECK turns on several consistency checks on the C API. +** Define it as a help when debugging C code. +*/ +/* #define LUA_USE_APICHECK */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Macros that affect the API and must be stable (that is, must be the +** same when you compile Lua and when you compile code that links to +** Lua). +** ===================================================================== +*/ + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +#define LUA_EXTRASPACE (sizeof(void *)) + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +** of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +@@ LUAL_BUFFERSIZE is the initial buffer size used by the lauxlib +** buffer system. +*/ +#define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number))) + + +/* +@@ LUAI_MAXALIGN defines fields that, when used in a union, ensure +** maximum alignment for the other items in that union. +*/ +#define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l + +/* }================================================================== */ + + + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + +#endif + diff --git a/libs/lua/include/lualib.h b/libs/lua/include/lualib.h new file mode 100644 index 0000000..068f60a --- /dev/null +++ b/libs/lua/include/lualib.h @@ -0,0 +1,65 @@ +/* +** $Id: lualib.h $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + +/* version suffix for environment variable names */ +#define LUA_VERSUFFIX "_" LUA_VERSION_MAJOR "_" LUA_VERSION_MINOR + +#define LUA_GLIBK 1 +LUAMOD_API int (luaopen_base) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +#define LUA_LOADLIBK (LUA_GLIBK << 1) +LUAMOD_API int (luaopen_package) (lua_State *L); + + +#define LUA_COLIBNAME "coroutine" +#define LUA_COLIBK (LUA_LOADLIBK << 1) +LUAMOD_API int (luaopen_coroutine) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +#define LUA_DBLIBK (LUA_COLIBK << 1) +LUAMOD_API int (luaopen_debug) (lua_State *L); + +#define LUA_IOLIBNAME "io" +#define LUA_IOLIBK (LUA_DBLIBK << 1) +LUAMOD_API int (luaopen_io) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +#define LUA_MATHLIBK (LUA_IOLIBK << 1) +LUAMOD_API int (luaopen_math) (lua_State *L); + +#define LUA_OSLIBNAME "os" +#define LUA_OSLIBK (LUA_MATHLIBK << 1) +LUAMOD_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +#define LUA_STRLIBK (LUA_OSLIBK << 1) +LUAMOD_API int (luaopen_string) (lua_State *L); + +#define LUA_TABLIBNAME "table" +#define LUA_TABLIBK (LUA_STRLIBK << 1) +LUAMOD_API int (luaopen_table) (lua_State *L); + +#define LUA_UTF8LIBNAME "utf8" +#define LUA_UTF8LIBK (LUA_TABLIBK << 1) +LUAMOD_API int (luaopen_utf8) (lua_State *L); + + +/* open selected libraries */ +LUALIB_API void (luaL_openselectedlibs) (lua_State *L, int load, int preload); + +/* open all libraries */ +#define luaL_openlibs(L) luaL_openselectedlibs(L, ~0, 0) + + +#endif diff --git a/libs/lua/liblua55.a b/libs/lua/liblua55.a new file mode 100644 index 0000000000000000000000000000000000000000..d6ae7709d989051b4551ad6d6b5eebc648ddaeb4 GIT binary patch literal 95174 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 d1Dun;}k6LdbYpO56IH)+!pMS}jGHDbx#0 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

y=yT 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 h%+7^XczEvsXgNmV|F%A&1`a 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 zʨ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

NwtueCn~Xls=wYK@V4qLW_AfTN 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 gP^3pj^Ypa1{> literal 0 HcmV?d00001 diff --git a/lua/config.lua b/lua/config.lua new file mode 100644 index 0000000..0eda968 --- /dev/null +++ b/lua/config.lua @@ -0,0 +1,71 @@ +-- PathEditor 配置文件 +-- 用于热更新 UI 参数,无需重新编译即可调整界面 + +local config = { + -- 应用程序信息 + app = { + name = "PathEditor", + name_readonly = "PathEditor (只读模式)" + }, + + -- 对话框设置 + dialog = { + size = "800x800", + minsize = "800x800", + select_dir = "选择目录" + }, + + -- 列表控件设置 + list = { + item_padding = "5x5", + backcolor = "255 255 255" + }, + + -- 按钮设置 + button = { + rastersize = "100x32", + new = "新建(N)", + edit = "编辑(E)", + browse = "浏览(B)...", + del = "删除(D)", + up = "上移(U)", + down = "下移(O)", + clean = "一键清理", + ok = "确定", + cancel = "取消", + help = "帮助(?)" + }, + + -- 标签文本 + label = { + title = "环境变量编辑器:", + search_placeholder = "输入关键词搜索...", + tab_sys = "系统变量 (System)", + tab_user = "用户变量 (User)" + }, + + -- 布局设置 + layout = { + vbox_gap = "5", + vbox_margin = "0x0", + vbox_all_margin = "10x10", + vbox_all_gap = "5", + hbox_gap = "10", + hbox_margin = "10x10", + hbox_alignment = "ACENTER" + }, + + -- 状态栏 + status = { + normal = "状态: 就绪", + readonly = "状态: ⚠️ 只读模式 (无管理员权限)", + saving = "状态: 保存中...", + saved = "状态: ✓ 保存成功", + error = "状态: ✗ 保存失败", + deleted = "状态: 已删除选中项", + loaded = "状态: 已加载系统和用户变量", + drag_folder_only = "提示: 只能拖拽文件夹添加到 PATH" + } +} + +return config \ No newline at end of file diff --git a/src/controller/callbacks.c b/src/controller/callbacks.c index aafe76e..f5f5b0c 100644 --- a/src/controller/callbacks.c +++ b/src/controller/callbacks.c @@ -2,6 +2,7 @@ #include "core/app_context.h" #include "core/registry_service.h" #include "core/path_manager.h" +#include "core/lua_config.h" #include "utils/string_ext.h" #include "utils/os_env.h" #include "ui/ui_utils.h" @@ -117,7 +118,7 @@ int btn_browse_cb(Ihandle *self) Ihandle *dlg = IupGetDialog(self); Ihandle *filedlg = IupFileDlg(); IupSetAttribute(filedlg, "DIALOGTYPE", "DIR"); - IupSetAttribute(filedlg, "TITLE", "选择目录"); + IupSetAttribute(filedlg, "TITLE", lua_config_get_string("dialog", "select_dir")); IupPopup(filedlg, IUP_CENTER, IUP_CENTER); @@ -160,7 +161,7 @@ int btn_del_cb(Ihandle *self) Ihandle *lbl_status = IupGetDialogChild(dlg, "LBL_STATUS"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "状态: 已删除选中项"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "deleted")); return IUP_DEFAULT; } @@ -288,7 +289,7 @@ int list_dropfiles_cb(Ihandle *self, const char *filename, int num, int x, int y { Ihandle *lbl_status = IupGetDialogChild(dlg, "LBL_STATUS"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "提示: 只能拖拽文件夹添加到 PATH"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "drag_folder_only")); } return IUP_DEFAULT; @@ -331,7 +332,7 @@ int btn_ok_cb(Ihandle *self) SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG, 5000, NULL); IupMessage("成功", "系统和用户 PATH 环境变量均已更新!"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "状态: 全部保存成功"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "saved")); } else if (sys_ok) { @@ -345,7 +346,7 @@ int btn_ok_cb(Ihandle *self) { IupMessage("错误", "保存失败!"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "状态: 保存失败"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "error")); } return IUP_DEFAULT; } @@ -403,5 +404,5 @@ void load_all_paths(void) Ihandle *lbl_status = IupGetDialogChild(dlg, "LBL_STATUS"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "状态: 已加载系统和用户变量"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "loaded")); } \ No newline at end of file diff --git a/src/core/lua_config.c b/src/core/lua_config.c new file mode 100644 index 0000000..e58d1a1 --- /dev/null +++ b/src/core/lua_config.c @@ -0,0 +1,200 @@ +#include "core/lua_config.h" +#include +#include +#include +#include +#include +#include + +static lua_State* G_L = NULL; +static int G_loaded = 0; +static const char* G_config_path = "lua/config.lua"; + +static const char* get_string_default(const char* section, const char* key) +{ + if (strcmp(section, "app") == 0) + { + if (strcmp(key, "name") == 0) return "PathEditor"; + if (strcmp(key, "name_readonly") == 0) return "PathEditor (只读模式)"; + } + else if (strcmp(section, "dialog") == 0) + { + if (strcmp(key, "size") == 0) return "800x800"; + if (strcmp(key, "minsize") == 0) return "800x800"; + if (strcmp(key, "select_dir") == 0) return "选择目录"; + } + else if (strcmp(section, "list") == 0) + { + if (strcmp(key, "item_padding") == 0) return "5x5"; + if (strcmp(key, "backcolor") == 0) return "255 255 255"; + } + else if (strcmp(section, "button") == 0) + { + if (strcmp(key, "rastersize") == 0) return "100x32"; + if (strcmp(key, "new") == 0) return "新建(N)"; + if (strcmp(key, "edit") == 0) return "编辑(E)"; + if (strcmp(key, "browse") == 0) return "浏览(B)..."; + if (strcmp(key, "del") == 0) return "删除(D)"; + if (strcmp(key, "up") == 0) return "上移(U)"; + if (strcmp(key, "down") == 0) return "下移(O)"; + if (strcmp(key, "clean") == 0) return "一键清理"; + if (strcmp(key, "ok") == 0) return "确定"; + if (strcmp(key, "cancel") == 0) return "取消"; + if (strcmp(key, "help") == 0) return "帮助(?)"; + } + else if (strcmp(section, "label") == 0) + { + if (strcmp(key, "title") == 0) return "环境变量编辑器:"; + if (strcmp(key, "search_placeholder") == 0) return "输入关键词搜索..."; + if (strcmp(key, "tab_sys") == 0) return "系统变量 (System)"; + if (strcmp(key, "tab_user") == 0) return "用户变量 (User)"; + } + else if (strcmp(section, "layout") == 0) + { + if (strcmp(key, "vbox_gap") == 0) return "5"; + if (strcmp(key, "vbox_margin") == 0) return "0x0"; + if (strcmp(key, "vbox_all_margin") == 0) return "10x10"; + if (strcmp(key, "vbox_all_gap") == 0) return "5"; + if (strcmp(key, "hbox_gap") == 0) return "10"; + if (strcmp(key, "hbox_margin") == 0) return "10x10"; + if (strcmp(key, "hbox_alignment") == 0) return "ACENTER"; + } + else if (strcmp(section, "status") == 0) + { + if (strcmp(key, "normal") == 0) return "状态: 就绪"; + if (strcmp(key, "readonly") == 0) return "状态: ⚠️ 只读模式 (无管理员权限)"; + if (strcmp(key, "saving") == 0) return "状态: 保存中..."; + if (strcmp(key, "saved") == 0) return "状态: ✓ 保存成功"; + if (strcmp(key, "error") == 0) return "状态: ✗ 保存失败"; + if (strcmp(key, "deleted") == 0) return "状态: 已删除选中项"; + if (strcmp(key, "loaded") == 0) return "状态: 已加载系统和用户变量"; + if (strcmp(key, "drag_folder_only") == 0) return "提示: 只能拖拽文件夹添加到 PATH"; + } + return ""; +} + +int lua_config_init(void) +{ + if (G_L != NULL) + { + return 0; + } + + G_L = luaL_newstate(); + if (G_L == NULL) + { + return -1; + } + + luaL_openlibs(G_L); + + if (luaL_dofile(G_L, G_config_path) != LUA_OK) + { + const char* err = lua_tostring(G_L, -1); + if (err) + { + fprintf(stderr, "[Lua Config] 加载配置文件失败: %s\n", err); + } + lua_settop(G_L, 0); + G_loaded = 0; + return 0; + } + + lua_settop(G_L, 0); + G_loaded = 1; + return 0; +} + +void lua_config_destroy(void) +{ + if (G_L != NULL) + { + lua_close(G_L); + G_L = NULL; + } + G_loaded = 0; +} + +const char* lua_config_get_string(const char* section, const char* key) +{ + if (G_L == NULL || section == NULL || key == NULL) + { + return get_string_default(section, key); + } + + lua_getglobal(G_L, "config"); + if (!lua_istable(G_L, -1)) + { + lua_settop(G_L, 0); + return get_string_default(section, key); + } + + lua_getfield(G_L, -1, section); + if (!lua_istable(G_L, -1)) + { + lua_settop(G_L, 0); + return get_string_default(section, key); + } + + lua_getfield(G_L, -1, key); + if (!lua_isstring(G_L, -1)) + { + lua_settop(G_L, 0); + return get_string_default(section, key); + } + + const char* value = lua_tostring(G_L, -1); + lua_settop(G_L, 0); + + return value ? value : get_string_default(section, key); +} + +int lua_config_get_int(const char* section, const char* key, int default_value) +{ + if (G_L == NULL || section == NULL || key == NULL) + { + return default_value; + } + + lua_getglobal(G_L, "config"); + if (!lua_istable(G_L, -1)) + { + lua_settop(G_L, 0); + return default_value; + } + + lua_getfield(G_L, -1, section); + if (!lua_istable(G_L, -1)) + { + lua_settop(G_L, 0); + return default_value; + } + + lua_getfield(G_L, -1, key); + if (!lua_isnumber(G_L, -1)) + { + lua_settop(G_L, 0); + return default_value; + } + + int value = (int)lua_tointeger(G_L, -1); + lua_settop(G_L, 0); + + return value; +} + +int lua_config_reload(void) +{ + if (G_L != NULL) + { + lua_close(G_L); + G_L = NULL; + } + + return lua_config_init(); +} + +int lua_config_is_loaded(void) +{ + return G_loaded; +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 4d2323d..6dc314a 100644 --- a/src/main.c +++ b/src/main.c @@ -4,11 +4,11 @@ #include #include #include "core/app_context.h" +#include "core/lua_config.h" #include "utils/string_ext.h" #include "utils/os_env.h" #include "controller/callbacks.h" #include "ui/main_window.h" -#include "config.h" /* !编译命令: @@ -39,6 +39,11 @@ int main(int argc, char **argv) IupOpen(&argc, &argv); IupSetGlobal("UTF8MODE", "YES"); + if (lua_config_init() != 0) + { + IupMessage("警告", "Lua 配置系统初始化失败,将使用默认值"); + } + // 在管理员模式下,解决无法拖拽文件到列表框的问题 (UIPI) // 需要加载 User32.dll 获取 ChangeWindowMessageFilter 函数 HMODULE hUser32 = LoadLibraryW(L"user32.dll"); @@ -81,7 +86,7 @@ int main(int argc, char **argv) { Ihandle *lbl_status = IupGetDialogChild(dlg, "LBL_STATUS"); if (lbl_status) - IupSetAttribute(lbl_status, "TITLE", "状态: ⚠️ 只读模式 (无管理员权限)"); + IupSetAttribute(lbl_status, "TITLE", lua_config_get_string("status", "readonly")); Ihandle *btn_new = IupGetDialogChild(dlg, "BTN_NEW"); Ihandle *btn_edit = IupGetDialogChild(dlg, "BTN_EDIT"); @@ -119,6 +124,7 @@ int main(int argc, char **argv) IupMainLoop(); destroy_app_context(ctx); + lua_config_destroy(); IupClose(); return 0; diff --git a/src/ui/dialogs.c b/src/ui/dialogs.c index 5c6cc05..30b80ec 100644 --- a/src/ui/dialogs.c +++ b/src/ui/dialogs.c @@ -1,4 +1,5 @@ #include "ui/dialogs.h" +#include "core/lua_config.h" #include #include @@ -27,13 +28,13 @@ int custom_input_dialog(const char *title, const char *label_text, char *buffer, IupSetAttribute(text, "RASTERSIZE", "500x"); IupSetAttribute(text, "NAME", "INPUT_TEXT"); - Ihandle *btn_ok = IupButton("确定", NULL); + Ihandle *btn_ok = IupButton(lua_config_get_string("button", "ok"), NULL); IupSetCallback(btn_ok, "ACTION", on_dialog_ok); - IupSetAttribute(btn_ok, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_ok, "RASTERSIZE", lua_config_get_string("button", "rastersize")); - Ihandle *btn_cancel = IupButton("取消", NULL); + Ihandle *btn_cancel = IupButton(lua_config_get_string("button", "cancel"), NULL); IupSetCallback(btn_cancel, "ACTION", on_dialog_cancel); - IupSetAttribute(btn_cancel, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_cancel, "RASTERSIZE", lua_config_get_string("button", "rastersize")); Ihandle *vbox = IupVbox( IupLabel(label_text), diff --git a/src/ui/main_window.c b/src/ui/main_window.c index 6ad6bab..10465ed 100644 --- a/src/ui/main_window.c +++ b/src/ui/main_window.c @@ -1,6 +1,6 @@ #include "ui/main_window.h" #include "controller/callbacks.h" -#include "config.h" +#include "core/lua_config.h" #include // 创建路径列表控件 @@ -9,8 +9,8 @@ static Ihandle *create_path_list(const char *name) Ihandle *list = IupFlatList(); IupSetAttribute(list, "NAME", name); IupSetAttribute(list, "EXPAND", "YES"); - IupSetAttribute(list, "ITEMPADDING", UI_LIST_ITEM_PADDING); - IupSetAttribute(list, "BACKCOLOR", UI_LIST_BACKCOLOR); + 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"); @@ -21,7 +21,7 @@ static Ihandle *create_path_list(const char *name) } // 创建主窗口 -Ihandle* create_main_window(void) +Ihandle *create_main_window(void) { // 创建系统路径列表 Ihandle *list_sys = create_path_list("LIST_SYS"); @@ -32,7 +32,7 @@ Ihandle* create_main_window(void) Ihandle *txt_search = IupText(NULL); IupSetAttribute(txt_search, "NAME", "TXT_SEARCH"); IupSetAttribute(txt_search, "EXPAND", "HORIZONTAL"); - IupSetAttribute(txt_search, "CUEBANNER", "输入关键词搜索..."); + IupSetAttribute(txt_search, "CUEBANNER", lua_config_get_string("label", "search_placeholder")); IupSetCallback(txt_search, "VALUECHANGED_CB", (Icallback)txt_search_cb); // 创建选项卡 @@ -41,24 +41,24 @@ Ihandle* create_main_window(void) IupVbox(list_user, NULL), NULL); IupSetAttribute(tabs_main, "NAME", "TABS_MAIN"); - IupSetAttribute(tabs_main, "TABTITLE0", "系统变量 (System)"); - IupSetAttribute(tabs_main, "TABTITLE1", "用户变量 (User)"); + 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("新建(N)", NULL); + Ihandle *btn_new = IupButton(lua_config_get_string("button", "new"), NULL); IupSetAttribute(btn_new, "NAME", "BTN_NEW"); - Ihandle *btn_edit = IupButton("编辑(E)", NULL); + Ihandle *btn_edit = IupButton(lua_config_get_string("button", "edit"), NULL); IupSetAttribute(btn_edit, "NAME", "BTN_EDIT"); - Ihandle *btn_browse = IupButton("浏览(B)...", NULL); + Ihandle *btn_browse = IupButton(lua_config_get_string("button", "browse"), NULL); IupSetAttribute(btn_browse, "NAME", "BTN_BROWSE"); - Ihandle *btn_del = IupButton("删除(D)", NULL); + Ihandle *btn_del = IupButton(lua_config_get_string("button", "del"), NULL); IupSetAttribute(btn_del, "NAME", "BTN_DEL"); - Ihandle *btn_up = IupButton("上移(U)", NULL); + Ihandle *btn_up = IupButton(lua_config_get_string("button", "up"), NULL); IupSetAttribute(btn_up, "NAME", "BTN_UP"); - Ihandle *btn_down = IupButton("下移(O)", NULL); + Ihandle *btn_down = IupButton(lua_config_get_string("button", "down"), NULL); IupSetAttribute(btn_down, "NAME", "BTN_DOWN"); - Ihandle *btn_clean = IupButton("一键清理", NULL); + Ihandle *btn_clean = IupButton(lua_config_get_string("button", "clean"), NULL); IupSetAttribute(btn_clean, "NAME", "BTN_CLEAN"); // 设置按钮回调 @@ -71,13 +71,14 @@ Ihandle* create_main_window(void) IupSetCallback(btn_clean, "ACTION", (Icallback)btn_clean_cb); // 设置按钮大小 - IupSetAttribute(btn_new, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_edit, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_browse, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_del, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_up, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_down, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_clean, "RASTERSIZE", UI_BTN_RASTERSIZE); + 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); // 创建操作按钮垂直布局 Ihandle *vbox_btns = IupVbox( @@ -87,25 +88,25 @@ Ihandle* create_main_window(void) IupFill(), btn_up, btn_down, NULL); - IupSetAttribute(vbox_btns, "GAP", UI_VBOX_GAP); - IupSetAttribute(vbox_btns, "MARGIN", UI_VBOX_MARGIN); + 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", UI_HBOX_GAP); - IupSetAttribute(hbox_main, "MARGIN", UI_HBOX_MARGIN); + 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("状态: 就绪"); + 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("确定", NULL); + Ihandle *btn_ok = IupButton(lua_config_get_string("button", "ok"), NULL); IupSetAttribute(btn_ok, "NAME", "BTN_OK"); - Ihandle *btn_cancel = IupButton("取消", NULL); + Ihandle *btn_cancel = IupButton(lua_config_get_string("button", "cancel"), NULL); IupSetAttribute(btn_cancel, "NAME", "BTN_CANCEL"); - Ihandle *btn_help = IupButton("帮助(?)", NULL); + Ihandle *btn_help = IupButton(lua_config_get_string("button", "help"), NULL); IupSetAttribute(btn_help, "NAME", "BTN_HELP"); // 设置底部按钮回调 @@ -114,31 +115,31 @@ Ihandle* create_main_window(void) IupSetCallback(btn_help, "ACTION", (Icallback)btn_help_cb); // 设置底部按钮大小 - IupSetAttribute(btn_ok, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_cancel, "RASTERSIZE", UI_BTN_RASTERSIZE); - IupSetAttribute(btn_help, "RASTERSIZE", UI_BTN_RASTERSIZE); + 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_ok, btn_cancel, NULL); - IupSetAttribute(hbox_bottom, "GAP", UI_HBOX_GAP); - IupSetAttribute(hbox_bottom, "MARGIN", UI_HBOX_MARGIN); - IupSetAttribute(hbox_bottom, "ALIGNMENT", UI_HBOX_ALIGNMENT); + 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("环境变量编辑器:"), + IupLabel(lua_config_get_string("label", "title")), txt_search, hbox_main, hbox_bottom, NULL); - IupSetAttribute(vbox_all, "MARGIN", UI_VBOX_ALL_MARGIN); - IupSetAttribute(vbox_all, "GAP", UI_VBOX_ALL_GAP); + 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", APP_NAME); - IupSetAttribute(dlg, "RASTERSIZE", UI_DLG_SIZE); - IupSetAttribute(dlg, "MINSIZE", UI_DLG_MINSIZE); + 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");