From 8cebf5aa191687093332834e4c56ab7bf5c3573a Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sun, 12 Aug 2018 15:04:13 -0400 Subject: Added color selector element Added a color selector gui element --- src/client/lua_api/gui/iguicolorselector.cpp | 69 ++++++++++++++++++++++++++++ src/client/lua_api/gui/iguicolorselector.hpp | 11 +++++ 2 files changed, 80 insertions(+) create mode 100644 src/client/lua_api/gui/iguicolorselector.cpp create mode 100644 src/client/lua_api/gui/iguicolorselector.hpp (limited to 'src') diff --git a/src/client/lua_api/gui/iguicolorselector.cpp b/src/client/lua_api/gui/iguicolorselector.cpp new file mode 100644 index 0000000..b85f765 --- /dev/null +++ b/src/client/lua_api/gui/iguicolorselector.cpp @@ -0,0 +1,69 @@ + +extern "C" { + #include + #include + #include +} +#include +#include +#include "../guiparts.hpp" +#include "iguielement.hpp" +#include + +using namespace irr; +using namespace gui; +using namespace core; + +extern IrrlichtDevice* device; + +//newcolorselector("title"[,parent]) +int newiguicolorselector(lua_State* L){ + int nargs = lua_gettop(L); + IGUIElement* parent = NULL; + if(nargs == 2){ + lua_getfield(L,-1,"guielement");//"title",{parent},ud_element + parent = (IGUIElement*)lua_touserdata(L,-1); + lua_pop(L,2); + } + + const char *title = lua_tostring(L,-1);//"title" + lua_pop(L,1);// + int titlelen = strlen(title); + wchar_t titletext[titlelen]; + mbstowcs(titletext,title,titlelen); + IGUIElement* colorselector = device->getGUIEnvironment()->addColorSelectDialog( + titletext, + false, + parent, + -1 + ); + lua_newtable(L);//{} + lua_pushlightuserdata(L,colorselector);//{},ud_colorselector + lua_setfield(L,-2,"guielement");//{guielement} + + luaL_getmetatable(L,"gui.colorselector");//{guielement}{m_colorselector} + lua_setmetatable(L,-2);//{colorselector} + + return 1; +} + +static const luaL_reg iguicolorselector_m[] = { + {"move", moveiguielement}, + {"setText", setiguitext}, + //{"remove", guisethandeler}, + {0,0}, +}; + +int iguicolorselector_register(lua_State* L){// + luaL_newmetatable(L,"gui.colorselector");//m{gui.checkbox} + luaL_register(L,NULL,iguielement_m); + luaL_register(L,NULL,iguicolorselector_m); + lua_pop(L,1);// + + lua_getglobal(L,"gui");//{gui} + lua_pushstring(L,"newcolorselector");//{gui},new(),"newcheckbox" + lua_pushcfunction(L,newiguicolorselector);//{gui},new() + lua_settable(L,-3);//{gui} + lua_pop(L,1); + return 0; +} diff --git a/src/client/lua_api/gui/iguicolorselector.hpp b/src/client/lua_api/gui/iguicolorselector.hpp new file mode 100644 index 0000000..9460f3e --- /dev/null +++ b/src/client/lua_api/gui/iguicolorselector.hpp @@ -0,0 +1,11 @@ + +#include +#include +extern "C" { + #include + #include + #include +} +#include + +int iguicolorselector_register(lua_State* L); -- cgit v1.2.3-70-g09d2