From 8d04b260a7966a31919e9b8dae8da852a47d9313 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Sat, 16 Feb 2013 14:49:05 +0000 Subject: [PATCH] Add missing removeComponent for Lua API --- src/cat/LuaScriptInterface.cpp | 24 ++++++++++++++++++++++++ src/cat/LuaScriptInterface.h | 1 + src/cat/LuaWindow.cpp | 24 ++++++++++++++++++++++++ src/cat/LuaWindow.h | 1 + 4 files changed, 50 insertions(+) diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index a3fe00b5c..cb46ca4e9 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::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::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::check(l, 1); diff --git a/src/cat/LuaScriptInterface.h b/src/cat/LuaScriptInterface.h index f7b1a13d3..d925bbe9e 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 433e4d109..502c7f11b 100644 --- a/src/cat/LuaWindow.cpp +++ b/src/cat/LuaWindow.cpp @@ -25,6 +25,7 @@ Luna::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::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::get(luaComponent)->GetComponent(); + else if(luaComponent = Luna::tryGet(l, 1)) + component = Luna::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 be6af9266..d9d25e1ab 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);