From 85fb61371eef72fdf9250385d72ef76e0694bbca Mon Sep 17 00:00:00 2001
From: Syping <schiedelrafael@keppe.org>
Date: Tue, 19 May 2020 15:50:00 +0200
Subject: [PATCH] include toolbar functions

---
 src/luaenginegui/luaengine/LuaEngineGui.cpp | 48 ++++++++++++++++++++-
 src/luaenginegui/luaengine/LuaEngineGui.h   |  1 +
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/src/luaenginegui/luaengine/LuaEngineGui.cpp b/src/luaenginegui/luaengine/LuaEngineGui.cpp
index 705ff85..959e4ee 100644
--- a/src/luaenginegui/luaengine/LuaEngineGui.cpp
+++ b/src/luaenginegui/luaengine/LuaEngineGui.cpp
@@ -40,6 +40,7 @@
 #include <QLineEdit>
 #include <QGroupBox>
 #include <QCheckBox>
+#include <QToolBar>
 #include <QMenuBar>
 #include <QProcess>
 #include <QWindow>
@@ -174,6 +175,14 @@ void LuaEngineGui::pushClass(lua_State *L_p)
     // Text Edit
     pushFunction(L_p, "createTextEdit", createTextEdit);
 
+    // Tool Bar
+    pushFunction(L_p, "createToolBar", createToolBar);
+    pushVariant(L_p, "AllToolBarAreas", (int)Qt::AllToolBarAreas);
+    pushVariant(L_p, "LeftToolBarArea", (int)Qt::LeftToolBarArea);
+    pushVariant(L_p, "RightToolBarArea", (int)Qt::RightToolBarArea);
+    pushVariant(L_p, "TopToolBarArea", (int)Qt::TopToolBarArea);
+    pushVariant(L_p, "BottomToolBarArea", (int)Qt::BottomToolBarArea);
+
     // Tool Button
     pushFunction(L_p, "createToolButton", createToolButton);
 
@@ -461,7 +470,14 @@ int LuaEngineGui::setObjectImage(lua_State *L_p)
                     pixelRatio = newPixelRatio;
                 }
             }
-            if (((QObject*)pointer)->inherits("QCheckBox")) {
+            if (((QObject*)pointer)->inherits("QAction")) {
+                QPixmap objectImage(imagePath);
+                objectImage.setDevicePixelRatio(pixelRatio);
+                QIcon objectIcon;
+                objectIcon.addPixmap(objectImage);
+                ((QAction*)pointer)->setIcon(objectIcon);
+            }
+            else if (((QObject*)pointer)->inherits("QCheckBox")) {
                 QPixmap objectImage(imagePath);
                 objectImage.setDevicePixelRatio(pixelRatio);
                 QIcon objectIcon;
@@ -1053,6 +1069,12 @@ int LuaEngineGui::createMenuEntry(lua_State *L_p)
             pushPointer(L_p, action);
             return 1;
         }
+        else if (pointer != NULL && ((QObject*)pointer)->inherits("QToolBar")) {
+            QAction *action = new QAction(getVariant(L_p, 1).toString(), (QObject*)pointer);
+            action->setObjectName(nameForPointer(action));
+            ((QToolBar*)pointer)->addAction(action);
+            pushPointer(L_p, action);
+        }
     }
     return 0;
 }
@@ -1066,6 +1088,11 @@ int LuaEngineGui::createMenuSeparator(lua_State *L_p)
             pushPointer(L_p, action);
             return 1;
         }
+        else if (pointer != NULL && ((QObject*)pointer)->inherits("QToolBar")) {
+            QAction *action = ((QToolBar*)pointer)->addSeparator();
+            pushPointer(L_p, action);
+            return 1;
+        }
     }
     return 0;
 }
@@ -1239,6 +1266,25 @@ int LuaEngineGui::createTextEdit(lua_State *L_p)
     return 1;
 }
 
+int LuaEngineGui::createToolBar(lua_State *L_p)
+{
+    if (getArgumentCount(L_p) >= 1) {
+        void *pointer = getPointer(L_p, 1);
+        if (pointer != NULL && ((QObject*)pointer)->inherits("QMainWindow")) {
+            Qt::ToolBarArea toolBarArea = Qt::TopToolBarArea;
+            if (getArgumentCount(L_p) >= 2) {
+                toolBarArea = (Qt::ToolBarArea)getVariant(L_p, 2).toInt();
+            }
+            QToolBar *toolBar = new QToolBar((QWidget*)pointer);
+            toolBar->setObjectName(nameForPointer(toolBar));
+            ((QMainWindow*)pointer)->addToolBar(toolBarArea, toolBar);
+            pushPointer(L_p, toolBar);
+            return 1;
+        }
+    }
+    return 0;
+}
+
 int LuaEngineGui::createToolButton(lua_State *L_p)
 {
     QLayout *layout = nullptr;
diff --git a/src/luaenginegui/luaengine/LuaEngineGui.h b/src/luaenginegui/luaengine/LuaEngineGui.h
index 837ea90..ece8a13 100644
--- a/src/luaenginegui/luaengine/LuaEngineGui.h
+++ b/src/luaenginegui/luaengine/LuaEngineGui.h
@@ -77,6 +77,7 @@ public:
     static int createStackSwitch(lua_State *L_p);
     static int createTabBar(lua_State *L_p);
     static int createTextEdit(lua_State *L_p);
+    static int createToolBar(lua_State *L_p);
     static int createToolButton(lua_State *L_p);
     static int createWidgetTab(lua_State *L_p);
     static int createWidgetStack(lua_State *L_p);