aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--src/client/lua_api/gui/iguicolorselector.cpp69
-rw-r--r--src/client/lua_api/gui/iguicolorselector.hpp11
3 files changed, 81 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 24797dc..5a657fb 100644
--- a/Makefile
+++ b/Makefile
@@ -150,7 +150,7 @@ SHARED_CLIENT_FILES = lua_api/common phys/physcommon lua_api/phys/bphysbox util/
SHARED_CLIENT_OBJS = $(SHARED_CLIENT_FILES:%=$(BUILD_DIR)/$(CLIENTNAME)/%.o)
# The client-side only stuff
-LAPI_GUI = iguibutton iguicheckbox iguielement iguiimage iguilabel iguiskin iguiutil iguiwindow iguieditbox
+LAPI_GUI = iguibutton iguicheckbox iguielement iguiimage iguilabel iguiwindow iguieditbox iguicolorselector
LAPI_PHYS = bphysmodel cbphysbox
LAPI_SCENE = icamera igeneric ilight imesh
LAPI_VIDEO = iimage itexture smaterial
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);