diff --git a/src/luaenginegui/luaengine/LuaEngineGui.cpp b/src/luaenginegui/luaengine/LuaEngineGui.cpp index 801a936..ffa80e0 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.cpp +++ b/src/luaenginegui/luaengine/LuaEngineGui.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -130,6 +131,9 @@ void LuaEngineGui::pushClass(lua_State *L_p) // Text Edit pushFunction(L_p, "createTextEdit", createTextEdit); + // Tool Button + pushFunction(L_p, "createToolButton", createToolButton); + // Size Policy pushVariant(L_p, "SizePolicyFixed", (int)QSizePolicy::Fixed); pushVariant(L_p, "SizePolicyMinimum", (int)QSizePolicy::Minimum); @@ -470,12 +474,18 @@ int LuaEngineGui::setWidgetText(lua_State *L_p) else if (((QObject*)pointer)->inherits("QPlainTextEdit")) { ((QPlainTextEdit*)pointer)->setPlainText(getVariant(L_p, 2).toString()); } + else if (((QObject*)pointer)->inherits("QPushButton")) { + ((QPushButton*)pointer)->setText(getVariant(L_p, 2).toString()); + } else if (((QObject*)pointer)->inherits("QRadioButton")) { ((QRadioButton*)pointer)->setText(getVariant(L_p, 2).toString()); } else if (((QObject*)pointer)->inherits("QTextEdit")) { ((QTextEdit*)pointer)->setHtml(getVariant(L_p, 2).toString()); } + else if (((QObject*)pointer)->inherits("QToolButton")) { + ((QToolButton*)pointer)->setText(getVariant(L_p, 2).toString()); + } else if (((QObject*)pointer)->inherits("QWidget")) { ((QWidget*)pointer)->setWindowTitle(getVariant(L_p, 2).toString()); } @@ -963,6 +973,40 @@ int LuaEngineGui::createTextEdit(lua_State *L_p) return 1; } +int LuaEngineGui::createToolButton(lua_State *L_p) +{ + QLayout *layout = nullptr; + QWidget *parent = nullptr; + QString buttonText = "..."; + if (getArgumentCount(L_p) >= 1) { + buttonText = getVariant(L_p, 1).toString(); + if (getArgumentCount(L_p) >= 2) { + void *pointer = getPointer(L_p, 2); + 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; + } + } + } + } + QToolButton *toolButton = new QToolButton(parent); + toolButton->setObjectName(nameForPointer(toolButton)); + toolButton->setText(buttonText); + if (layout != nullptr) { + layout->addWidget(toolButton); + } + pushPointer(L_p, toolButton); + return 1; +} + int LuaEngineGui::isWidgetChecked(lua_State *L_p) { if (getArgumentCount(L_p) >= 1) { @@ -1028,6 +1072,10 @@ int LuaEngineGui::getWidgetText(lua_State *L_p) pushVariant(L_p, ((QLineEdit*)pointer)->text()); return 1; } + else if (((QObject*)pointer)->inherits("QPushButton")) { + pushVariant(L_p, ((QPushButton*)pointer)->text()); + return 1; + } else if (((QObject*)pointer)->inherits("QPlainTextEdit")) { pushVariant(L_p, ((QPlainTextEdit*)pointer)->toPlainText()); return 1; @@ -1040,6 +1088,10 @@ int LuaEngineGui::getWidgetText(lua_State *L_p) pushVariant(L_p, ((QTextEdit*)pointer)->toHtml()); return 1; } + else if (((QObject*)pointer)->inherits("QToolButton")) { + pushVariant(L_p, ((QToolButton*)pointer)->text()); + return 1; + } else if (((QObject*)pointer)->inherits("QWidget")) { pushVariant(L_p, ((QWidget*)pointer)->windowTitle()); return 1; diff --git a/src/luaenginegui/luaengine/LuaEngineGui.h b/src/luaenginegui/luaengine/LuaEngineGui.h index 8e91752..f30b68d 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.h +++ b/src/luaenginegui/luaengine/LuaEngineGui.h @@ -60,6 +60,7 @@ public: static int createRadioButton(lua_State *L_p); static int createSpacerItem(lua_State *L_p); static int createTextEdit(lua_State *L_p); + static int createToolButton(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);