summaryrefslogtreecommitdiff
path: root/src/gui/mainmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/mainmenu.cpp')
-rw-r--r--src/gui/mainmenu.cpp264
1 files changed, 264 insertions, 0 deletions
diff --git a/src/gui/mainmenu.cpp b/src/gui/mainmenu.cpp
new file mode 100644
index 0000000..8166c59
--- /dev/null
+++ b/src/gui/mainmenu.cpp
@@ -0,0 +1,264 @@
+/*
+ TikZiT - a GUI diagram editor for TikZ
+ Copyright (C) 2018 Aleks Kissinger
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include "mainmenu.h"
+#include "tikzit.h"
+
+#include <QDebug>
+#include <QSettings>
+#include <QMessageBox>
+
+MainMenu::MainMenu()
+{
+ QSettings settings("tikzit", "tikzit");
+ ui.setupUi(this);
+
+ if (!settings.value("check-for-updates").isNull()) {
+ ui.actionCheck_for_updates_automatically->blockSignals(true);
+ ui.actionCheck_for_updates_automatically->setChecked(settings.value("check-for-updates").toBool());
+ ui.actionCheck_for_updates_automatically->blockSignals(false);
+ }
+}
+
+void MainMenu::addDocks(QMenu *m)
+{
+ ui.menuView->addSeparator();
+ foreach (QAction *a, m->actions()) {
+ if (!a->isSeparator()) ui.menuView->addAction(a);
+ }
+}
+
+QAction *MainMenu::updatesAction()
+{
+ return ui.actionCheck_for_updates_automatically;
+}
+
+// File
+void MainMenu::on_actionNew_triggered()
+{
+ tikzit->newDoc();
+}
+
+void MainMenu::on_actionOpen_triggered()
+{
+ tikzit->open();
+}
+
+void MainMenu::on_actionClose_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->close();
+}
+
+void MainMenu::on_actionSave_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->save();
+}
+
+void MainMenu::on_actionSave_As_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->saveAs();
+}
+
+void MainMenu::on_actionExit_triggered()
+{
+ tikzit->quit();
+}
+
+
+// Edit
+void MainMenu::on_actionUndo_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->undoStack()->undo();
+}
+
+void MainMenu::on_actionRedo_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->undoStack()->redo();
+}
+
+void MainMenu::on_actionCut_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->cutToClipboard();
+}
+
+void MainMenu::on_actionCopy_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->copyToClipboard();
+}
+
+void MainMenu::on_actionPaste_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->pasteFromClipboard();
+}
+
+void MainMenu::on_actionDelete_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->deleteSelectedItems();
+}
+
+void MainMenu::on_actionSelect_All_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->selectAllNodes();
+}
+
+void MainMenu::on_actionDeselect_All_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->deselectAll();
+}
+
+void MainMenu::on_actionReflectHorizontal_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->reflectNodes(true);
+}
+
+void MainMenu::on_actionReflectVertical_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->reflectNodes(false);
+}
+
+void MainMenu::on_actionRotateCW_triggered() {
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->rotateNodes(true);
+}
+
+void MainMenu::on_actionRotateCCW_triggered() {
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->rotateNodes(false);
+}
+
+void MainMenu::on_actionBring_to_Front_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->reorderSelection(true);
+}
+
+void MainMenu::on_actionSend_to_Back_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->reorderSelection(false);
+}
+
+void MainMenu::on_actionExtendUp_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->extendSelectionUp();
+}
+
+void MainMenu::on_actionExtendDown_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->extendSelectionDown();
+}
+
+void MainMenu::on_actionExtendLeft_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->extendSelectionLeft();
+}
+
+void MainMenu::on_actionExtendRight_triggered()
+{
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzScene()->extendSelectionRight();
+}
+
+
+// Tikz
+void MainMenu::on_actionParse_triggered()
+{
+ MainWindow *win = tikzit->activeWindow();
+ if (win != 0) {
+ if (win->tikzScene()->parseTikz(win->tikzSource())) {
+ QList<int> sz = win->splitter()->sizes();
+ sz[0] = sz[0] + sz[1];
+ sz[1] = 0;
+ win->splitter()->setSizes(sz);
+ }
+ }
+}
+
+void MainMenu::on_actionRevert_triggered()
+{
+ MainWindow *win = tikzit->activeWindow();
+ if (win != 0) {
+ win->tikzDocument()->refreshTikz();
+ win->tikzScene()->setEnabled(true);
+ }
+}
+
+void MainMenu::on_actionJump_to_Selection_triggered()
+{
+ MainWindow *win = tikzit->activeWindow();
+ if (win != 0) {
+ //qDebug() << "jump to selection on line:" << win->tikzScene()->lineNumberForSelection();
+ QList<int> sz = win->splitter()->sizes();
+ if (sz[1] == 0) {
+ sz[1] = 200;
+ win->splitter()->setSizes(sz);
+ }
+ win->setSourceLine(win->tikzScene()->lineNumberForSelection());
+ }
+}
+
+
+// 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();
+}
+
+void MainMenu::on_actionAbout_triggered()
+{
+ QMessageBox::about(this,
+ "TikZiT",
+ "<h2><b>TikZiT</b></h2>"
+ "<p><i>version " TIKZIT_VERSION "</i></p>"
+ "<p>TikZiT is a GUI diagram editor for PGF/TikZ. It is licensed under the "
+ "<a href=\"https://www.gnu.org/licenses/gpl-3.0.en.html\">GNU General "
+ "Public License, version 3.0</a>.</p>"
+ "<p>For more info and updates, visit: "
+ "<a href=\"https://tikzit.github.io\">tikzit.github.io</a></p>");
+}
+
+void MainMenu::on_actionCheck_for_updates_automatically_triggered()
+{
+ tikzit->setCheckForUpdates(ui.actionCheck_for_updates_automatically->isChecked());
+}
+
+void MainMenu::on_actionCheck_now_triggered()
+{
+ tikzit->checkForUpdates();
+}