diff --git a/code/nel/include/nel/gui/lua_ihm.h b/code/nel/include/nel/gui/lua_ihm.h index c19460b87..96cce4a2a 100644 --- a/code/nel/include/nel/gui/lua_ihm.h +++ b/code/nel/include/nel/gui/lua_ihm.h @@ -159,6 +159,31 @@ namespace NLGUI ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static int luaMethodCall(lua_State *ls); + + static int setOnDraw(CLuaState &ls); // params: CInterfaceGroup*, "script". return: none + static int addOnDbChange(CLuaState &ls); // params: CInterfaceGroup*, "dblist", "script". return: none + static int removeOnDbChange(CLuaState &ls);// params: CInterfaceGroup*. return: none + static int setCaptureKeyboard(CLuaState &ls); + static int resetCaptureKeyboard(CLuaState &ls); + static int getUIId(CLuaState &ls); // params: CInterfaceElement*. return: ui id (empty if error) + static int runAH(CLuaState &ls); // params: CInterfaceElement *, "ah", "params". return: none + static int getWindowSize(CLuaState &ls); + static int setTopWindow(CLuaState &ls); // set the top window + static int getTextureSize(CLuaState &ls); + static int disableModalWindow(CLuaState &ls); + static int deleteUI(CLuaState &ls); // params: CInterfaceElement*.... return: none + static int deleteReflectable(CLuaState &ls); // params: CInterfaceElement*.... return: none + static int getCurrentWindowUnder(CLuaState &ls); // params: none. return: CInterfaceElement* (nil if none) + static bool fileExists(const std::string &fileName); + static int runExprAndPushResult(CLuaState &ls, const std::string &expr); // Used by runExpr and runFct + static int runExpr(CLuaState &ls); // params: "expr". return: any of: nil,bool,string,number, RGBA, UCString + static int runFct(CLuaState &ls); // params: "expr", param1, param2.... return: any of: nil,bool,string,number, RGBA, UCString + static int runCommand(CLuaState &ls); // params: "command name", param1, param2 ... return true or false + static int isUCString(CLuaState &ls); + static int concatUCString(CLuaState &ls); // workaround for + operator that don't work in luabind for ucstrings ... + static int concatString(CLuaState &ls); // speedup concatenation of several strings + static int tableToString(CLuaState &ls); // concat element of a table to build a string + static int getPathContent(CLuaState &ls); }; } diff --git a/code/nel/src/gui/lua_ihm.cpp b/code/nel/src/gui/lua_ihm.cpp index 1194b48ec..5c3a8f5df 100644 --- a/code/nel/src/gui/lua_ihm.cpp +++ b/code/nel/src/gui/lua_ihm.cpp @@ -71,10 +71,15 @@ #include "nel/misc/time_nl.h" #include "nel/misc/path.h" #include "nel/misc/sstring.h" +#include "nel/misc/command.h" #include "nel/gui/lua_object.h" #include "nel/misc/polygon.h" #include "nel/gui/lua_manager.h" - +#include "nel/gui/widget_manager.h" +#include "nel/gui/action_handler.h" +#include "nel/gui/view_renderer.h" +#include "nel/gui/interface_expr.h" +#include "nel/misc/debug.h" // *************************************************************************** /* @@ -757,6 +762,614 @@ namespace NLGUI return numResults; } + + + // *************************************************************************** + int CLuaIHM::setOnDraw(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_setOnDraw) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceGroup*, "script". + // return: none + CLuaIHM::checkArgCount(ls, "setOnDraw", 2); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "setOnDraw() requires a UI object in param 1"); + CLuaIHM::check(ls, ls.isString(2), "setOnDraw() requires a string in param 2"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + std::string script; + ls.toString(2, script); + + // must be a group + CInterfaceGroup *group= dynamic_cast(pIE); + if(!group) + throw ELuaIHMException("setOnDraw(): '%s' is not a group", pIE->getId().c_str()); + // Set the script to be executed at each draw + group->setLuaScriptOnDraw(script); + + return 0; + } + + // *************************************************************************** + int CLuaIHM::addOnDbChange(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_addOnDbChange) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceGroup*, "dblist", "script". + // return: none + CLuaIHM::checkArgCount(ls, "addOnDbChange", 3); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "addOnDbChange() requires a UI object in param 1"); + CLuaIHM::check(ls, ls.isString(2), "addOnDbChange() requires a string in param 2"); + CLuaIHM::check(ls, ls.isString(3), "addOnDbChange() requires a string in param 3"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + std::string dbList, script; + ls.toString(2, dbList); + ls.toString(3, script); + + // must be a group + CInterfaceGroup *group= dynamic_cast(pIE); + if(!group) + throw ELuaIHMException("addOnDbChange(): '%s' is not a group", pIE->getId().c_str()); + // Set the script to be executed when the given DB change + group->addLuaScriptOnDBChange(dbList, script); + + return 0; + } + + + // *************************************************************************** + int CLuaIHM::removeOnDbChange(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_removeOnDbChange) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceGroup*, "dbList" + // return: none + CLuaIHM::checkArgCount(ls, "removeOnDbChange", 2); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "removeOnDbChange() requires a UI object in param 1"); + CLuaIHM::check(ls, ls.isString(2), "removeOnDbChange() requires a string in param 2"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + std::string dbList; + ls.toString(2, dbList); + + // must be a group + CInterfaceGroup *group= dynamic_cast(pIE); + if(!group) + throw ELuaIHMException("removeOnDbChange(): '%s' is not a group", pIE->getId().c_str()); + // Remove the script to be executed when the given DB change + group->removeLuaScriptOnDBChange(dbList); + + return 0; + } + + + + // *************************************************************************** + int CLuaIHM::setCaptureKeyboard(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_setCaptureKeyboard) + const char *funcName = "setCaptureKeyboard"; + CLuaIHM::checkArgCount(ls, funcName, 1); + CLuaIHM::checkArgTypeUIElement(ls, funcName, 1); + CCtrlBase *ctrl = dynamic_cast( CLuaIHM::getUIOnStack(ls, 1)); + if (!ctrl) + { + CLuaIHM::fails(ls, "%s waits a ui control as arg 1", funcName); + } + CWidgetManager::getInstance()->setCaptureKeyboard(ctrl); + return 0; + } + + // *************************************************************************** + int CLuaIHM::resetCaptureKeyboard(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_resetCaptureKeyboard) + const char *funcName = "resetCaptureKeyboard"; + CLuaIHM::checkArgCount(ls, funcName, 0); + CWidgetManager::getInstance()->resetCaptureKeyboard(); + return 0; + } + + // *************************************************************************** + int CLuaIHM::getUIId(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_getUIId) + CLuaStackChecker lsc(&ls, 1); + + // params: CInterfaceElement* + // return: "ui:interface:...". (empty if error) + CLuaIHM::checkArgCount(ls, "getUIId", 1); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "getUIId() requires a UI object in param 1"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + + // convert to id + if(pIE) + ls.push(pIE->getId()); + else + ls.push(""); + + return 1; + } + + + + // *************************************************************************** + int CLuaIHM::runAH(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_runAH) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceElement *, "ah", "params". + // return: none + CLuaIHM::checkArgCount(ls, "runAH", 3); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1) || ls.isNil(1), "runAH() requires a UI object in param 1 (or Nil)"); + CLuaIHM::check(ls, ls.isString(2), "runAH() requires a string in param 2"); + CLuaIHM::check(ls, ls.isString(3), "runAH() requires a string in param 3"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + std::string ah, params; + ls.toString(2, ah); + ls.toString(3, params); + + // run AH + // The element must be ctrl (or NULL) + CCtrlBase *ctrl= NULL; + if(pIE) + { + ctrl= dynamic_cast(pIE); + if(!ctrl) + throw ELuaIHMException("runAH(): '%s' is not a ctrl", pIE->getId().c_str()); + } + CAHManager::getInstance()->runActionHandler(ah, ctrl, params); + + return 0; + } + + // *************************************************************************** + int CLuaIHM::getWindowSize(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_getWindowSize) + CLuaIHM::checkArgCount(ls, "getWindowSize", 0); + uint32 w, h; + CViewRenderer::getInstance()->getScreenSize(w, h); + ls.push((double) w); + ls.push((double) h); + return 2; + } + + // *************************************************************************** + int CLuaIHM::setTopWindow(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_setTopWindow) + const char *funcName = "setTopWindow"; + CLuaIHM::checkArgCount(ls, funcName, 1); + CInterfaceGroup *wnd = dynamic_cast( CLuaIHM::getUIOnStack(ls, 1)); + if (!wnd) + { + CLuaIHM::fails(ls, "%s : interface group expected as arg 1", funcName); + } + CWidgetManager::getInstance()->setTopWindow(wnd); + return 0; + } + + int CLuaIHM::getTextureSize(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_getTextureSize) + const char *funcName = "getTextureSize"; + CLuaIHM::checkArgCount(ls, funcName, 1); + CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); + std::string textureName = ls.toString(1); + + CBitmap bitmap; + CIFile fs(CPath::lookup(textureName).c_str()); + bitmap.load(fs); + + ls.push((double) bitmap.getWidth()); + ls.push((double) bitmap.getHeight()); + + return 2; + } + + + + // *************************************************************************** + int CLuaIHM::disableModalWindow(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_disableModalWindow) + CLuaIHM::checkArgCount(ls, "disableModalWindow", 0); + CWidgetManager::getInstance()->disableModalWindow(); + return 0; + } + + // *************************************************************************** + int CLuaIHM::deleteUI(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_deleteUI) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceElement * + // return: none + CLuaIHM::checkArgCount(ls, "deleteUI", 1); + CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "deleteUI() requires a UI object in param 1"); + + // retrieve args + CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); + if(!pIE) + return 0; + + // has a parent? + CInterfaceGroup *parent= pIE->getParent(); + if(parent) + { + // correctly remove from parent + parent->delElement(pIE); + } + else + { + // just delete + delete pIE; + } + + return 0; + } + + // *************************************************************************** + int CLuaIHM::deleteReflectable(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_deleteReflectable) + CLuaStackChecker lsc(&ls, 0); + + // params: CInterfaceElement * + // return: none + CLuaIHM::checkArgCount(ls, "deleteReflectable", 1); + CLuaIHM::check(ls, CLuaIHM::isReflectableOnStack(ls, 1), "deleteReflectable() requires a reflectable C++ object in param 1"); + + // retrieve args + CReflectableRefPtrTarget *pRPT= CLuaIHM::getReflectableOnStack(ls, 1); + if(!pRPT) + return 0; + + + CInterfaceElement *pIE = dynamic_cast(pRPT); + + if (pIE) + { + // has a parent? + CInterfaceGroup *parent= pIE->getParent(); + if(parent) + { + // correctly remove from parent + parent->delElement(pIE); + } + } + + // just delete + delete pIE; + + return 0; + } + + + int CLuaIHM::getCurrentWindowUnder(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_getCurrentWindowUnder) + CLuaStackChecker lsc(&ls, 1); + CInterfaceElement *pIE= CWidgetManager::getInstance()->getCurrentWindowUnder(); + if(!pIE) + { + ls.pushNil(); + nlerror("getCurrentWindowUnder(): No UICaller found. return Nil"); + } + else + { + CLuaIHM::pushUIOnStack(ls, pIE); + } + return 1; + } + + // *************************************************************************** + bool CLuaIHM::fileExists(const std::string &fileName) + { + //H_AUTO(Lua_CLuaIHM_fileExists) + return CPath::exists(fileName); + } + + // *************************************************************************** + int CLuaIHM::runExprAndPushResult(CLuaState &ls, const std::string &expr) + { + //H_AUTO(Lua_CLuaIHM_runExprAndPushResult) + // Execute expression + CInterfaceExprValue value; + if (CInterfaceExpr::eval(expr, value, NULL)) + { + switch(value.getType()) + { + case CInterfaceExprValue::Boolean: + ls.push(value.getBool()); + break; + case CInterfaceExprValue::Integer: + ls.push((double)value.getInteger()); + break; + case CInterfaceExprValue::Double: + ls.push(value.getDouble()); + break; + case CInterfaceExprValue::String: + { + ucstring ucstr= value.getUCString(); + // Yoyo: dynamically decide whether must return a string or a ucstring + bool mustUseUCString= false; + for (uint i = 0; i < ucstr.size (); i++) + { + if (ucstr[i] > 255) + { + mustUseUCString= true; + break; + } + } + // push a ucstring? + if(mustUseUCString) + { + #if LUABIND_VERSION > 600 + luabind::detail::push(ls.getStatePointer(), ucstr); + #else + luabind::object obj(ls.getStatePointer(), ucstr); + obj.pushvalue(); + #endif + } + else + { + ls.push(ucstr.toString()); + } + break; + } + case CInterfaceExprValue::RGBA: + { + CRGBA color = value.getRGBA(); + #if LUABIND_VERSION > 600 + luabind::detail::push(ls.getStatePointer(), color); + #else + luabind::object obj(ls.getStatePointer(), color); + obj.pushvalue(); + #endif + break; + } + break; + case CInterfaceExprValue::UserType: // Yoyo: don't care UserType... + default: + ls.pushNil(); + break; + } + } + else + ls.pushNil(); + + return 1; + } + + // *************************************************************************** + int CLuaIHM::runExpr(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_runExpr) + CLuaStackChecker lsc(&ls, 1); + + // params: "expr". + // return: any of: nil, bool, string, number, RGBA, UCString + CLuaIHM::checkArgCount(ls, "runExpr", 1); + CLuaIHM::check(ls, ls.isString(1), "runExpr() requires a string in param 1"); + + // retrieve args + std::string expr; + ls.toString(1, expr); + + // run expression and push result + return runExprAndPushResult(ls, expr); + } + + // *************************************************************************** + int CLuaIHM::runFct(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_runFct) + CLuaStackChecker lsc(&ls, 1); + + // params: "expr", param1, param2... + // return: any of: nil, bool, string, number, RGBA, UCString + CLuaIHM::checkArgMin(ls, "runFct", 1); + CLuaIHM::check(ls, ls.isString(1), "runExpr() requires a string in param 1"); + + // retrieve fct + std::string expr; + ls.toString(1, expr); + expr+= "("; + + // retrieve params + uint top= ls.getTop(); + for(uint i=2;i<=top;i++) + { + if(i>2) + expr+= ", "; + + // If it is a number + if(ls.type(i)==LUA_TNUMBER) + { + std::string paramValue; + ls.toString(i, paramValue); // nb: transformed to a string in the stack + expr+= paramValue; + } + // else suppose a string + else + { + // must enclose with "'" + std::string paramValue; + ls.toString(i, paramValue); + expr+= std::string("'") + paramValue + std::string("'") ; + } + } + + // end fct call + expr+= ")"; + + + // run expression and push result + return runExprAndPushResult(ls, expr); + } + + // *************************************************************************** + int CLuaIHM::runCommand(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_runCommand) + CLuaStackChecker lsc(&ls, 1); + if (ls.empty()) + { + nlwarning("'runCommand' : Command name expected"); + ls.push(false); + return 1; + } + const char *commandName = ls.toString(1); + if (!commandName) + { + nlwarning("'runCommand' : Bad command name"); + ls.push(false); + return 1; + } + if (!NLMISC::ICommand::LocalCommands || !NLMISC::ICommand::LocalCommands->count(ls.toString(1))) + { + nlwarning("'runCommand' : Command %s not found", ls.toString(1)); + ls.push(false); + return 1; + } + std::string rawCommandString = ls.toString(1); + NLMISC::ICommand *command = (*NLMISC::ICommand::LocalCommands)[ls.toString(1)]; + nlassert(command); + std::vector args(ls.getTop() - 1); + for(uint k = 2; k <= (uint) ls.getTop(); ++k) + { + if (ls.toString(k)) + { + args[k - 2] = ls.toString(k); + rawCommandString += " " + std::string(ls.toString(k)); + } + } + + ls.push(command->execute(rawCommandString, args, NLMISC::ErrorLog(), false, true)); + return 1; + } + + // *************************************************************************** + int CLuaIHM::isUCString(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_isUCString) + const char *funcName = "isUCString"; + CLuaIHM::checkArgCount(ls, funcName, 1); + ls.push(CLuaIHM::isUCStringOnStack(ls, 1)); + return 1; + } + + // *************************************************************************** + int CLuaIHM::concatUCString(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_concatUCString) + const char *funcName = "concatUCString"; + ucstring result; + for (uint k = 1; k <= (uint) ls.getTop(); ++k) + { + //nlwarning("arg %d = %s", k, ls.getTypename(ls.type(k))); + ucstring part; + if (ls.isString(k)) + { + part.fromUtf8(ls.toString(k)); + } + else + { + CLuaIHM::checkArgTypeUCString(ls, funcName, k); + nlverify(CLuaIHM::getUCStringOnStack(ls, k, part)); + } + result += part; + } + CLuaIHM::push(ls, result); + return 1; + } + + // *************************************************************************** + int CLuaIHM::concatString(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_concatUCString) + const char *funcName = "concatString"; + std::string result; + uint stackSize = ls.getTop(); + for (uint k = 1; k <= stackSize; ++k) + { + CLuaIHM::checkArgType(ls, funcName, k, LUA_TSTRING); + result += ls.toString(k); + } + ls.push(result); + return 1; + } + + // *************************************************************************** + int CLuaIHM::tableToString(CLuaState &ls) + { + const char *funcName = "tableToString"; + CLuaIHM::checkArgCount(ls, funcName, 1); + CLuaIHM::checkArgType(ls, funcName, 1, LUA_TTABLE); + uint length = 0; + // compute size + ls.pushNil(); + while (ls.next(-2)) + { + ls.toString(-1); + length += (uint)ls.strlen(-1); + ls.pop(2); + } + std::string result; + result.resize(length); + char *dest = &result[0]; + // concatenate + ls.pushNil(); + while (ls.next(-2)) + { + uint length = (uint)ls.strlen(-1); + if (length) + { + memcpy(dest, ls.toString(-1), length); + } + dest += length; + ls.pop(2); + } + ls.push(result); + return 1; + } + + + int CLuaIHM::getPathContent(CLuaState &ls) + { + //H_AUTO(Lua_CLuaIHM_getPathContent) + const char *funcName = "getPathContent"; + CLuaIHM::checkArgCount(ls, funcName, 1); + CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); + std::vector files; + NLMISC::CPath::getPathContent(ls.toString(1), false, false, true, files); + ls.newTable(); + for(uint k = 0; k < files.size(); ++k) + { + ls.push((double) k); + ls.push(files[k]); + ls.setTable(-3); + } + return 1; + } + + + + // *************************************************************************** void CLuaIHM::luaValueFromReflectedProperty(CLuaState &ls, CReflectable &reflectedObject, const CReflectedProperty &property) { @@ -972,6 +1585,28 @@ namespace NLGUI // *** Register Functions + ls.registerFunc("setOnDraw", setOnDraw); + ls.registerFunc("setCaptureKeyboard", setCaptureKeyboard); + ls.registerFunc("resetCaptureKeyboard", resetCaptureKeyboard); + ls.registerFunc("setTopWindow", setTopWindow); + ls.registerFunc("addOnDbChange", addOnDbChange); + ls.registerFunc("removeOnDbChange", removeOnDbChange); + ls.registerFunc("getUIId", getUIId); + ls.registerFunc("runAH", runAH); + ls.registerFunc("deleteUI", deleteUI); + ls.registerFunc("deleteReflectable", deleteReflectable); + ls.registerFunc("getWindowSize", getWindowSize); + ls.registerFunc("getTextureSize", getTextureSize); + ls.registerFunc("disableModalWindow", disableModalWindow); + ls.registerFunc("isUCString", isUCString); + ls.registerFunc("concatUCString", concatUCString); + ls.registerFunc("concatString", concatString); + ls.registerFunc("tableToString", tableToString); + ls.registerFunc("getCurrentWindowUnder", getCurrentWindowUnder); + ls.registerFunc("runExpr", runExpr); + ls.registerFunc("runFct", runFct); + ls.registerFunc("runCommand", runCommand); + ls.registerFunc("getPathContent", getPathContent); // Through LUABind API lua_State *L= ls.getStatePointer(); @@ -990,7 +1625,8 @@ namespace NLGUI #endif luabind::def("fileLookup", CMiscFunctions::fileLookup), - luabind::def("shellExecute", CMiscFunctions::shellExecute) + luabind::def("shellExecute", CMiscFunctions::shellExecute), + LUABIND_FUNC(fileExists) ]; // inside i18n table diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp index 505bc1fd2..e1e73deed 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp @@ -362,55 +362,33 @@ void CLuaIHMRyzom::RegisterRyzomFunctions( NLGUI::CLuaState &ls ) globals.setNil("__cfmt"); // remove temp metatable ls.registerFunc( "getUI", getUI ); - ls.registerFunc("setOnDraw", setOnDraw); - ls.registerFunc("setCaptureKeyboard", setCaptureKeyboard); - ls.registerFunc("resetCaptureKeyboard", resetCaptureKeyboard); ls.registerFunc("validMessageBox", validMessageBox); - ls.registerFunc("setTopWindow", setTopWindow); - ls.registerFunc("concatUCString", concatUCString); - ls.registerFunc("concatString", concatString); - ls.registerFunc("tableToString", tableToString); - ls.registerFunc("addOnDbChange", addOnDbChange); - ls.registerFunc("removeOnDbChange", removeOnDbChange); ls.registerFunc("getUICaller", getUICaller); - ls.registerFunc("getCurrentWindowUnder", getCurrentWindowUnder); ls.registerFunc("getUI", getUI); ls.registerFunc("getIndexInDB", getIndexInDB); - ls.registerFunc("getUIId", getUIId); ls.registerFunc("createGroupInstance", createGroupInstance); ls.registerFunc("createRootGroupInstance", createRootGroupInstance); ls.registerFunc("createUIElement", createUIElement); ls.registerFunc("launchContextMenuInGame", launchContextMenuInGame); ls.registerFunc("parseInterfaceFromString", parseInterfaceFromString); ls.registerFunc("updateAllLocalisedElements", updateAllLocalisedElements); - ls.registerFunc("runAH", runAH); - ls.registerFunc("runExpr", runExpr); - ls.registerFunc("runFct", runFct); - ls.registerFunc("runCommand", runCommand); ls.registerFunc("formatUI", formatUI); ls.registerFunc("formatDB", formatDB); - ls.registerFunc("deleteUI", deleteUI); - ls.registerFunc("deleteReflectable", deleteReflectable); ls.registerFunc("dumpUI", dumpUI); ls.registerFunc("setKeyboardContext", setKeyboardContext); ls.registerFunc("breakPoint", breakPoint); - ls.registerFunc("getWindowSize", getWindowSize); ls.registerFunc("setTextFormatTaged", setTextFormatTaged); ls.registerFunc("initEmotesMenu", initEmotesMenu); - ls.registerFunc("isUCString", isUCString); ls.registerFunc("hideAllWindows", hideAllWindows); ls.registerFunc("hideAllNonSavableWindows", hideAllNonSavableWindows); ls.registerFunc("getDesktopIndex", getDesktopIndex); ls.registerFunc("setLuaBreakPoint", setLuaBreakPoint); ls.registerFunc("getMainPageURL", getMainPageURL); ls.registerFunc("getCharSlot", getCharSlot); - ls.registerFunc("getPathContent", getPathContent); ls.registerFunc("getServerSeason", getServerSeason); ls.registerFunc("computeCurrSeason", computeCurrSeason); ls.registerFunc("getAutoSeason", getAutoSeason); - ls.registerFunc("getTextureSize", getTextureSize); ls.registerFunc("enableModalWindow", enableModalWindow); - ls.registerFunc("disableModalWindow", disableModalWindow); ls.registerFunc("getPlayerPos", getPlayerPos); ls.registerFunc("getPlayerFront", getPlayerFront); ls.registerFunc("getPlayerDirection", getPlayerDirection); @@ -497,7 +475,6 @@ void CLuaIHMRyzom::RegisterRyzomFunctions( NLGUI::CLuaState &ls ) LUABIND_FUNC(getFirstTribeFameIndex), LUABIND_FUNC(getNbTribeFameIndex), LUABIND_FUNC(getClientCfg), - LUABIND_FUNC(fileExists), LUABIND_FUNC(sendMsgToServer), LUABIND_FUNC(sendMsgToServerPvpTag), LUABIND_FUNC(isGuildQuitAvailable), @@ -611,260 +588,6 @@ int CLuaIHMRyzom::getUI(CLuaState &ls) return 1; } -// *************************************************************************** -int CLuaIHMRyzom::setCaptureKeyboard(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_setCaptureKeyboard) - const char *funcName = "setCaptureKeyboard"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CLuaIHM::checkArgTypeUIElement(ls, funcName, 1); - CCtrlBase *ctrl = dynamic_cast( CLuaIHM::getUIOnStack(ls, 1)); - if (!ctrl) - { - CLuaIHM::fails(ls, "%s waits a ui control as arg 1", funcName); - } - CInterfaceManager *im = CInterfaceManager::getInstance(); - CWidgetManager::getInstance()->setCaptureKeyboard(ctrl); - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::resetCaptureKeyboard(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_resetCaptureKeyboard) - const char *funcName = "resetCaptureKeyboard"; - CLuaIHM::checkArgCount(ls, funcName, 0); - CInterfaceManager *im = CInterfaceManager::getInstance(); - CWidgetManager::getInstance()->resetCaptureKeyboard(); - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::setOnDraw(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_setOnDraw) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceGroup*, "script". - // return: none - CLuaIHM::checkArgCount(ls, "setOnDraw", 2); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "setOnDraw() requires a UI object in param 1"); - CLuaIHM::check(ls, ls.isString(2), "setOnDraw() requires a string in param 2"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - std::string script; - ls.toString(2, script); - - // must be a group - CInterfaceGroup *group= dynamic_cast(pIE); - if(!group) - throw ELuaIHMException("setOnDraw(): '%s' is not a group", pIE->getId().c_str()); - // Set the script to be executed at each draw - group->setLuaScriptOnDraw(script); - - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::addOnDbChange(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_addOnDbChange) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceGroup*, "dblist", "script". - // return: none - CLuaIHM::checkArgCount(ls, "addOnDbChange", 3); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "addOnDbChange() requires a UI object in param 1"); - CLuaIHM::check(ls, ls.isString(2), "addOnDbChange() requires a string in param 2"); - CLuaIHM::check(ls, ls.isString(3), "addOnDbChange() requires a string in param 3"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - std::string dbList, script; - ls.toString(2, dbList); - ls.toString(3, script); - - // must be a group - CInterfaceGroup *group= dynamic_cast(pIE); - if(!group) - throw ELuaIHMException("addOnDbChange(): '%s' is not a group", pIE->getId().c_str()); - // Set the script to be executed when the given DB change - group->addLuaScriptOnDBChange(dbList, script); - - return 0; -} - - -// *************************************************************************** -int CLuaIHMRyzom::removeOnDbChange(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_removeOnDbChange) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceGroup*, "dbList" - // return: none - CLuaIHM::checkArgCount(ls, "removeOnDbChange", 2); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "removeOnDbChange() requires a UI object in param 1"); - CLuaIHM::check(ls, ls.isString(2), "removeOnDbChange() requires a string in param 2"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - std::string dbList; - ls.toString(2, dbList); - - // must be a group - CInterfaceGroup *group= dynamic_cast(pIE); - if(!group) - throw ELuaIHMException("removeOnDbChange(): '%s' is not a group", pIE->getId().c_str()); - // Remove the script to be executed when the given DB change - group->removeLuaScriptOnDBChange(dbList); - - return 0; -} - - -// *************************************************************************** -int CLuaIHMRyzom::runAH(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_runAH) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceElement *, "ah", "params". - // return: none - CLuaIHM::checkArgCount(ls, "runAH", 3); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1) || ls.isNil(1), "runAH() requires a UI object in param 1 (or Nil)"); - CLuaIHM::check(ls, ls.isString(2), "runAH() requires a string in param 2"); - CLuaIHM::check(ls, ls.isString(3), "runAH() requires a string in param 3"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - std::string ah, params; - ls.toString(2, ah); - ls.toString(3, params); - - // run AH - CInterfaceManager *pIM= CInterfaceManager::getInstance(); - // The element must be ctrl (or NULL) - CCtrlBase *ctrl= NULL; - if(pIE) - { - ctrl= dynamic_cast(pIE); - if(!ctrl) - throw ELuaIHMException("runAH(): '%s' is not a ctrl", pIE->getId().c_str()); - } - CAHManager::getInstance()->runActionHandler(ah, ctrl, params); - - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::runExpr(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_runExpr) - CLuaStackChecker lsc(&ls, 1); - - // params: "expr". - // return: any of: nil, bool, string, number, RGBA, UCString - CLuaIHM::checkArgCount(ls, "runExpr", 1); - CLuaIHM::check(ls, ls.isString(1), "runExpr() requires a string in param 1"); - - // retrieve args - std::string expr; - ls.toString(1, expr); - - // run expression and push result - return runExprAndPushResult(ls, expr); -} - -// *************************************************************************** -int CLuaIHMRyzom::runFct(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_runFct) - CLuaStackChecker lsc(&ls, 1); - - // params: "expr", param1, param2... - // return: any of: nil, bool, string, number, RGBA, UCString - CLuaIHM::checkArgMin(ls, "runFct", 1); - CLuaIHM::check(ls, ls.isString(1), "runExpr() requires a string in param 1"); - - // retrieve fct - std::string expr; - ls.toString(1, expr); - expr+= "("; - - // retrieve params - uint top= ls.getTop(); - for(uint i=2;i<=top;i++) - { - if(i>2) - expr+= ", "; - - // If it is a number - if(ls.type(i)==LUA_TNUMBER) - { - std::string paramValue; - ls.toString(i, paramValue); // nb: transformed to a string in the stack - expr+= paramValue; - } - // else suppose a string - else - { - // must enclose with "'" - std::string paramValue; - ls.toString(i, paramValue); - expr+= std::string("'") + paramValue + std::string("'") ; - } - } - - // end fct call - expr+= ")"; - - - // run expression and push result - return runExprAndPushResult(ls, expr); -} - -// *************************************************************************** -int CLuaIHMRyzom::runCommand(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_runCommand) - CLuaStackChecker lsc(&ls, 1); - if (ls.empty()) - { - nlwarning("'runCommand' : Command name expected"); - ls.push(false); - return 1; - } - const char *commandName = ls.toString(1); - if (!commandName) - { - nlwarning("'runCommand' : Bad command name"); - ls.push(false); - return 1; - } - if (!NLMISC::ICommand::LocalCommands || !NLMISC::ICommand::LocalCommands->count(ls.toString(1))) - { - nlwarning("'runCommand' : Command %s not found", ls.toString(1)); - ls.push(false); - return 1; - } - std::string rawCommandString = ls.toString(1); - NLMISC::ICommand *command = (*NLMISC::ICommand::LocalCommands)[ls.toString(1)]; - nlassert(command); - std::vector args(ls.getTop() - 1); - for(uint k = 2; k <= (uint) ls.getTop(); ++k) - { - if (ls.toString(k)) - { - args[k - 2] = ls.toString(k); - rawCommandString += " " + std::string(ls.toString(k)); - } - } - - ls.push(command->execute(rawCommandString, args, g_log, false, true)); - return 1; -} // *************************************************************************** int CLuaIHMRyzom::formatUI(CLuaState &ls) @@ -939,74 +662,6 @@ int CLuaIHMRyzom::formatDB(CLuaState &ls) return 1; } -// *************************************************************************** -int CLuaIHMRyzom::deleteUI(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_deleteUI) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceElement * - // return: none - CLuaIHM::checkArgCount(ls, "deleteUI", 1); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "deleteUI() requires a UI object in param 1"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - if(!pIE) - return 0; - - // has a parent? - CInterfaceGroup *parent= pIE->getParent(); - if(parent) - { - // correctly remove from parent - parent->delElement(pIE); - } - else - { - // just delete - delete pIE; - } - - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::deleteReflectable(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_deleteReflectable) - CLuaStackChecker lsc(&ls, 0); - - // params: CInterfaceElement * - // return: none - CLuaIHM::checkArgCount(ls, "deleteReflectable", 1); - CLuaIHM::check(ls, CLuaIHM::isReflectableOnStack(ls, 1), "deleteReflectable() requires a reflectable C++ object in param 1"); - - // retrieve args - CReflectableRefPtrTarget *pRPT= CLuaIHM::getReflectableOnStack(ls, 1); - if(!pRPT) - return 0; - - - CInterfaceElement *pIE = dynamic_cast(pRPT); - - if (pIE) - { - // has a parent? - CInterfaceGroup *parent= pIE->getParent(); - if(parent) - { - // correctly remove from parent - parent->delElement(pIE); - } - } - - // just delete - delete pIE; - - return 0; -} - // *************************************************************************** int CLuaIHMRyzom::dumpUI(CLuaState &ls) { @@ -1066,97 +721,6 @@ int CLuaIHMRyzom::validMessageBox(CLuaState &ls) return 0; } -// *************************************************************************** -int CLuaIHMRyzom::setTopWindow(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_setTopWindow) - const char *funcName = "setTopWindow"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CInterfaceGroup *wnd = dynamic_cast( CLuaIHM::getUIOnStack(ls, 1)); - if (!wnd) - { - CLuaIHM::fails(ls, "%s : interface group expected as arg 1", funcName); - } - CInterfaceManager *im = CInterfaceManager::getInstance(); - CWidgetManager::getInstance()->setTopWindow(wnd); - return 0; -} - -// *************************************************************************** -int CLuaIHMRyzom::concatUCString(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_concatUCString) - const char *funcName = "concatUCString"; - ucstring result; - for (uint k = 1; k <= (uint) ls.getTop(); ++k) - { - //nlwarning("arg %d = %s", k, ls.getTypename(ls.type(k))); - ucstring part; - if (ls.isString(k)) - { - part.fromUtf8(ls.toString(k)); - } - else - { - CLuaIHM::checkArgTypeUCString(ls, funcName, k); - nlverify(CLuaIHM::getUCStringOnStack(ls, k, part)); - } - result += part; - } - CLuaIHM::push(ls, result); - return 1; -} - -// *************************************************************************** -int CLuaIHMRyzom::concatString(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_concatUCString) - const char *funcName = "concatString"; - std::string result; - uint stackSize = ls.getTop(); - for (uint k = 1; k <= stackSize; ++k) - { - CLuaIHM::checkArgType(ls, funcName, k, LUA_TSTRING); - result += ls.toString(k); - } - ls.push(result); - return 1; -} - -// *************************************************************************** -int CLuaIHMRyzom::tableToString(CLuaState &ls) -{ - const char *funcName = "tableToString"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CLuaIHM::checkArgType(ls, funcName, 1, LUA_TTABLE); - uint length = 0; - // compute size - ls.pushNil(); - while (ls.next(-2)) - { - ls.toString(-1); - length += (uint)ls.strlen(-1); - ls.pop(2); - } - std::string result; - result.resize(length); - char *dest = &result[0]; - // concatenate - ls.pushNil(); - while (ls.next(-2)) - { - uint length = (uint)ls.strlen(-1); - if (length) - { - memcpy(dest, ls.toString(-1), length); - } - dest += length; - ls.pop(2); - } - ls.push(result); - return 1; -} - // *************************************************************************** int CLuaIHMRyzom::breakPoint(CLuaState &ls) { @@ -1174,21 +738,6 @@ int CLuaIHMRyzom::breakPoint(CLuaState &ls) } - -// *************************************************************************** -int CLuaIHMRyzom::getWindowSize(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_getWindowSize) - CLuaIHM::checkArgCount(ls, "getWindowSize", 0); - CInterfaceManager *pIM= CInterfaceManager::getInstance(); - uint32 w, h; - CViewRenderer::getInstance()->getScreenSize(w, h); - ls.push((double) w); - ls.push((double) h); - return 2; -} - - // *************************************************************************** int CLuaIHMRyzom::setTextFormatTaged(CLuaState &ls) { @@ -1412,16 +961,6 @@ int CLuaIHMRyzom::initEmotesMenu(CLuaState &ls) return 1; } -// *************************************************************************** -int CLuaIHMRyzom::isUCString(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_isUCString) - const char *funcName = "isUCString"; - CLuaIHM::checkArgCount(ls, funcName, 1); - ls.push(CLuaIHM::isUCStringOnStack(ls, 1)); - return 1; -} - // *************************************************************************** int CLuaIHMRyzom::hideAllWindows(CLuaState &/* ls */) { @@ -1486,25 +1025,6 @@ int CLuaIHMRyzom::getCharSlot(CLuaState &ls) return 1; } - -int CLuaIHMRyzom::getPathContent(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_getPathContent) - const char *funcName = "getPathContent"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); - std::vector files; - NLMISC::CPath::getPathContent(ls.toString(1), false, false, true, files); - ls.newTable(); - for(uint k = 0; k < files.size(); ++k) - { - ls.push((double) k); - ls.push(files[k]); - ls.setTable(-3); - } - return 1; -} - int CLuaIHMRyzom::getServerSeason(CLuaState &ls) { //H_AUTO(Lua_CLuaIHM_getServerSeason) @@ -1533,27 +1053,6 @@ int CLuaIHMRyzom::getAutoSeason(CLuaState &ls) return 1; } - - -int CLuaIHMRyzom::getTextureSize(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_getTextureSize) - const char *funcName = "getTextureSize"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); - std::string textureName = ls.toString(1); - - CBitmap bitmap; - CIFile fs(CPath::lookup(textureName).c_str()); - bitmap.load(fs); - - ls.push((double) bitmap.getWidth()); - ls.push((double) bitmap.getHeight()); - - return 2; -} - - int CLuaIHMRyzom::enableModalWindow(CLuaState &ls) { //H_AUTO(Lua_CLuaIHM_enableModalWindow) @@ -1592,16 +1091,6 @@ int CLuaIHMRyzom::enableModalWindow(CLuaState &ls) return 0; } -// *************************************************************************** -int CLuaIHMRyzom::disableModalWindow(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_disableModalWindow) - CLuaIHM::checkArgCount(ls, "disableModalWindow", 0); - CInterfaceManager *pIM= CInterfaceManager::getInstance(); - CWidgetManager::getInstance()->disableModalWindow(); - return 0; -} - // *************************************************************************** int CLuaIHMRyzom::getPlayerPos(CLuaState &ls) { @@ -1988,47 +1477,6 @@ int CLuaIHMRyzom::getUICaller(CLuaState &ls) return 1; } -int CLuaIHMRyzom::getCurrentWindowUnder(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_getCurrentWindowUnder) - CLuaStackChecker lsc(&ls, 1); - CInterfaceManager *im = CInterfaceManager::getInstance(); - CInterfaceElement *pIE= CWidgetManager::getInstance()->getCurrentWindowUnder(); - if(!pIE) - { - ls.pushNil(); - debugInfo(toString("getCurrentWindowUnder(): No UICaller found. return Nil")); - } - else - { - CLuaIHM::pushUIOnStack(ls, pIE); - } - return 1; -} - -// *************************************************************************** -int CLuaIHMRyzom::getUIId(CLuaState &ls) -{ - //H_AUTO(Lua_CLuaIHM_getUIId) - CLuaStackChecker lsc(&ls, 1); - - // params: CInterfaceElement* - // return: "ui:interface:...". (empty if error) - CLuaIHM::checkArgCount(ls, "getUIId", 1); - CLuaIHM::check(ls, CLuaIHM::isUIOnStack(ls, 1), "getUIId() requires a UI object in param 1"); - - // retrieve args - CInterfaceElement *pIE= CLuaIHM::getUIOnStack(ls, 1); - - // convert to id - if(pIE) - ls.push(pIE->getId()); - else - ls.push(""); - - return 1; -} - // *************************************************************************** int CLuaIHMRyzom::getIndexInDB(CLuaState &ls) { @@ -3009,13 +2457,6 @@ string CLuaIHMRyzom::getClientCfg(const string &varName) return ClientCfg.readString(varName); } -// *************************************************************************** -bool CLuaIHMRyzom::fileExists(const string &fileName) -{ - //H_AUTO(Lua_CLuaIHM_fileExists) - return CPath::exists(fileName); -} - // *************************************************************************** void CLuaIHMRyzom::sendMsgToServer(const std::string &sMsg) { @@ -3438,74 +2879,4 @@ std::string CLuaIHMRyzom::createGotoFileButtonTag(const char *fileName, uint lin return ""; } -// *************************************************************************** -int CLuaIHMRyzom::runExprAndPushResult(CLuaState &ls, const std::string &expr) -{ - //H_AUTO(Lua_CLuaIHM_runExprAndPushResult) - // Execute expression - CInterfaceExprValue value; - if (CInterfaceExpr::eval(expr, value, NULL)) - { - switch(value.getType()) - { - case CInterfaceExprValue::Boolean: - ls.push(value.getBool()); - break; - case CInterfaceExprValue::Integer: - ls.push((double)value.getInteger()); - break; - case CInterfaceExprValue::Double: - ls.push(value.getDouble()); - break; - case CInterfaceExprValue::String: - { - ucstring ucstr= value.getUCString(); - // Yoyo: dynamically decide whether must return a string or a ucstring - bool mustUseUCString= false; - for (uint i = 0; i < ucstr.size (); i++) - { - if (ucstr[i] > 255) - { - mustUseUCString= true; - break; - } - } - // push a ucstring? - if(mustUseUCString) - { -#if LUABIND_VERSION > 600 - luabind::detail::push(ls.getStatePointer(), ucstr); -#else - luabind::object obj(ls.getStatePointer(), ucstr); - obj.pushvalue(); -#endif - } - else - { - ls.push(ucstr.toString()); - } - break; - } - case CInterfaceExprValue::RGBA: - { - CRGBA color = value.getRGBA(); -#if LUABIND_VERSION > 600 - luabind::detail::push(ls.getStatePointer(), color); -#else - luabind::object obj(ls.getStatePointer(), color); - obj.pushvalue(); -#endif - break; - } - break; - case CInterfaceExprValue::UserType: // Yoyo: don't care UserType... - default: - ls.pushNil(); - break; - } - } - else - ls.pushNil(); - return 1; -} diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h index 3d7c32860..ffe0125a4 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h @@ -23,13 +23,7 @@ private: static int getUI(CLuaState &ls); // params: "ui:interface:...". return: CInterfaceElement* (nil if error), an additionnal boolean parameter // LUA exported Functions with standard lua (because use ui object, use variable param number, or return dynamic-typed object) - static int setCaptureKeyboard(CLuaState &ls); - static int resetCaptureKeyboard(CLuaState &ls); - static int setOnDraw(CLuaState &ls); // params: CInterfaceGroup*, "script". return: none - static int addOnDbChange(CLuaState &ls); // params: CInterfaceGroup*, "dblist", "script". return: none - static int removeOnDbChange(CLuaState &ls);// params: CInterfaceGroup*. return: none static int getUICaller(CLuaState &ls); // params: none. return: CInterfaceElement* (nil if error) - static int getCurrentWindowUnder(CLuaState &ls); // params: none. return: CInterfaceElement* (nil if none) // can specify verbose display when the element is note found (default is true) static int createGroupInstance(CLuaState &ls); // params : param 1 = template name, // param 2 = id of parent where the instance will be inserted @@ -49,27 +43,16 @@ private: // param 3 = table with all strings and urls // {"main text"="http:///", "text option 1"="http:///", "text option 2"="http:///") etc... static int getIndexInDB(CLuaState &ls); // params: CDBCtrlSheet*.... return: index, or 0 if error - static int getUIId(CLuaState &ls); // params: CInterfaceElement*. return: ui id (empty if error) - static int runAH(CLuaState &ls); // params: CInterfaceElement *, "ah", "params". return: none - static int runExpr(CLuaState &ls); // params: "expr". return: any of: nil,bool,string,number, RGBA, UCString - static int runFct(CLuaState &ls); // params: "expr", param1, param2.... return: any of: nil,bool,string,number, RGBA, UCString - static int runCommand(CLuaState &ls); // params: "command name", param1, param2 ... return true or false static int formatUI(CLuaState &ls); // params: "expr", param1, param2.... return: string with # and % parsed static int formatDB(CLuaState &ls); // params: param1, param2.... return: string with @ and , added static int launchContextMenuInGame(CLuaState &ls); // params : menu name static int parseInterfaceFromString(CLuaState &ls); // params : intreface script static int updateAllLocalisedElements(CLuaState &ls); static int breakPoint(CLuaState &ls); - static int getWindowSize(CLuaState &ls); static int i18n(CLuaState &ls); // retrieve an unicode string from CI18N static int setTextFormatTaged(CLuaState &ls); // set a text that may contains Tag Format infos static int validMessageBox(CLuaState &ls); // ok/cancel type message box (can't get it to work through luabind) - static int concatUCString(CLuaState &ls); // workaround for + operator that don't work in luabind for ucstrings ... - static int concatString(CLuaState &ls); // speedup concatenation of several strings - static int tableToString(CLuaState &ls); // concat element of a table to build a string - static int setTopWindow(CLuaState &ls); // set the top window static int initEmotesMenu(CLuaState &ls); - static int isUCString(CLuaState &ls); static int hideAllWindows(CLuaState &ls); static int hideAllNonSavableWindows(CLuaState &ls); static int getDesktopIndex(CLuaState &ls); @@ -81,7 +64,6 @@ private: static int getWeatherValue(CLuaState &ls); // get current real weather value (blend between server driven value & predicted value). Manual weather value is ignored static int disableContextHelpForControl(CLuaState &ls); // params: CCtrlBase*. return: none static int disableContextHelp(CLuaState &ls); - static int getPathContent(CLuaState &ls); static int getServerSeason(CLuaState &ls); // get the last season sent by the server // 0->auto, computed locally from the current day (or not received from server yet) // 1->server force spring @@ -92,9 +74,7 @@ private: static int getAutoSeason(CLuaState &ls); // compute automatic season that would be at this time (1->spring, etc .) - static int getTextureSize(CLuaState &ls); static int enableModalWindow(CLuaState &ls); - static int disableModalWindow(CLuaState &ls); static int getPlayerPos(CLuaState &ls); static int getPlayerFront(CLuaState &ls); static int getPlayerDirection(CLuaState &ls); @@ -120,8 +100,6 @@ private: static int getSlotDataSetId(CLuaState &ls); // LUA functions exported for Dev only (debug) - static int deleteUI(CLuaState &ls); // params: CInterfaceElement*.... return: none - static int deleteReflectable(CLuaState &ls); // params: CInterfaceElement*.... return: none static int dumpUI(CLuaState &ls); // params: CInterfaceElement*.... return: none static int setKeyboardContext(CLuaState &ls); @@ -206,7 +184,6 @@ private: static sint32 getFirstTribeFameIndex(); // fame index of the 1st tribe static sint32 getNbTribeFameIndex(); // number of tribe fame index (which are contiguous) static std::string getClientCfg(const std::string &varName); - static bool fileExists(const std::string &fileName); static void sendMsgToServer(const std::string &msgName); static void sendMsgToServerPvpTag(bool pvpTag); static bool isGuildQuitAvailable(); @@ -260,8 +237,6 @@ public: // Requires that 'ClientCfg.LuaDebugInfoGotoButtonEnabled' is set to 1, else // a, empty tag is returned static std::string createGotoFileButtonTag(const char *fileName, uint line); - - static int runExprAndPushResult(CLuaState &ls, const std::string &expr); // Used by runExpr and runFct }; #endif