summaryrefslogtreecommitdiff
path: root/src/gui/mainwindow.cpp
blob: 19b6a592337871ccce321ac173bd98af98467dfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "tikzgraphassembler.h"
#include "toolpalette.h"
#include "tikzit.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)
{
    _windowId = _numWindows;
    _numWindows++;
    ui->setupUi(this);
    setAttribute(Qt::WA_DeleteOnClose, true);
    _tikzDocument = new TikzDocument(this);
    _tikzScene = new TikzScene(_tikzDocument, this);
    ui->tikzView->setScene(_tikzScene);
    _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()
{
    tikzit->removeWindow(this);
    delete ui;
}

void MainWindow::open(QString fileName)
{
    _pristine = false;
    _tikzDocument->open(fileName);
    ui->tikzSource->setText(_tikzDocument->tikz());


    if (_tikzDocument->parseSuccess()) {
        statusBar()->showMessage("TiKZ parsed successfully", 2000);
        setWindowTitle("TiKZiT - " + _tikzDocument->shortName());
        _tikzScene->setTikzDocument(_tikzDocument);
    } else {
        statusBar()->showMessage("Cannot read TiKZ source");
    }

}

void MainWindow::closeEvent(QCloseEvent *event)
{
    //qDebug() << "got close event";
    QMainWindow::closeEvent(event);
}

void MainWindow::changeEvent(QEvent *event)
{
    if (event->type() == QEvent::ActivationChange && isActiveWindow()) {
        tikzit->setActiveWindow(this);
    }
    QMainWindow::changeEvent(event);
}

TikzDocument *MainWindow::tikzDocument() const
{
    return _tikzDocument;
}

TikzScene *MainWindow::tikzScene() const
{
    return _tikzScene;
}

int MainWindow::windowId() const
{
    return _windowId;
}

TikzView *MainWindow::tikzView() const
{
    return ui->tikzView;
}

bool MainWindow::pristine() const
{
    return _pristine;
}