|
@@ -1,11 +1,12 @@
|
|
|
#include "CmQtEditor.h"
|
|
#include "CmQtEditor.h"
|
|
|
-#include "CmProjectPrefs.h"
|
|
|
|
|
#include "CmQtDockOverlayWidget.h"
|
|
#include "CmQtDockOverlayWidget.h"
|
|
|
#include <QtWidgets/QMenuBar>
|
|
#include <QtWidgets/QMenuBar>
|
|
|
#include <QtWidgets/QToolBar>
|
|
#include <QtWidgets/QToolBar>
|
|
|
#include <QtWidgets/QStatusBar>
|
|
#include <QtWidgets/QStatusBar>
|
|
|
#include <QtCore/QLocale>
|
|
#include <QtCore/QLocale>
|
|
|
#include <QtWidgets/QApplication>
|
|
#include <QtWidgets/QApplication>
|
|
|
|
|
+#include <boost/bind.hpp>
|
|
|
|
|
+#include "CmException.h"
|
|
|
|
|
|
|
|
namespace CamelotEditor
|
|
namespace CamelotEditor
|
|
|
{
|
|
{
|
|
@@ -43,14 +44,10 @@ namespace CamelotEditor
|
|
|
mStatusBar->setObjectName(QStringLiteral("statusBar"));
|
|
mStatusBar->setObjectName(QStringLiteral("statusBar"));
|
|
|
setStatusBar(mStatusBar);
|
|
setStatusBar(mStatusBar);
|
|
|
|
|
|
|
|
- mFileMenu = new QMenu(mMenuBar);
|
|
|
|
|
- mFileMenu->setObjectName(QString::fromUtf8("fileMenu"));
|
|
|
|
|
-
|
|
|
|
|
- mWindowMenu = new QMenu(mMenuBar);
|
|
|
|
|
- mWindowMenu->setObjectName(QString::fromUtf8("windowMenu"));
|
|
|
|
|
-
|
|
|
|
|
- mMenuBar->addAction(mFileMenu->menuAction());
|
|
|
|
|
- mMenuBar->addAction(mWindowMenu->menuAction());
|
|
|
|
|
|
|
+ addMenuItemCallback("File", "Open project", boost::bind(&QtEditor::openProject, this));
|
|
|
|
|
+ addMenuItemCallback("File", "Save project", boost::bind(&QtEditor::saveProject, this));
|
|
|
|
|
+ addMenuItemSeparator("File");
|
|
|
|
|
+ addMenuItemCallback("File", "Exit", boost::bind(&QtEditor::exitEditor, this));
|
|
|
|
|
|
|
|
mDockOverlayWidget = new QtDockOverlayWidget(this);
|
|
mDockOverlayWidget = new QtDockOverlayWidget(this);
|
|
|
|
|
|
|
@@ -61,11 +58,66 @@ namespace CamelotEditor
|
|
|
|
|
|
|
|
void QtEditor::retranslateUi()
|
|
void QtEditor::retranslateUi()
|
|
|
{
|
|
{
|
|
|
- QString title = tr("Camelot Editor") + " - " + gProjectPrefs().getProjectName();
|
|
|
|
|
|
|
+ setProjectName("No project");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void QtEditor::setProjectName(const QString& name)
|
|
|
|
|
+ {
|
|
|
|
|
+ QString title = tr("Camelot Editor") + " - " + name;
|
|
|
|
|
|
|
|
setWindowTitle(title);
|
|
setWindowTitle(title);
|
|
|
- mFileMenu->setTitle(tr("File"));
|
|
|
|
|
- mWindowMenu->setTitle(tr("Windows"));
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ QAction* QtEditor::addMenuItemCallback(const QString& menuCategory, const QString& itemName, boost::function<void()> callback)
|
|
|
|
|
+ {
|
|
|
|
|
+ QMenu* menu = findOrCreateMenu(menuCategory);
|
|
|
|
|
+
|
|
|
|
|
+ QAction* newAction = menu->addAction(itemName);
|
|
|
|
|
+ connect(newAction, &QAction::triggered, callback);
|
|
|
|
|
+
|
|
|
|
|
+ return newAction;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void QtEditor::addMenuItemSeparator(const QString& menuCategory)
|
|
|
|
|
+ {
|
|
|
|
|
+ QMenu* menu = findOrCreateMenu(menuCategory);
|
|
|
|
|
+
|
|
|
|
|
+ menu->addSeparator();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ QMenu* QtEditor::findOrCreateMenu(const QString& name)
|
|
|
|
|
+ {
|
|
|
|
|
+ auto iterFind = mMenus.find(name);
|
|
|
|
|
+ QMenu* menu = nullptr;
|
|
|
|
|
+
|
|
|
|
|
+ if(iterFind == mMenus.end())
|
|
|
|
|
+ {
|
|
|
|
|
+ menu = new QMenu(mMenuBar);
|
|
|
|
|
+ menu->setObjectName(name);
|
|
|
|
|
+ menu->setTitle(name);
|
|
|
|
|
+ mMenuBar->addAction(menu->menuAction());
|
|
|
|
|
+
|
|
|
|
|
+ mMenus[name] = menu;
|
|
|
|
|
+
|
|
|
|
|
+ return menu;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ return iterFind->second;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void QtEditor::openProject()
|
|
|
|
|
+ {
|
|
|
|
|
+ CM_EXCEPT(NotImplementedException, "Not implemented");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void QtEditor::saveProject()
|
|
|
|
|
+ {
|
|
|
|
|
+ CM_EXCEPT(NotImplementedException, "Not implemented");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void QtEditor::exitEditor()
|
|
|
|
|
+ {
|
|
|
|
|
+ exit(1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|