diff options
-rw-r--r-- | tikzit/src/data/tikzdocument.cpp | 7 | ||||
-rw-r--r-- | tikzit/src/data/tikzdocument.h | 2 | ||||
-rw-r--r-- | tikzit/src/gui/mainmenu.cpp | 94 | ||||
-rw-r--r-- | tikzit/src/gui/mainmenu.h | 43 | ||||
-rw-r--r-- | tikzit/src/gui/mainmenu.ui | 151 | ||||
-rw-r--r-- | tikzit/src/gui/mainwindow.cpp | 1 | ||||
-rw-r--r-- | tikzit/src/tikzit.cpp | 61 | ||||
-rw-r--r-- | tikzit/src/tikzit.h | 24 | ||||
-rw-r--r-- | tikzit/tikzit.pro | 6 |
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 \ |