summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2017-12-18 22:50:42 +0000
committerAleks Kissinger <aleks0@gmail.com>2017-12-18 22:50:42 +0000
commit144c37b05a065126aaf6ece7f9e5a8b56ec45f45 (patch)
tree206cf0a1cb0b2ed126fa3a060411f7c3df4d9d8a
parent7d099bc9a3cd3c449b3af74dd7e66b5a79695497 (diff)
created proper class for main menu
-rw-r--r--tikzit/src/data/tikzdocument.cpp7
-rw-r--r--tikzit/src/data/tikzdocument.h2
-rw-r--r--tikzit/src/gui/mainmenu.cpp94
-rw-r--r--tikzit/src/gui/mainmenu.h43
-rw-r--r--tikzit/src/gui/mainmenu.ui151
-rw-r--r--tikzit/src/gui/mainwindow.cpp1
-rw-r--r--tikzit/src/tikzit.cpp61
-rw-r--r--tikzit/src/tikzit.h24
-rw-r--r--tikzit/tikzit.pro6
9 files changed, 289 insertions, 100 deletions
diff --git a/tikzit/src/data/tikzdocument.cpp b/tikzit/src/data/tikzdocument.cpp
index c8d4ce9..13d4c6e 100644
--- a/tikzit/src/data/tikzdocument.cpp
+++ b/tikzit/src/data/tikzdocument.cpp
@@ -13,6 +13,13 @@ TikzDocument::TikzDocument(QObject *parent) : QObject(parent)
_parseSuccess = true;
_fileName = "";
_shortName = "";
+ _undoStack = new QUndoStack();
+}
+
+TikzDocument::~TikzDocument()
+{
+ delete _graph;
+ delete _undoStack;
}
QUndoStack *TikzDocument::undoStack() const
diff --git a/tikzit/src/data/tikzdocument.h b/tikzit/src/data/tikzdocument.h
index 8bd4143..f574f5c 100644
--- a/tikzit/src/data/tikzdocument.h
+++ b/tikzit/src/data/tikzdocument.h
@@ -16,6 +16,8 @@ class TikzDocument : public QObject
Q_OBJECT
public:
explicit TikzDocument(QObject *parent = 0);
+ ~TikzDocument();
+
Graph *graph() const;
QString tikz() const;
QUndoStack *undoStack() const;
diff --git a/tikzit/src/gui/mainmenu.cpp b/tikzit/src/gui/mainmenu.cpp
new file mode 100644
index 0000000..6c8f395
--- /dev/null
+++ b/tikzit/src/gui/mainmenu.cpp
@@ -0,0 +1,94 @@
+#include "mainmenu.h"
+#include "tikzit.h"
+
+MainMenu::MainMenu()
+{
+ ui.setupUi(this);
+}
+
+// File
+void MainMenu::on_actionNew_triggered()
+{
+ tikzit->newDoc();
+}
+
+void MainMenu::on_actionOpen_triggered()
+{
+ tikzit->open();
+}
+
+void MainMenu::on_actionClose_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionSave_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionSave_As_triggered()
+{
+ // TODO
+}
+
+
+// Edit
+void MainMenu::on_actionUndo_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionRedo_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionCut_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionCopy_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionPaste_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionDelete_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionSelect_All_triggered()
+{
+ // TODO
+}
+
+void MainMenu::on_actionDeselect_All_triggered()
+{
+ // TODO
+}
+
+
+// Tikz
+void MainMenu::on_actionParse_triggered()
+{
+ // TODO
+}
+
+
+// View
+void MainMenu::on_actionZoom_In_triggered()
+{
+ if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzView()->zoomIn();
+}
+
+void MainMenu::on_actionZoom_Out_triggered()
+{
+ if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzView()->zoomOut();
+}
diff --git a/tikzit/src/gui/mainmenu.h b/tikzit/src/gui/mainmenu.h
new file mode 100644
index 0000000..d85e271
--- /dev/null
+++ b/tikzit/src/gui/mainmenu.h
@@ -0,0 +1,43 @@
+#ifndef MAINMENU_H
+#define MAINMENU_H
+
+#include "ui_mainmenu.h"
+
+#include <QMenuBar>
+
+class MainMenu : public QMenuBar
+{
+ Q_OBJECT
+public:
+ MainMenu();
+
+private:
+ Ui::MainMenu ui;
+
+public slots:
+ // File
+ void on_actionNew_triggered();
+ void on_actionOpen_triggered();
+ void on_actionClose_triggered();
+ void on_actionSave_triggered();
+ void on_actionSave_As_triggered();
+
+ // Edit
+ void on_actionUndo_triggered();
+ void on_actionRedo_triggered();
+ void on_actionCut_triggered();
+ void on_actionCopy_triggered();
+ void on_actionPaste_triggered();
+ void on_actionDelete_triggered();
+ void on_actionSelect_All_triggered();
+ void on_actionDeselect_All_triggered();
+
+ // Tikz
+ void on_actionParse_triggered();
+
+ // View
+ void on_actionZoom_In_triggered();
+ void on_actionZoom_Out_triggered();
+};
+
+#endif // MAINMENU_H
diff --git a/tikzit/src/gui/mainmenu.ui b/tikzit/src/gui/mainmenu.ui
index d3eed0a..c9b6f44 100644
--- a/tikzit/src/gui/mainmenu.ui
+++ b/tikzit/src/gui/mainmenu.ui
@@ -1,122 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>MainMenu</class>
- <widget class="QMenuBar" name="MainMenu">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>476</width>
- <height>22</height>
- </rect>
- </property>
- <widget class="QMenu" name="menuFile">
- <property name="title">
- <string>File</string>
- </property>
- <addaction name="actionNew"/>
- <addaction name="actionOpen"/>
- <addaction name="separator"/>
- <addaction name="actionClose"/>
- <addaction name="actionSave"/>
- <addaction name="actionSave_As"/>
- </widget>
- <widget class="QMenu" name="menuEdit">
- <property name="title">
- <string>Edit</string>
- </property>
- <addaction name="actionUndo"/>
- <addaction name="actionRedo"/>
- <addaction name="separator"/>
- <addaction name="actionCut"/>
- <addaction name="actionCopy"/>
- <addaction name="actionPase"/>
- <addaction name="actionDelete"/>
- <addaction name="separator"/>
- <addaction name="actionSelect_All"/>
- <addaction name="actionDeselect_All"/>
- </widget>
- <widget class="QMenu" name="menuTikz">
- <property name="title">
- <string>Tikz</string>
- </property>
- <addaction name="actionParse"/>
- </widget>
- <widget class="QMenu" name="menuView">
- <property name="title">
- <string>View</string>
- </property>
- <addaction name="actionZoom_In"/>
- <addaction name="actionZoom_Out"/>
- </widget>
- <addaction name="menuFile"/>
- <addaction name="menuEdit"/>
- <addaction name="menuView"/>
- <addaction name="menuTikz"/>
+ <class>MainMenu</class>
+ <widget class="QMenuBar" name="MainMenu">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>476</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionNew"/>
+ <addaction name="actionOpen"/>
+ <addaction name="separator"/>
+ <addaction name="actionClose"/>
+ <addaction name="actionSave"/>
+ <addaction name="actionSave_As"/>
+ </widget>
+ <widget class="QMenu" name="menuEdit">
+ <property name="title">
+ <string>Edit</string>
+ </property>
+ <addaction name="actionUndo"/>
+ <addaction name="actionRedo"/>
+ <addaction name="separator"/>
+ <addaction name="actionCut"/>
+ <addaction name="actionCopy"/>
+ <addaction name="actionPaste"/>
+ <addaction name="actionDelete"/>
+ <addaction name="separator"/>
+ <addaction name="actionSelect_All"/>
+ <addaction name="actionDeselect_All"/>
+ </widget>
+ <widget class="QMenu" name="menuTikz">
+ <property name="title">
+ <string>Tikz</string>
+ </property>
+ <addaction name="actionParse"/>
+ </widget>
+ <widget class="QMenu" name="menuView">
+ <property name="title">
+ <string>View</string>
+ </property>
+ <addaction name="actionZoom_In"/>
+ <addaction name="actionZoom_Out"/>
+ </widget>
<action name="actionNew">
<property name="text">
<string>New...</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+N</string>
+ </property>
</action>
<action name="actionOpen">
<property name="text">
<string>Open...</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
+ </property>
</action>
<action name="actionClose">
<property name="text">
<string>Close</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+W</string>
+ </property>
</action>
<action name="actionSave">
<property name="text">
<string>Save</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+S</string>
+ </property>
</action>
<action name="actionSave_As">
<property name="text">
<string>Save As...</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+Shift+S</string>
+ </property>
</action>
<action name="actionUndo">
<property name="text">
<string>Undo</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+Z</string>
+ </property>
</action>
<action name="actionRedo">
<property name="text">
<string>Redo</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+Shift+Z</string>
+ </property>
</action>
<action name="actionCut">
<property name="text">
<string>Cut</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+X</string>
+ </property>
</action>
<action name="actionCopy">
<property name="text">
<string>Copy</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+C</string>
+ </property>
</action>
- <action name="actionPase">
+ <action name="actionPaste">
<property name="text">
<string>Paste</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+V</string>
+ </property>
</action>
<action name="actionDelete">
<property name="text">
<string>Delete</string>
</property>
+ <property name="shortcut">
+ <string>Backspace</string>
+ </property>
</action>
<action name="actionSelect_All">
<property name="text">
<string>Select All</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+A</string>
+ </property>
</action>
<action name="actionDeselect_All">
<property name="text">
<string>Deselect All</string>
</property>
+ <property name="shortcut">
+ <string>Ctrl+D</string>
+ </property>
</action>
<action name="actionParse">
<property name="text">
@@ -142,5 +177,11 @@
<string>Ctrl+-</string>
</property>
</action>
-</widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuEdit"/>
+ <addaction name="menuView"/>
+ <addaction name="menuTikz"/>
+ </widget>
+ <resources/>
+ <connections/>
</ui>
diff --git a/tikzit/src/gui/mainwindow.cpp b/tikzit/src/gui/mainwindow.cpp
index 0520af2..740c0eb 100644
--- a/tikzit/src/gui/mainwindow.cpp
+++ b/tikzit/src/gui/mainwindow.cpp
@@ -37,6 +37,7 @@ MainWindow::MainWindow(QWidget *parent) :
MainWindow::~MainWindow()
{
tikzit->removeWindow(this);
+ delete ui;
}
void MainWindow::open(QString fileName)
diff --git a/tikzit/src/tikzit.cpp b/tikzit/src/tikzit.cpp
index 0c9fdb1..94fc644 100644
--- a/tikzit/src/tikzit.cpp
+++ b/tikzit/src/tikzit.cpp
@@ -11,13 +11,14 @@ QFont Tikzit::LABEL_FONT("Courrier", 9);
Tikzit::Tikzit()
{
+ _mainMenu = new MainMenu();
+
_activeWindow = 0;
QMainWindow *dummy = new QMainWindow();
_toolPalette = new ToolPalette(dummy);
_propertyPalette = new PropertyPalette(dummy);
- createMenu();
loadStyles();
_toolPalette->show();
@@ -27,10 +28,10 @@ Tikzit::Tikzit()
_windows[0]->show();
}
-QMenuBar *Tikzit::mainMenu() const
-{
- return _mainMenu;
-}
+//QMenuBar *Tikzit::mainMenu() const
+//{
+// return _mainMenu;
+//}
ToolPalette *Tikzit::toolPalette() const
{
@@ -42,26 +43,26 @@ PropertyPalette *Tikzit::propertyPalette() const
return _propertyPalette;
}
-void Tikzit::createMenu()
-{
- _mainMenu = new QMenuBar(0);
- QMenu *file = _mainMenu->addMenu(tr("&File"));
- QAction *aNew = file->addAction(tr("&New"));
- aNew->setShortcut(QKeySequence::New);
- QAction *aOpen = file->addAction(tr("&Open"));
- aOpen->setShortcut(QKeySequence::Open);
-
- QMenu *view = _mainMenu->addMenu(tr("&View"));
- QAction *aZoomIn = view->addAction(tr("Zoom &In"));
- aZoomIn->setShortcut(QKeySequence::ZoomIn);
- QAction *aZoomOut = view->addAction(tr("Zoom &Out"));
- aZoomOut->setShortcut(QKeySequence::ZoomOut);
-
- connect(aNew, SIGNAL(triggered()), this, SLOT(newDoc()));
- connect(aOpen, SIGNAL(triggered()), this, SLOT(open()));
- connect(aZoomIn, SIGNAL(triggered()), this, SLOT(zoomIn()));
- connect(aZoomOut, SIGNAL(triggered()), this, SLOT(zoomOut()));
-}
+//void Tikzit::createMenu()
+//{
+// _mainMenu = new QMenuBar(0);
+// QMenu *file = _mainMenu->addMenu(tr("&File"));
+// QAction *aNew = file->addAction(tr("&New"));
+// aNew->setShortcut(QKeySequence::New);
+// QAction *aOpen = file->addAction(tr("&Open"));
+// aOpen->setShortcut(QKeySequence::Open);
+
+// QMenu *view = _mainMenu->addMenu(tr("&View"));
+// QAction *aZoomIn = view->addAction(tr("Zoom &In"));
+// aZoomIn->setShortcut(QKeySequence::ZoomIn);
+// QAction *aZoomOut = view->addAction(tr("Zoom &Out"));
+// aZoomOut->setShortcut(QKeySequence::ZoomOut);
+
+// connect(aNew, SIGNAL(triggered()), this, SLOT(newDoc()));
+// connect(aOpen, SIGNAL(triggered()), this, SLOT(open()));
+// connect(aZoomIn, SIGNAL(triggered()), this, SLOT(zoomIn()));
+// connect(aZoomOut, SIGNAL(triggered()), this, SLOT(zoomOut()));
+//}
void Tikzit::loadStyles()
{
@@ -123,13 +124,3 @@ void Tikzit::open()
}
}
}
-
-void Tikzit::zoomIn()
-{
- if (_activeWindow != 0) _activeWindow->tikzView()->zoomIn();
-}
-
-void Tikzit::zoomOut()
-{
- if (_activeWindow != 0) _activeWindow->tikzView()->zoomOut();
-}
diff --git a/tikzit/src/tikzit.h b/tikzit/src/tikzit.h
index 252bf35..b0e372d 100644
--- a/tikzit/src/tikzit.h
+++ b/tikzit/src/tikzit.h
@@ -1,7 +1,15 @@
+/**
+ * Tikzit is the top-level class which maintains the global application state. For convenience,
+ * it also inherits the main menu.
+ */
+
#ifndef TIKZIT_H
#define TIKZIT_H
#include "mainwindow.h"
+#include "mainmenu.h"
+#include "ui_mainmenu.h"
+
#include "toolpalette.h"
#include "propertypalette.h"
#include "nodestyle.h"
@@ -38,11 +46,11 @@ inline QPointF bezierInterpolateFull (float dist, QPointF c0, QPointF c1, QPoint
bezierInterpolate (dist, c0.y(), c1.y(), c2.y(), c3.y()));
}
+
class Tikzit : public QObject {
Q_OBJECT
public:
Tikzit();
- QMenuBar *mainMenu() const;
ToolPalette *toolPalette() const;
PropertyPalette *propertyPalette() const;
@@ -52,23 +60,23 @@ public:
NodeStyle nodeStyle(QString name);
static QFont LABEL_FONT;
+// Ui::MainMenu *_mainMenuUi;
+// QMenuBar *_mainMenu;
+
+ void newDoc();
+ void open();
private:
- void createMenu();
+// void createMenu();
void loadStyles();
- QMenuBar *_mainMenu;
+ MainMenu *_mainMenu;
ToolPalette *_toolPalette;
PropertyPalette *_propertyPalette;
QVector<MainWindow*> _windows;
MainWindow *_activeWindow;
QVector<NodeStyle> _nodeStyles;
-public slots:
- void newDoc();
- void open();
- void zoomIn();
- void zoomOut();
};
extern Tikzit *tikzit;
diff --git a/tikzit/tikzit.pro b/tikzit/tikzit.pro
index aa18381..f1a1d54 100644
--- a/tikzit/tikzit.pro
+++ b/tikzit/tikzit.pro
@@ -46,7 +46,8 @@ SOURCES += src/gui/mainwindow.cpp \
src/data/nodestyle.cpp \
src/gui/commands.cpp \
src/data/tikzdocument.cpp \
- src/gui/undocommands.cpp
+ src/gui/undocommands.cpp \
+ src/gui/mainmenu.cpp
HEADERS += src/gui/mainwindow.h \
src/gui/toolpalette.h \
@@ -66,7 +67,8 @@ HEADERS += src/gui/mainwindow.h \
src/data/nodestyle.h \
src/gui/commands.h \
src/data/tikzdocument.h \
- src/gui/undocommands.h
+ src/gui/undocommands.h \
+ src/gui/mainmenu.h
FORMS += src/gui/mainwindow.ui \
src/gui/propertypalette.ui \