diff --git a/src/luaenginegui/luaengine/LuaEngineGui.cpp b/src/luaenginegui/luaengine/LuaEngineGui.cpp index 34ff688..1bd79a4 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.cpp +++ b/src/luaenginegui/luaengine/LuaEngineGui.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -150,6 +151,11 @@ void LuaEngineGui::pushClass(lua_State *L_p) // Spacer Item pushFunction(L_p, "createSpacerItem", createSpacerItem); + // Tab Bar + pushFunction(L_p, "createTabBar", createTabBar); + pushFunction(L_p, "createWidgetTab", createWidgetTab); + pushFunction(L_p, "addWidgetAsTab", addWidgetAsTab); + // Text Edit pushFunction(L_p, "createTextEdit", createTextEdit); @@ -679,6 +685,18 @@ int LuaEngineGui::widgetAddText(lua_State *L_p) return 0; } +int LuaEngineGui::addWidgetAsTab(lua_State *L_p) +{ + if (getArgumentCount(L_p) >= 3) { + void *w_pointer = getPointer(L_p, 1); + void *t_pointer = getPointer(L_p, 3); + if (w_pointer != NULL && t_pointer != NULL && ((QObject*)w_pointer)->inherits("QWidget") && ((QObject*)t_pointer)->inherits("QTabWidget")) { + ((QTabWidget*)t_pointer)->addTab(((QWidget*)w_pointer), getVariant(L_p, 2).toString()); + } + } + return 0; +} + int LuaEngineGui::createCentralWidget(lua_State *L_p) { if (getArgumentCount(L_p) >= 1) { @@ -1164,6 +1182,35 @@ int LuaEngineGui::createSpacerItem(lua_State *L_p) return 0; } +int LuaEngineGui::createTabBar(lua_State *L_p) +{ + QLayout *layout = nullptr; + QWidget *parent = nullptr; + if (getArgumentCount(L_p) >= 1) { + void *pointer = getPointer(L_p, 1); + if (pointer != NULL && ((QObject*)pointer)->inherits("QMainWindow")) { + parent = ((QMainWindow*)pointer)->centralWidget(); + } + else if (pointer != NULL && ((QObject*)pointer)->inherits("QWidget")) { + parent = (QWidget*)pointer; + } + else if (pointer != NULL && ((QObject*)pointer)->inherits("QLayout")) { + QWidget *widget = windowForObject((QObject*)pointer); + if (widget != nullptr) { + layout = (QLayout*)pointer; + parent = widget; + } + } + } + QTabWidget *tabWidget = new QTabWidget(parent); + tabWidget->setObjectName(nameForPointer(tabWidget)); + if (layout != nullptr) { + layout->addWidget(tabWidget); + } + pushPointer(L_p, tabWidget); + return 1; +} + int LuaEngineGui::createTextEdit(lua_State *L_p) { QLayout *layout = nullptr; @@ -1232,6 +1279,22 @@ int LuaEngineGui::createToolButton(lua_State *L_p) return 1; } +int LuaEngineGui::createWidgetTab(lua_State *L_p) +{ + if (getArgumentCount(L_p) >= 2) { + void *pointer = getPointer(L_p, 2); + if (pointer != NULL && ((QObject*)pointer)->inherits("QTabWidget")) { + QTabWidget *tabWidget = (QTabWidget*)pointer; + QWidget *widgetTab = new QWidget(tabWidget); + widgetTab->setObjectName(nameForPointer(widgetTab)); + tabWidget->addTab(widgetTab, getVariant(L_p, 1).toString()); + pushPointer(L_p, widgetTab); + return 1; + } + } + return 0; +} + int LuaEngineGui::isWidgetChecked(lua_State *L_p) { if (getArgumentCount(L_p) >= 1) { diff --git a/src/luaenginegui/luaengine/LuaEngineGui.h b/src/luaenginegui/luaengine/LuaEngineGui.h index 35ee3d0..910795a 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.h +++ b/src/luaenginegui/luaengine/LuaEngineGui.h @@ -52,6 +52,7 @@ public: static int layoutAddLayout(lua_State *L_p); static int layoutAddWidget(lua_State *L_p); static int widgetAddText(lua_State *L_p); + static int addWidgetAsTab(lua_State *L_p); static int createCentralWidget(lua_State *L_p); static int createCheckBox(lua_State *L_p); static int createDialog(lua_State *L_p); @@ -69,8 +70,10 @@ public: static int createPushButton(lua_State *L_p); static int createRadioButton(lua_State *L_p); static int createSpacerItem(lua_State *L_p); + static int createTabBar(lua_State *L_p); static int createTextEdit(lua_State *L_p); static int createToolButton(lua_State *L_p); + static int createWidgetTab(lua_State *L_p); static int isWidgetChecked(lua_State *L_p); static int getWidgetText(lua_State *L_p); static int getWindow(lua_State *L_p);