aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/gui
diff options
context:
space:
mode:
authorAlexander Pickering <alex@cogarr.net>2018-08-12 15:04:13 -0400
committerAlexander Pickering <alex@cogarr.net>2018-08-12 15:04:31 -0400
commit8cebf5aa191687093332834e4c56ab7bf5c3573a (patch)
tree72b8f2723f655611ba59e59bdd3593fca9ec9a51 /src/client/lua_api/gui
parentd169407dbc6d54ed4eb0bee06c6169b6ea40761d (diff)
downloadbrokengine-8cebf5aa191687093332834e4c56ab7bf5c3573a.tar.gz
brokengine-8cebf5aa191687093332834e4c56ab7bf5c3573a.tar.bz2
brokengine-8cebf5aa191687093332834e4c56ab7bf5c3573a.zip
Added color selector element
Added a color selector gui element
Diffstat (limited to 'src/client/lua_api/gui')
-rw-r--r--src/client/lua_api/gui/iguicolorselector.cpp69
-rw-r--r--src/client/lua_api/gui/iguicolorselector.hpp11
2 files changed, 80 insertions, 0 deletions
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 <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
+}
+#include <string>
+#include <irrlicht.h>
+#include "../guiparts.hpp"
+#include "iguielement.hpp"
+#include <shared/lua_api/common.hpp>
+
+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 <stdio.h>
+#include <stdlib.h>
+extern "C" {
+ #include <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
+}
+#include <irrlicht.h>
+
+int iguicolorselector_register(lua_State* L);