summaryrefslogtreecommitdiff
path: root/tikzit/src/gui/mainwindow.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2017-02-03 16:11:29 +0100
committerAleks Kissinger <aleks0@gmail.com>2017-02-03 16:11:29 +0100
commite1756ba69dd626073e22fd0a4f4c5fda42c88829 (patch)
treed79f72a648f89ca9201681b4c5443fceeb8faad9 /tikzit/src/gui/mainwindow.cpp
parentb392859bb192a2e02aec09f2eacf5ecdf44fdfe4 (diff)
drawing grid
Diffstat (limited to 'tikzit/src/gui/mainwindow.cpp')
-rw-r--r--tikzit/src/gui/mainwindow.cpp89
1 files changed, 83 insertions, 6 deletions
diff --git a/tikzit/src/gui/mainwindow.cpp b/tikzit/src/gui/mainwindow.cpp
index ef73a20..f7357ec 100644
--- a/tikzit/src/gui/mainwindow.cpp
+++ b/tikzit/src/gui/mainwindow.cpp
@@ -1,23 +1,100 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
+#include "tikzgraphassembler.h"
#include <QDebug>
+#include <QFile>
+#include <QList>
+#include <QSettings>
+#include <QMessageBox>
+#include <QFileDialog>
+
+int MainWindow::_numWindows = 0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
+ _numWindows++;
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
- tikzScene = new TikzScene(this);
+ _graph = new Graph(this);
+ tikzScene = new TikzScene(_graph, this);
ui->tikzView->setScene(tikzScene);
- //tikzView = new QGraphicsView(tikzScene);
- //setCentralWidget(tikzView);
- //resize(700, 500);
- // badger?
+ _fileName = "";
+ _pristine = true;
+
+ // initially, the source view should be collapsed
+ QList<int> sz = ui->splitter->sizes();
+ sz[0] = sz[0] + sz[1];
+ sz[1] = 0;
+ ui->splitter->setSizes(sz);
}
MainWindow::~MainWindow()
{
- qDebug() << "~MainWindow";
+ //qDebug() << "~MainWindow";
+}
+
+void MainWindow::open(QString fileName)
+{
+ _fileName = fileName;
+ _pristine = false;
+ QFile file(fileName);
+ QFileInfo fi(file);
+ QSettings settings("tikzit", "tikzit");
+ settings.setValue("previous-file-path", fi.absolutePath());
+
+ if (!file.open(QIODevice::ReadOnly)) {
+ QMessageBox::critical(this, tr("Error"),
+ tr("Could not open file"));
+ return;
+ }
+
+ QTextStream in(&file);
+ QString tikz = in.readAll();
+ file.close();
+
+ ui->tikzSource->setText(tikz);
+
+ Graph *newGraph = new Graph(this);
+ TikzGraphAssembler ass(newGraph);
+ if (ass.parse(tikz)) {
+ statusBar()->showMessage("TiKZ parsed successfully", 2000);
+ tikzScene->setGraph(newGraph);
+ delete _graph;
+ _graph = newGraph;
+ } else {
+ statusBar()->showMessage("Cannot read TiKZ source");
+ delete newGraph;
+ }
+
}
+
+void MainWindow::closeEvent(QCloseEvent *event)
+{
+ //qDebug() << "got close event";
+ QMainWindow::closeEvent(event);
+}
+
+void MainWindow::on_actionOpen_triggered()
+{
+ QSettings settings("tikzit", "tikzit");
+ QString fileName = QFileDialog::getOpenFileName(
+ this,
+ tr("Open File"),
+ settings.value("previous-file-path").toString(),
+ tr("TiKZ Files (*.tikz)"));
+
+ if (!fileName.isEmpty()) {
+ if (_pristine) {
+ open(fileName);
+ } else {
+ MainWindow *w = new MainWindow();
+ w->show();
+ w->open(fileName);
+ }
+ }
+}
+
+