From 144c37b05a065126aaf6ece7f9e5a8b56ec45f45 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Mon, 18 Dec 2017 22:50:42 +0000 Subject: created proper class for main menu --- tikzit/src/data/tikzdocument.cpp | 7 ++ tikzit/src/data/tikzdocument.h | 2 + tikzit/src/gui/mainmenu.cpp | 94 ++++++++++++++++++++++++ tikzit/src/gui/mainmenu.h | 43 +++++++++++ tikzit/src/gui/mainmenu.ui | 151 +++++++++++++++++++++++++-------------- tikzit/src/gui/mainwindow.cpp | 1 + tikzit/src/tikzit.cpp | 61 +++++++--------- tikzit/src/tikzit.h | 24 ++++--- tikzit/tikzit.pro | 6 +- 9 files changed, 289 insertions(+), 100 deletions(-) create mode 100644 tikzit/src/gui/mainmenu.cpp create mode 100644 tikzit/src/gui/mainmenu.h (limited to 'tikzit') 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 + +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 @@ - MainMenu - - - - 0 - 0 - 476 - 22 - - - - - File - - - - - - - - - - - Edit - - - - - - - - - - - - - - - Tikz - - - - - - View - - - - - - - - + MainMenu + + + + 0 + 0 + 476 + 22 + + + + + File + + + + + + + + + + + Edit + + + + + + + + + + + + + + + Tikz + + + + + + View + + + + New... + + Ctrl+N + Open... + + Ctrl+O + Close + + Ctrl+W + Save + + Ctrl+S + Save As... + + Ctrl+Shift+S + Undo + + Ctrl+Z + Redo + + Ctrl+Shift+Z + Cut + + Ctrl+X + Copy + + Ctrl+C + - + Paste + + Ctrl+V + Delete + + Backspace + Select All + + Ctrl+A + Deselect All + + Ctrl+D + @@ -142,5 +177,11 @@ Ctrl+- - + + + + + + + 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 _windows; MainWindow *_activeWindow; QVector _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 \ -- cgit v1.2.3