diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2013-02-16 14:49:05 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2013-02-16 14:49:05 (GMT) |
| commit | 8d04b260a7966a31919e9b8dae8da852a47d9313 (patch) | |
| tree | c2a9e7e2686a6e29a40076082eb8809c7fbb2a8c /src | |
| parent | 01cd146ee910fb9e62859583842c9842b539565b (diff) | |
| download | powder-8d04b260a7966a31919e9b8dae8da852a47d9313.zip powder-8d04b260a7966a31919e9b8dae8da852a47d9313.tar.gz | |
Add missing removeComponent for Lua API
Diffstat (limited to 'src')
| -rw-r--r-- | src/cat/LuaScriptInterface.cpp | 24 | ||||
| -rw-r--r-- | src/cat/LuaScriptInterface.h | 1 | ||||
| -rw-r--r-- | src/cat/LuaWindow.cpp | 24 | ||||
| -rw-r--r-- | src/cat/LuaWindow.h | 1 |
4 files changed, 50 insertions, 0 deletions
diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index a3fe00b..cb46ca4 100644 --- a/src/cat/LuaScriptInterface.cpp +++ b/src/cat/LuaScriptInterface.cpp @@ -341,6 +341,7 @@ void LuaScriptInterface::initInterfaceAPI() {"showWindow", interface_showWindow}, {"closeWindow", interface_closeWindow}, {"addComponent", interface_addComponent}, + {"removeComponent", interface_addComponent}, {NULL, NULL} }; luaL_register(l, "interface", interfaceAPIMethods); @@ -381,6 +382,29 @@ int LuaScriptInterface::interface_addComponent(lua_State * l) return 0; } +int LuaScriptInterface::interface_removeComponent(lua_State * l) +{ + void * luaComponent = NULL; + ui::Component * component = NULL; + if(luaComponent = Luna<LuaButton>::tryGet(l, 1)) + component = Luna<LuaButton>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaLabel>::tryGet(l, 1)) + component = Luna<LuaLabel>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaTextbox>::tryGet(l, 1)) + component = Luna<LuaTextbox>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaCheckbox>::tryGet(l, 1)) + component = Luna<LuaCheckbox>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaSlider>::tryGet(l, 1)) + component = Luna<LuaSlider>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaProgressBar>::tryGet(l, 1)) + component = Luna<LuaProgressBar>::get(luaComponent)->GetComponent(); + else + luaL_typerror(l, 1, "Component"); + if(luacon_ci->Window && component) + luacon_ci->Window->RemoveComponent(component); + return 0; +} + int LuaScriptInterface::interface_showWindow(lua_State * l) { LuaWindow * window = Luna<LuaWindow>::check(l, 1); diff --git a/src/cat/LuaScriptInterface.h b/src/cat/LuaScriptInterface.h index f7b1a13..d925bbe 100644 --- a/src/cat/LuaScriptInterface.h +++ b/src/cat/LuaScriptInterface.h @@ -89,6 +89,7 @@ class LuaScriptInterface: public CommandInterface static int interface_showWindow(lua_State * l); static int interface_closeWindow(lua_State * l); static int interface_addComponent(lua_State * l); + static int interface_removeComponent(lua_State * l); //VM void initVirtualMachineAPI(); diff --git a/src/cat/LuaWindow.cpp b/src/cat/LuaWindow.cpp index 433e4d1..502c7f1 100644 --- a/src/cat/LuaWindow.cpp +++ b/src/cat/LuaWindow.cpp @@ -25,6 +25,7 @@ Luna<LuaWindow>::RegType LuaWindow::methods[] = { method(LuaWindow, position), method(LuaWindow, size), method(LuaWindow, addComponent), + method(LuaWindow, removeComponent), method(LuaWindow, onInitialized), method(LuaWindow, onExit), method(LuaWindow, onTick), @@ -122,6 +123,29 @@ int LuaWindow::addComponent(lua_State * l) return 0; } +int LuaWindow::removeComponent(lua_State * l) +{ + void * luaComponent = NULL; + ui::Component * component = NULL; + if(luaComponent = Luna<LuaButton>::tryGet(l, 1)) + component = Luna<LuaButton>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaLabel>::tryGet(l, 1)) + component = Luna<LuaLabel>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaTextbox>::tryGet(l, 1)) + component = Luna<LuaTextbox>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaCheckbox>::tryGet(l, 1)) + component = Luna<LuaCheckbox>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaSlider>::tryGet(l, 1)) + component = Luna<LuaSlider>::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna<LuaProgressBar>::tryGet(l, 1)) + component = Luna<LuaProgressBar>::get(luaComponent)->GetComponent(); + else + luaL_typerror(l, 1, "Component"); + if(component) + window->RemoveComponent(component); + return 0; +} + int LuaWindow::position(lua_State * l) { int args = lua_gettop(l); diff --git a/src/cat/LuaWindow.h b/src/cat/LuaWindow.h index be6af92..d9d25e1 100644 --- a/src/cat/LuaWindow.h +++ b/src/cat/LuaWindow.h @@ -37,6 +37,7 @@ class LuaWindow int position(lua_State * l); int size(lua_State * l); int addComponent(lua_State * l); + int removeComponent(lua_State * l); //Set event handlers int onInitialized(lua_State * l); |
