static void Insert(void) { if (lua_isnil(lua_getparam(2))) iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), NULL, iuplua_checkihandle(3))); else iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), iuplua_checkihandle(2), iuplua_checkihandle(3))); }
static int scintilla_lineschanged_cb(Ihandle *self, Ihandle * p0, Ihandle * p1) { lua_State *L = iuplua_call_start(self, "lineschanged_cb"); iuplua_pushihandle(L, p0); iuplua_pushihandle(L, p1); return iuplua_call(L, 2); }
static int tabs_tabchange_cb(Ihandle *self, Ihandle * p0, Ihandle * p1) { lua_State *L = iuplua_call_start(self, "tabchange_cb"); iuplua_pushihandle(L, p0); iuplua_pushihandle(L, p1); return iuplua_call(L, 2); }
static void GetNextChild(void) { if (lua_isnil(lua_getparam(2))) iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), NULL)); else iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), iuplua_checkihandle(2))); }
static int PreviousField(lua_State *L) { Ihandle *h1 = iuplua_checkihandle(L,1); Ihandle *h2 = IupNextField(h1); iuplua_pushihandle(L,h2); return 1; }
static int Insert(lua_State *L) { iuplua_pushihandle(L, IupInsert(iuplua_checkihandle(L,1), iuplua_checkihandleornil(L,2), iuplua_checkihandle(L,3))); return 1; }
static int GetHandle(lua_State *L) { const char *name = luaL_checkstring(L,1); Ihandle *ih = IupGetHandle(name); iuplua_pushihandle(L,ih); return 1; }
static int GetFromC(lua_State *L) { Ihandle *n; const char *a; if (!lua_istable(L, -1)) { lua_pushstring(L, "iup.GetFromC: wrong arguments to function"); lua_error(L); return 0; } lua_pushinteger(L, 1); lua_gettable(L, -2); if (!lua_isstring(L, -1)) { lua_pushstring(L, "iup.GetFromC: wrong arguments to function"); lua_error(L); return 0; } a = lua_tostring(L, -1); n = IupGetHandle((char*)a); if(n) iuplua_pushihandle(L, n); else lua_pushnil(L); return 1; }
static int GetParent(lua_State *L) { Ihandle * ih = iuplua_checkihandle(L,1); Ihandle * parent = IupGetParent(ih); iuplua_pushihandle(L, parent); return 1; }
static int ImageFromImImage(lua_State *L) { imImage* im_image = imlua_checkimage(L, 1); Ihandle* image = IupImageFromImImage(im_image); iuplua_pushihandle(L, image); return 1; }
static int SetFocus(lua_State *L) { Ihandle *h1 = iuplua_checkihandle(L,1); Ihandle *h2 = IupSetFocus(h1); iuplua_pushihandle(L,h2); return 1; }
static int GetBrother(lua_State *L) { Ihandle * ih = iuplua_checkihandle(L,1); Ihandle * brother = IupGetBrother(ih); iuplua_pushihandle(L, brother); return 1; }
static int SetHandle(lua_State *L) { const char *name = luaL_checkstring(L,1); Ihandle *ih = iuplua_checkihandle(L,2); Ihandle *last = IupSetHandle(name, ih); iuplua_pushihandle(L, last); return 1; }
static int plot_menucontextclose_cb(Ihandle *self, Ihandle * p0, int p1, int p2) { lua_State *L = iuplua_call_start(self, "menucontextclose_cb"); iuplua_pushihandle(L, p0); lua_pushinteger(L, p1); lua_pushinteger(L, p2); return iuplua_call(L, 3); }
static int SetAttributes(lua_State *L) { Ihandle * ih = iuplua_checkihandle(L,1); const char *attributes = luaL_checkstring(L,2); IupSetAttributes(ih, attributes); iuplua_pushihandle(L,ih); return 1; }
static int GetDialogChild(lua_State *L) { Ihandle * ih = iuplua_checkihandle(L,1); const char* name = luaL_checkstring(L,2); Ihandle * child = IupGetDialogChild(ih, name); iuplua_pushihandle(L, child); return 1; }
static int GetChild(lua_State *L) { Ihandle* ih = iuplua_checkihandle(L,1); int pos = luaL_checkint(L,2); Ihandle* child = IupGetChild(ih, pos); iuplua_pushihandle(L, child); return 1; }
static int GetNextChild(lua_State *L) { Ihandle* parent = iuplua_checkihandle(L,1); Ihandle* next = iuplua_checkihandleornil(L,2); Ihandle* nextchild = IupGetNextChild(parent, next); iuplua_pushihandle(L, nextchild); return 1; }
static int matrix_menudrop_cb(Ihandle *self, Ihandle * p0, int p1, int p2) { lua_State *L = iuplua_call_start(self, "menudrop_cb"); iuplua_pushihandle(L, p0); lua_pushinteger(L, p1); lua_pushinteger(L, p2); return iuplua_call(L, 3); }
static int GetParamHandle(lua_State *L) { Ihandle *param = iuplua_checkihandle(L, 1); const char* name = luaL_checkstring(L, 2); Ihandle* control = (Ihandle*)IupGetAttribute(param, name); iuplua_pushihandle(L, control); return 1; }
static int GetParamParam(lua_State *L) { Ihandle *dialog = iuplua_checkihandle(L, 1); int param_index = (int)luaL_checkinteger(L, 2); Ihandle* param = (Ihandle*)IupGetAttributeId(dialog, "PARAM", param_index); iuplua_pushihandle(L, param); return 1; }
static int LoadImage(lua_State *L) { const char *filename = luaL_checkstring(L, 1); Ihandle* image = IupLoadImage(filename); iuplua_plugstate(L, image); iuplua_pushihandle(L, image); return 1; }
static int ParamBox(lua_State *L) { Ihandle* parent = iuplua_checkihandle(L, 1); int count = iuplua_getn(L, 2); Ihandle** params = iuplua_checkihandle_array(L, 2, count); Ihandle* param_box = IupParamBox(parent, params, count); iuplua_pushihandle(L, param_box); return 1; }
static void GetParamParam(void) { Ihandle* param; Ihandle *dialog = iuplua_checkihandle(1); int param_index = luaL_check_int(2); char param_str[50]; sprintf(param_str, "PARAM%d", param_index); param = (Ihandle*)IupGetAttribute(dialog, param_str); iuplua_pushihandle(param); }
static int GetParamParam(lua_State *L) { Ihandle *dialog = iuplua_checkihandle(L, 1); int param_index = luaL_checkinteger(L, 2); Ihandle* param; char param_str[50]; sprintf(param_str, "PARAM%d", param_index); param = (Ihandle*)IupGetAttribute(dialog, param_str); iuplua_pushihandle(L, param); return 1; }
static int matrix_dropselect_cb(Ihandle *self, int p0, int p1, Ihandle * p2, char * p3, int p4, int p5) { lua_State *L = iuplua_call_start(self, "dropselect_cb"); lua_pushinteger(L, p0); lua_pushinteger(L, p1); iuplua_pushihandle(L, p2); lua_pushstring(L, p3); lua_pushinteger(L, p4); lua_pushinteger(L, p5); return iuplua_call(L, 6); }
static int GetAttribute (lua_State *L) { Ihandle *ih = iuplua_checkihandle(L,1); const char *name = luaL_checkstring(L,2); const char *value = IupGetAttribute(ih, name); if (!value || iupATTRIB_ISINTERNAL(name)) lua_pushnil(L); else { if (iupAttribIsPointer(ih, name)) { if (ih->handle == (InativeHandle*)value) /* work around for WID, sometimes WID in Windows is not a valid pointer. Why? */ iuplua_pushihandle(L, ih); else if (iupObjectCheck((Ihandle*)value)) iuplua_pushihandle(L, (Ihandle*)value); else lua_pushlightuserdata(L, (void*)value); } else lua_pushstring(L,value); } return 1; }
lua_State* iuplua_call_start(Ihandle *ih, const char* name) { lua_State *L = iuplua_getstate(ih); /* prepare to call iup.CallMethod(name, ih, ...) */ iuplua_push_name(L, "CallMethod"); lua_pushstring(L, name); iuplua_pushihandle(L, ih); /* here there was 3 value pushed on the stack, if this changes must update callback where LUA_MULTRET is used. */ return L; }
static int param_action(Ihandle* dialog, int param_index, void* user_data) { int ret = 1; getparam_data* gp = (getparam_data*)user_data; if (gp->has_func) { lua_Object func; lua_beginblock(); func = lua_getref(gp->func_ref); iuplua_pushihandle(dialog); lua_pushnumber(param_index); lua_callfunction(func); ret = (int)luaL_check_number(1); lua_endblock(); } return ret; }
static void iuplua_pushvalue(lua_State *L, Ihandle *ih, const char* name, const char* value) { if (!value || iupATTRIB_ISINTERNAL(name)) lua_pushnil(L); else { if (iupAttribIsNotString(ih, name)) { if (iupAttribIsIhandle(ih, name)) iuplua_pushihandle(L, (Ihandle*)value); else lua_pushlightuserdata(L, (void*)value); } else /* if (!lua_stringtonumber(L, value)) -- TODO: is this worth it? valid since Lua 5.3 */ lua_pushstring(L, value); } }