aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-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);