/** \file * \brief IupConfig binding to Lua 5. * * See Copyright Notice in "iup.h" */ #include #include #include #include #include "iup.h" #include "iup_config.h" #include "iuplua.h" #include "il.h" static int Config(lua_State *L) { Ihandle* ih = IupConfig(); iuplua_plugstate(L, ih); iuplua_pushihandle_raw(L, ih); return 1; } static int ConfigLoad(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); int ret = IupConfigLoad(ih); lua_pushinteger(L, ret); return 1; } static int ConfigSave(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); int ret = IupConfigSave(ih); lua_pushinteger(L, ret); return 1; } static int ConfigSetVariable(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); if (lua_isnil(L, 4)) IupConfigSetVariableStr(ih, group, key, NULL); else { const char *value = luaL_checkstring(L, 4); IupConfigSetVariableStr(ih, group, key, value); } return 0; } static int ConfigSetVariableId(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); int id = (int)luaL_checkinteger(L, 4); if (lua_isnil(L, 5)) IupConfigSetVariableStrId(ih, group, key, id, NULL); else { const char *value = luaL_checkstring(L, 5); IupConfigSetVariableStrId(ih, group, key, id, value); } return 0; } static int ConfigGetVariable(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); const char* value = IupConfigGetVariableStr(ih, group, key); if (!value) lua_pushnil(L); else lua_pushstring(L, value); return 1; } static int ConfigGetVariableId(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); int id = (int)luaL_checkinteger(L, 4); const char* value = IupConfigGetVariableStrId(ih, group, key, id); if (!value) lua_pushnil(L); else lua_pushstring(L, value); return 1; } static int ConfigGetVariableDef(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); const char *def = luaL_optstring(L, 4, NULL); const char* value = IupConfigGetVariableStrDef(ih, group, key, def); if (!value) lua_pushnil(L); else lua_pushstring(L, value); return 1; } static int ConfigGetVariableIdDef(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *group = luaL_checkstring(L, 2); const char *key = luaL_checkstring(L, 3); int id = (int)luaL_checkinteger(L, 4); const char *def = luaL_optstring(L, 4, NULL); const char* value = IupConfigGetVariableStrIdDef(ih, group, key, id, def); if (!value) lua_pushnil(L); else lua_pushstring(L, value); return 1; } static int config_recent_cb(Ihandle* ih) { lua_State *L = iuplua_call_start(ih, "recent_cb"); return iuplua_call(L, 0); } static int ConfigRecentInit(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); Ihandle* menu = iuplua_checkihandle(L, 2); int max_recent = (int)luaL_checkinteger(L, 3); IupConfigRecentInit(ih, menu, config_recent_cb, max_recent); return 0; } static int ConfigRecentUpdate(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); const char *filename = luaL_checkstring(L, 2); IupConfigRecentUpdate(ih, filename); return 0; } static int ConfigDialogShow(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); Ihandle* dialog = iuplua_checkihandle(L, 2); const char *name = luaL_checkstring(L, 3); IupConfigDialogShow(ih, dialog, name); return 0; } static int ConfigDialogClosed(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L, 1); Ihandle* dialog = iuplua_checkihandle(L, 2); const char *name = luaL_checkstring(L, 3); IupConfigDialogClosed(ih, dialog, name); return 0; } void iupconfiglua_open(lua_State * L) { iuplua_register_cb(L, "RECENT_CB", (lua_CFunction)config_recent_cb, NULL); iuplua_register(L, Config, "Config"); iuplua_register(L, ConfigSetVariable, "ConfigSetVariable"); iuplua_register(L, ConfigSetVariableId, "ConfigSetVariableId"); iuplua_register(L, ConfigGetVariable, "ConfigGetVariable"); iuplua_register(L, ConfigGetVariableId, "ConfigGetVariableId"); iuplua_register(L, ConfigGetVariableDef, "ConfigGetVariableDef"); iuplua_register(L, ConfigGetVariableIdDef, "ConfigGetVariableIdDef"); iuplua_register(L, ConfigLoad, "ConfigLoad"); iuplua_register(L, ConfigSave, "ConfigSave"); iuplua_register(L, ConfigRecentInit, "ConfigRecentInit"); iuplua_register(L, ConfigRecentUpdate, "ConfigRecentUpdate"); iuplua_register(L, ConfigDialogShow, "ConfigDialogShow"); iuplua_register(L, ConfigDialogClosed, "ConfigDialogClosed"); #ifdef IUPLUA_USELOH #include "iup_config.loh" #else #ifdef IUPLUA_USELH #include "iup_config.lh" #else iuplua_dofile(L, "iup_config.lua"); #endif #endif }