gui/luainstance: rename menue => menu

This commit is contained in:
martii
2013-12-11 12:07:46 +01:00
committed by M. Liebmann
parent 007d700d53
commit 60dbf9194e
2 changed files with 76 additions and 75 deletions

View File

@@ -420,11 +420,9 @@ void CLuaInstance::registerFunctions()
lua_pop(lua, 1); lua_pop(lua, 1);
lua_register(lua, className, NewWindow); lua_register(lua, className, NewWindow);
#ifdef MARTII MenuRegister(lua);
MenueRegister(lua);
HintboxRegister(lua); HintboxRegister(lua);
MessageboxRegister(lua); MessageboxRegister(lua);
#endif
} }
CLuaData *CLuaInstance::CheckData(lua_State *L, int narg) CLuaData *CLuaInstance::CheckData(lua_State *L, int narg)
@@ -722,7 +720,7 @@ bool CLuaInstance::tableLookup(lua_State *L, const char *what, int &value)
return res; return res;
} }
bool CLuaMenueChangeObserver::changeNotify(lua_State *L, const std::string &luaAction, const std::string &luaId, void *Data) bool CLuaMenuChangeObserver::changeNotify(lua_State *L, const std::string &luaAction, const std::string &luaId, void *Data)
{ {
const char *optionValue = (const char *) Data; const char *optionValue = (const char *) Data;
lua_pushglobaltable(L); lua_pushglobaltable(L);
@@ -736,54 +734,61 @@ bool CLuaMenueChangeObserver::changeNotify(lua_State *L, const std::string &luaA
return res == menu_return::RETURN_REPAINT || res == menu_return::RETURN_EXIT_REPAINT; return res == menu_return::RETURN_REPAINT || res == menu_return::RETURN_EXIT_REPAINT;
} }
void CLuaInstance::MenueRegister(lua_State *L) void CLuaInstance::MenuRegister(lua_State *L)
{ {
luaL_Reg meth[] = { luaL_Reg meth[] = {
{ "new", CLuaInstance::MenueNew }, { "new", CLuaInstance::MenuNew },
{ "addKey", CLuaInstance::MenueAddKey }, { "addKey", CLuaInstance::MenuAddKey },
{ "addItem", CLuaInstance::MenueAddItem }, { "addItem", CLuaInstance::MenuAddItem },
{ "exec", CLuaInstance::MenueExec }, { "exec", CLuaInstance::MenuExec },
{ "hide", CLuaInstance::MenueHide }, { "hide", CLuaInstance::MenuHide },
{ "__gc", CLuaInstance::MenueDelete }, { "__gc", CLuaInstance::MenuDelete },
{ NULL, NULL } { NULL, NULL }
}; };
luaL_newmetatable(L, "menue"); luaL_newmetatable(L, "menu");
luaL_setfuncs(L, meth, 0);
lua_pushvalue(L, -1);
lua_setfield(L, -1, "__index");
lua_setglobal(L, "menu");
// keep misspelled "menue" for backwards-compatibility
luaL_newmetatable(L, "menu");
luaL_setfuncs(L, meth, 0); luaL_setfuncs(L, meth, 0);
lua_pushvalue(L, -1); lua_pushvalue(L, -1);
lua_setfield(L, -1, "__index"); lua_setfield(L, -1, "__index");
lua_setglobal(L, "menue"); lua_setglobal(L, "menue");
} }
CLuaMenue *CLuaInstance::MenueCheck(lua_State *L, int n) CLuaMenu *CLuaInstance::MenuCheck(lua_State *L, int n)
{ {
return *(CLuaMenue **) luaL_checkudata(L, n, "menue"); return *(CLuaMenu **) luaL_checkudata(L, n, "menu");
} }
CLuaMenue::CLuaMenue() CLuaMenu::CLuaMenu()
{ {
m = NULL; m = NULL;
observ = new CLuaMenueChangeObserver(); observ = new CLuaMenuChangeObserver();
} }
CLuaMenue::~CLuaMenue() CLuaMenu::~CLuaMenu()
{ {
delete m; delete m;
delete observ; delete observ;
} }
CLuaMenueForwarder::CLuaMenueForwarder(lua_State *_L, std::string _luaAction, std::string _luaId) CLuaMenuForwarder::CLuaMenuForwarder(lua_State *_L, std::string _luaAction, std::string _luaId)
{ {
L = _L; L = _L;
luaAction = _luaAction; luaAction = _luaAction;
luaId = _luaId; luaId = _luaId;
} }
CLuaMenueForwarder::~CLuaMenueForwarder() CLuaMenuForwarder::~CLuaMenuForwarder()
{ {
} }
int CLuaMenueForwarder::exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/) int CLuaMenuForwarder::exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/)
{ {
int res = menu_return::RETURN_REPAINT; int res = menu_return::RETURN_REPAINT;
if (!luaAction.empty()){ if (!luaAction.empty()){
@@ -803,13 +808,13 @@ int CLuaMenueForwarder::exec(CMenuTarget* /*parent*/, const std::string & /*acti
return res; return res;
} }
CLuaMenueFilebrowser::CLuaMenueFilebrowser(lua_State *_L, std::string _luaAction, std::string _luaId, char *_value, bool _dirMode) : CLuaMenueForwarder(_L, _luaAction, _luaId) CLuaMenuFilebrowser::CLuaMenuFilebrowser(lua_State *_L, std::string _luaAction, std::string _luaId, std::string *_value, bool _dirMode) : CLuaMenuForwarder(_L, _luaAction, _luaId)
{ {
value = _value; value = _value;
dirMode = _dirMode; dirMode = _dirMode;
} }
int CLuaMenueFilebrowser::exec(CMenuTarget* /*parent*/, const std::string& /*actionKey*/) int CLuaMenuFilebrowser::exec(CMenuTarget* /*parent*/, const std::string& /*actionKey*/)
{ {
CFileBrowser fileBrowser; CFileBrowser fileBrowser;
fileBrowser.Dir_Mode = dirMode; fileBrowser.Dir_Mode = dirMode;
@@ -834,7 +839,7 @@ int CLuaMenueFilebrowser::exec(CMenuTarget* /*parent*/, const std::string& /*act
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
CLuaMenueStringinput::CLuaMenueStringinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, char *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms) : CLuaMenueForwarder(_L, _luaAction, _luaId) CLuaMenuStringinput::CLuaMenuStringinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, std::string *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms) : CLuaMenuForwarder(_L, _luaAction, _luaId)
{ {
name = _name; name = _name;
value = _value; value = _value;
@@ -845,7 +850,7 @@ CLuaMenueStringinput::CLuaMenueStringinput(lua_State *_L, std::string _luaAction
sms = _sms; sms = _sms;
} }
int CLuaMenueStringinput::exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/) int CLuaMenuStringinput::exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/)
{ {
CStringInput *i; CStringInput *i;
if (sms) if (sms)
@@ -868,7 +873,7 @@ int CLuaMenueStringinput::exec(CMenuTarget* /*parent*/, const std::string & /*ac
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
int CLuaInstance::MenueNew(lua_State *L) int CLuaInstance::MenuNew(lua_State *L)
{ {
CMenuWidget *m; CMenuWidget *m;
@@ -884,17 +889,17 @@ int CLuaInstance::MenueNew(lua_State *L)
} else } else
m = new CMenuWidget(); m = new CMenuWidget();
CLuaMenue **udata = (CLuaMenue **) lua_newuserdata(L, sizeof(CLuaMenue *)); CLuaMenu **udata = (CLuaMenu **) lua_newuserdata(L, sizeof(CLuaMenu *));
*udata = new CLuaMenue(); *udata = new CLuaMenu();
(*udata)->m = m; (*udata)->m = m;
luaL_getmetatable(L, "menue"); luaL_getmetatable(L, "menu");
lua_setmetatable(L, -2); lua_setmetatable(L, -2);
return 1; return 1;
} }
int CLuaInstance::MenueDelete(lua_State *L) int CLuaInstance::MenuDelete(lua_State *L)
{ {
CLuaMenue *m = MenueCheck(L, 1); CLuaMenu *m = MenuCheck(L, 1);
if (!m) if (!m)
return 0; return 0;
@@ -911,9 +916,9 @@ int CLuaInstance::MenueDelete(lua_State *L)
return 0; return 0;
} }
int CLuaInstance::MenueAddKey(lua_State *L) int CLuaInstance::MenuAddKey(lua_State *L)
{ {
CLuaMenue *m = MenueCheck(L, 1); CLuaMenu *m = MenuCheck(L, 1);
if (!m) if (!m)
return 0; return 0;
lua_assert(lua_istable(L, 2)); lua_assert(lua_istable(L, 2));
@@ -922,23 +927,23 @@ int CLuaInstance::MenueAddKey(lua_State *L)
std::string id; tableLookup(L, "id", id); std::string id; tableLookup(L, "id", id);
int directkey = CRCInput::RC_nokey; tableLookup(L, "directkey", directkey); int directkey = CRCInput::RC_nokey; tableLookup(L, "directkey", directkey);
if (action != "" && directkey != (int) CRCInput::RC_nokey) { if (action != "" && directkey != (int) CRCInput::RC_nokey) {
CLuaMenueForwarder *forwarder = new CLuaMenueForwarder(L, action, id); CLuaMenuForwarder *forwarder = new CLuaMenuForwarder(L, action, id);
m->m->addKey(directkey, forwarder, action); m->m->addKey(directkey, forwarder, action);
m->targets.push_back(forwarder); m->targets.push_back(forwarder);
} }
return 0; return 0;
} }
int CLuaInstance::MenueAddItem(lua_State *L) int CLuaInstance::MenuAddItem(lua_State *L)
{ {
CLuaMenue *m = MenueCheck(L, 1); CLuaMenu *m = MenuCheck(L, 1);
if (!m) if (!m)
return 0; return 0;
lua_assert(lua_istable(L, 2)); lua_assert(lua_istable(L, 2));
CLuaMenueItem i; CLuaMenuItem i;
m->items.push_back(i); m->items.push_back(i);
CLuaMenueItem *b = &m->items.back(); CLuaMenuItem *b = &m->items.back();
tableLookup(L, "name", b->name); tableLookup(L, "name", b->name);
std::string icon; tableLookup(L, "icon", icon); std::string icon; tableLookup(L, "icon", icon);
@@ -967,10 +972,9 @@ int CLuaInstance::MenueAddItem(lua_State *L)
sscanf(tmp.c_str(), "%d,%d", &range_from, &range_to); sscanf(tmp.c_str(), "%d,%d", &range_from, &range_to);
if (type == "forwarder") { if (type == "forwarder") {
strncpy(b->s, value.c_str(), sizeof(b->s)); b->str_val = value;
CLuaMenueForwarder *forwarder = new CLuaMenueForwarder(L, action, id); CLuaMenuForwarder *forwarder = new CLuaMenuForwarder(L, action, id);
CMenuItem *mi = new CMenuForwarderNonLocalized( CMenuItem *mi = new CMenuForwarder(b->name, enabled, b->str_val, forwarder, NULL/*ActionKey*/, directkey, icon.c_str(), right_icon.c_str());
b->name.c_str(), enabled, b->s, forwarder, NULL/*ActionKey*/, directkey, icon.c_str(), right_icon.c_str());
mi->setLua(L, action, id); mi->setLua(L, action, id);
m->m->addItem(mi); m->m->addItem(mi);
m->targets.push_back(forwarder); m->targets.push_back(forwarder);
@@ -1026,16 +1030,15 @@ int CLuaInstance::MenueAddItem(lua_State *L)
tableLookup(L, "valid_chars", valid_chars); tableLookup(L, "valid_chars", valid_chars);
int sms = 0; tableLookup(L, "sms", sms); int sms = 0; tableLookup(L, "sms", sms);
int size = 30; tableLookup(L, "size", size); int size = 30; tableLookup(L, "size", size);
CLuaMenueStringinput *stringinput = new CLuaMenueStringinput(L, action, id, b->name.c_str(), b->s, size, valid_chars, m->observ, icon.c_str(), sms); CLuaMenuStringinput *stringinput = new CLuaMenuStringinput(L, action, id, b->name.c_str(), &b->str_val, size, valid_chars, m->observ, icon.c_str(), sms);
CMenuItem *mi = new CMenuForwarderNonLocalized( CMenuItem *mi = new CMenuForwarder(b->name, enabled, b->str_val, stringinput, NULL/*ActionKey*/, directkey, icon.c_str(), right_icon.c_str());
b->name.c_str(), enabled, b->s, stringinput, NULL/*ActionKey*/, directkey, icon.c_str(), right_icon.c_str());
mi->setLua(L, action, id); mi->setLua(L, action, id);
m->m->addItem(mi); m->m->addItem(mi);
m->targets.push_back(stringinput); m->targets.push_back(stringinput);
} else if (type == "filebrowser") { } else if (type == "filebrowser") {
strncpy(b->s, value.c_str(), sizeof(b->s)); strncpy(b->s, value.c_str(), sizeof(b->s));
int dirMode = 0; tableLookup(L, "dir_mode", dirMode); int dirMode = 0; tableLookup(L, "dir_mode", dirMode);
CLuaMenueFilebrowser *filebrowser = new CLuaMenueFilebrowser(L, action, id, b->s, dirMode); CLuaMenuFilebrowser *filebrowser = new CLuaMenuFilebrowser(L, action, id, &b->str_val, dirMode);
lua_pushstring(L, "filter"); lua_pushstring(L, "filter");
lua_gettable(L, -2); lua_gettable(L, -2);
if (lua_istable(L, -1)) if (lua_istable(L, -1))
@@ -1056,18 +1059,18 @@ int CLuaInstance::MenueAddItem(lua_State *L)
return 0; return 0;
} }
int CLuaInstance::MenueHide(lua_State *L) int CLuaInstance::MenuHide(lua_State *L)
{ {
CLuaMenue *m = MenueCheck(L, 1); CLuaMenu *m = MenuCheck(L, 1);
if (!m) if (!m)
return 0; return 0;
m->m->hide(); m->m->hide();
return 0; return 0;
} }
int CLuaInstance::MenueExec(lua_State *L) int CLuaInstance::MenuExec(lua_State *L)
{ {
CLuaMenue *m = MenueCheck(L, 1); CLuaMenu *m = MenuCheck(L, 1);
if (!m) if (!m)
return 0; return 0;
m->m->exec(NULL, ""); m->m->exec(NULL, "");

View File

@@ -38,8 +38,8 @@ struct CLuaData
CFBWindow *fbwin; CFBWindow *fbwin;
CRCInput *rcinput; CRCInput *rcinput;
}; };
#ifdef MARTII
struct CLuaMenueItem struct CLuaMenuItem
{ {
union //value union //value
{ {
@@ -49,48 +49,48 @@ struct CLuaMenueItem
std::string name; std::string name;
}; };
class CLuaMenueChangeObserver : public CChangeObserver class CLuaMenuChangeObserver : public CChangeObserver
{ {
public: public:
bool changeNotify(lua_State *, const std::string &, const std::string &, void *); bool changeNotify(lua_State *, const std::string &, const std::string &, void *);
}; };
class CLuaMenue class CLuaMenu
{ {
public: public:
CMenuWidget *m; CMenuWidget *m;
CLuaMenueChangeObserver *observ; CLuaMenuChangeObserver *observ;
std::list<CLuaMenueItem> items; std::list<CLuaMenuItem> items;
std::list<CMenuTarget *> targets; std::list<CMenuTarget *> targets;
std::list<void *> tofree; std::list<void *> tofree;
CLuaMenue(); CLuaMenu();
~CLuaMenue(); ~CLuaMenu();
}; };
class CLuaMenueForwarder : public CMenuTarget class CLuaMenuForwarder : public CMenuTarget
{ {
public: public:
lua_State *L; lua_State *L;
std::string luaAction; std::string luaAction;
std::string luaId; std::string luaId;
CLuaMenueForwarder(lua_State *L, std::string _luaAction, std::string _luaId); CLuaMenuForwarder(lua_State *L, std::string _luaAction, std::string _luaId);
~CLuaMenueForwarder(); ~CLuaMenuForwarder();
int exec(CMenuTarget* parent, const std::string & actionKey); int exec(CMenuTarget* parent, const std::string & actionKey);
}; };
class CLuaMenueFilebrowser : public CLuaMenueForwarder class CLuaMenuFilebrowser : public CLuaMenuForwarder
{ {
private: private:
char *value; char *value;
bool dirMode; bool dirMode;
std::vector<std::string> filter; std::vector<std::string> filter;
public: public:
CLuaMenueFilebrowser(lua_State *_L, std::string _luaAction, std::string _luaId, char *_value, bool _dirMode); CLuaMenuFilebrowser(lua_State *_L, std::string _luaAction, std::string _luaId, std::string *_value, bool _dirMode);
int exec(CMenuTarget* parent, const std::string & actionKey); int exec(CMenuTarget* parent, const std::string & actionKey);
void addFilter(std::string s) { filter.push_back(s); }; void addFilter(std::string s) { filter.push_back(s); };
}; };
class CLuaMenueStringinput : public CLuaMenueForwarder class CLuaMenuStringinput : public CLuaMenuForwarder
{ {
private: private:
char *value; char *value;
@@ -101,7 +101,7 @@ class CLuaMenueStringinput : public CLuaMenueForwarder
int size; int size;
CChangeObserver *observ; CChangeObserver *observ;
public: public:
CLuaMenueStringinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, char *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms); CLuaMenuStringinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, std::string *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms);
int exec(CMenuTarget* parent, const std::string & actionKey); int exec(CMenuTarget* parent, const std::string & actionKey);
}; };
@@ -129,9 +129,7 @@ class CLuaInstance
{ {
static const char className[]; static const char className[];
static const luaL_Reg methods[]; static const luaL_Reg methods[];
#ifdef MARTII static const luaL_Reg menu_methods[];
static const luaL_Reg menue_methods[];
#endif
static CLuaData *CheckData(lua_State *L, int narg); static CLuaData *CheckData(lua_State *L, int narg);
public: public:
CLuaInstance(); CLuaInstance();
@@ -155,14 +153,14 @@ private:
static int GetSize(lua_State *L); static int GetSize(lua_State *L);
static int DisplayImage(lua_State *L); static int DisplayImage(lua_State *L);
void MenueRegister(lua_State *L); void MenuRegister(lua_State *L);
static int MenueNew(lua_State *L); static int MenuNew(lua_State *L);
static int MenueDelete(lua_State *L); static int MenuDelete(lua_State *L);
static int MenueAddKey(lua_State *L); static int MenuAddKey(lua_State *L);
static int MenueAddItem(lua_State *L); static int MenuAddItem(lua_State *L);
static int MenueHide(lua_State *L); static int MenuHide(lua_State *L);
static int MenueExec(lua_State *L); static int MenuExec(lua_State *L);
static CLuaMenue *MenueCheck(lua_State *L, int n); static CLuaMenu *MenuCheck(lua_State *L, int n);
void HintboxRegister(lua_State *L); void HintboxRegister(lua_State *L);
static int HintboxNew(lua_State *L); static int HintboxNew(lua_State *L);