diff --git a/src/luaengineapp/app.lua b/src/luaengineapp/app.lua index 2136a93..ffde2df 100644 --- a/src/luaengineapp/app.lua +++ b/src/luaengineapp/app.lua @@ -26,12 +26,10 @@ function main() local menuBar = createMenuBar(mainWindow) local menuFile = createMenu("File", menuBar) - local menuEntryExit = createMenuEntry("Exit", menuFile) - setMenuShortcut(menuEntryExit, "Alt+F4") + local menuEntryExit = createMenuEntry("Exit", menuFile, "Alt+F4") connect(menuEntryExit, "triggered()", "closeWindow") local menuHelp = createMenu("Help", menuBar) - local menuEntryAbout = createMenuEntry("About LuaEngine", menuHelp) - setMenuShortcut(menuEntryAbout, "Ctrl+P") + local menuEntryAbout = createMenuEntry("About LuaEngine", menuHelp, "Ctrl+P") connect(menuEntryAbout, "triggered()", "showAboutBox") local labelLayout = createLayout(HorizontalLayout, mainLayout) diff --git a/src/luaengineapp/edit.lua b/src/luaengineapp/edit.lua index a39349f..cfeb800 100644 --- a/src/luaengineapp/edit.lua +++ b/src/luaengineapp/edit.lua @@ -28,24 +28,19 @@ function main() local menuBar = createMenuBar(mainWindow) local menuFile = createMenu("&File", menuBar) - local menuEntryNew = createMenuEntry("&New", menuFile) - setMenuShortcut(menuEntryNew, "Ctrl+N") + local menuEntryNew = createMenuEntry("&New", menuFile, "Ctrl+N") connect(menuEntryNew, "triggered()", "editorNew") - local menuEntryOpen = createMenuEntry("&Open...", menuFile) - setMenuShortcut(menuEntryOpen, "Ctrl+O") + local menuEntryOpen = createMenuEntry("&Open...", menuFile, "Ctrl+O") connect(menuEntryOpen, "triggered()", "editorOpen") - local menuEntrySave = createMenuEntry("&Save...", menuFile) - setMenuShortcut(menuEntrySave, "Ctrl+S") + local menuEntrySave = createMenuEntry("&Save...", menuFile, "Ctrl+S") connect(menuEntrySave, "triggered()", "editorSave") local menuEntrySaveAs = createMenuEntry("Save &as...", menuFile) connect(menuEntrySaveAs, "triggered()", "editorSaveAs") createMenuSeparator(menuFile) - local menuEntryExit = createMenuEntry("&Exit", menuFile) - setMenuShortcut(menuEntryExit, "Alt+F4") + local menuEntryExit = createMenuEntry("&Exit", menuFile, "Alt+F4") connect(menuEntryExit, "triggered()", "editorClose") local menuHelp = createMenu("&Help", menuBar) - local menuEntryAbout = createMenuEntry("&About LE Text Editor", menuHelp) - setMenuShortcut(menuEntryAbout, "Ctrl+P") + local menuEntryAbout = createMenuEntry("&About LE Text Editor", menuHelp, "Ctrl+P") connect(menuEntryAbout, "triggered()", "editorAboutBox") textEditor = createPlainTextEdit("", mainWindow) diff --git a/src/luaenginegui/luaengine/LuaEngineGui.cpp b/src/luaenginegui/luaengine/LuaEngineGui.cpp index 4f4e379..d692158 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.cpp +++ b/src/luaenginegui/luaengine/LuaEngineGui.cpp @@ -17,6 +17,7 @@ #include "LuaEngineGui.h" #include +#include #include #include #include @@ -69,7 +70,9 @@ void LuaEngineGui::pushClass(lua_State *L_p) pushFunction(L_p, "closeWidget", closeWidget); pushFunction(L_p, "executeWidget", executeWidget); pushFunction(L_p, "showWidget", showWidget); + pushFunction(L_p, "isWidgetChecked", isWidgetChecked); pushFunction(L_p, "getWidgetText", getWidgetText); + pushFunction(L_p, "setWidgetChecked", setWidgetChecked); pushFunction(L_p, "setWidgetFixed", setWidgetFixed); pushFunction(L_p, "setWidgetLayout", setWidgetLayout); pushFunction(L_p, "setWidgetText", setWidgetText); @@ -118,6 +121,9 @@ void LuaEngineGui::pushClass(lua_State *L_p) // Push Button pushFunction(L_p, "createPushButton", createPushButton); + // Check Box + pushFunction(L_p, "createRadioButton", createRadioButton); + // Spacer Item pushFunction(L_p, "createSpacerItem", createSpacerItem); @@ -360,6 +366,27 @@ int LuaEngineGui::setMenuShortcut(lua_State *L_p) return 0; } +int LuaEngineGui::setWidgetChecked(lua_State *L_p) +{ + if (getArgumentCount(L_p) >= 1) { + void *pointer = getPointer(L_p, 1); + if (pointer != NULL) { + bool isChecked = true; + if (getArgumentCount(L_p) >= 2) { + isChecked = getVariant(L_p, 2).toBool(); + } + if (((QObject*)pointer)->inherits("QCheckBox")) { + ((QCheckBox*)pointer)->setChecked(isChecked); + } + else if (((QObject*)pointer)->inherits("QRadioButton")) { + ((QRadioButton*)pointer)->setChecked(isChecked); + } + return 0; + } + } + return 0; +} + int LuaEngineGui::setWidgetFixed(lua_State *L_p) { if (getArgumentCount(L_p) >= 1) { @@ -443,6 +470,9 @@ 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("QRadioButton")) { + ((QRadioButton*)pointer)->setText(getVariant(L_p, 2).toString()); + } else if (((QObject*)pointer)->inherits("QTextEdit")) { ((QTextEdit*)pointer)->setHtml(getVariant(L_p, 2).toString()); } @@ -716,6 +746,10 @@ int LuaEngineGui::createMenuEntry(lua_State *L_p) QAction *action = new QAction(getVariant(L_p, 1).toString(), (QObject*)pointer); action->setObjectName(nameForPointer(action)); ((QMenu*)pointer)->addAction(action); + if (getArgumentCount(L_p) >= 3) { + action->setShortcut(QKeySequence::fromString(getVariant(L_p, 3).toString())); + action->setShortcutContext(Qt::ApplicationShortcut); + } pushPointer(L_p, action); return 1; } @@ -782,6 +816,29 @@ int LuaEngineGui::createPushButton(lua_State *L_p) return 1; } +int LuaEngineGui::createRadioButton(lua_State *L_p) +{ + QWidget *parent = nullptr; + QString labelText = "LuaEngine"; + if (getArgumentCount(L_p) >= 1) { + labelText = 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; + } + } + } + QRadioButton *radioButton = new QRadioButton(parent); + radioButton->setObjectName(nameForPointer(radioButton)); + radioButton->setText(labelText); + pushPointer(L_p, radioButton); + return 1; +} + int LuaEngineGui::createSpacerItem(lua_State *L_p) { if (getArgumentCount(L_p) >= 3) { @@ -829,6 +886,24 @@ int LuaEngineGui::createTextEdit(lua_State *L_p) return 1; } +int LuaEngineGui::isWidgetChecked(lua_State *L_p) +{ + if (getArgumentCount(L_p) >= 1) { + void *pointer = getPointer(L_p, 1); + if (pointer != NULL) { + if (((QObject*)pointer)->inherits("QCheckBox")) { + pushVariant(L_p, ((QCheckBox*)pointer)->isChecked()); + return 1; + } + else if (((QObject*)pointer)->inherits("QRadioButton")) { + pushVariant(L_p, ((QRadioButton*)pointer)->isChecked()); + return 1; + } + } + } + return 0; +} + int LuaEngineGui::getWindow(lua_State *L_p) { if (getArgumentCount(L_p) >= 1) { @@ -880,6 +955,10 @@ int LuaEngineGui::getWidgetText(lua_State *L_p) pushVariant(L_p, ((QPlainTextEdit*)pointer)->toPlainText()); return 1; } + else if (((QObject*)pointer)->inherits("QRadioButton")) { + pushVariant(L_p, ((QRadioButton*)pointer)->text()); + return 1; + } else if (((QObject*)pointer)->inherits("QTextEdit")) { pushVariant(L_p, ((QTextEdit*)pointer)->toHtml()); return 1; diff --git a/src/luaenginegui/luaengine/LuaEngineGui.h b/src/luaenginegui/luaengine/LuaEngineGui.h index dd6678c..9863bbd 100644 --- a/src/luaenginegui/luaengine/LuaEngineGui.h +++ b/src/luaenginegui/luaengine/LuaEngineGui.h @@ -37,6 +37,7 @@ public: static int showWidget(lua_State *L_p); static int setLayoutMargins(lua_State *L_p); static int setMenuShortcut(lua_State *L_p); + static int setWidgetChecked(lua_State *L_p); static int setWidgetFixed(lua_State *L_p); static int setWidgetLayout(lua_State *L_p); static int setWidgetSize(lua_State *L_p); @@ -56,8 +57,10 @@ public: static int createMenuSeparator(lua_State *L_p); static int createPlainTextEdit(lua_State *L_p); static int createPushButton(lua_State *L_p); + static int createRadioButton(lua_State *L_p); static int createSpacerItem(lua_State *L_p); static int createTextEdit(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);