diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2017-02-03 16:11:29 +0100 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2017-02-03 16:11:29 +0100 |
commit | e1756ba69dd626073e22fd0a4f4c5fda42c88829 (patch) | |
tree | d79f72a648f89ca9201681b4c5443fceeb8faad9 /tikzit/src/gui/mainwindow.cpp | |
parent | b392859bb192a2e02aec09f2eacf5ecdf44fdfe4 (diff) |
drawing grid
Diffstat (limited to 'tikzit/src/gui/mainwindow.cpp')
-rw-r--r-- | tikzit/src/gui/mainwindow.cpp | 89 |
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); + } + } +} + + |