#include "mainwindow.h" #include "ui_mainwindow.h" #include "mainmenu.h" #include "tikzassembler.h" #include "toolpalette.h" #include "tikzit.h" #include #include #include #include #include #include #include #include #include #include int MainWindow::_numWindows = 0; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { _windowId = _numWindows; _numWindows++; ui->setupUi(this); setWindowIcon(QIcon(":/images/logo.png")); setAttribute(Qt::WA_DeleteOnClose, true); _tikzDocument = new TikzDocument(this); _toolPalette = new ToolPalette(this); addToolBar(_toolPalette); _stylePalette = new StylePalette(this); addDockWidget(Qt::RightDockWidgetArea, _stylePalette); _tikzScene = new TikzScene(_tikzDocument, _toolPalette, _stylePalette, this); ui->tikzView->setScene(_tikzScene); // TODO: check if each window should have a menu _menu = new MainMenu(); _menu->setParent(this); setMenuBar(_menu); // initially, the source view should be collapsed QList sz = ui->splitter->sizes(); sz[0] = sz[0] + sz[1]; sz[1] = 0; ui->splitter->setSizes(sz); _tikzDocument->refreshTikz(); connect(_tikzDocument->undoStack(), SIGNAL(cleanChanged(bool)), this, SLOT(updateFileName())); } MainWindow::~MainWindow() { tikzit->removeWindow(this); delete ui; } void MainWindow::open(QString fileName) { _tikzDocument->open(fileName); //ui->tikzSource->setText(_tikzDocument->tikz()); if (_tikzDocument->parseSuccess()) { statusBar()->showMessage("TiKZ parsed successfully", 2000); //setWindowTitle("TiKZiT - " + _tikzDocument->shortName()); _tikzScene->setTikzDocument(_tikzDocument); updateFileName(); } else { statusBar()->showMessage("Cannot read TiKZ source"); } } QSplitter *MainWindow::splitter() const { return ui->splitter; } 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); //tikzit->stylePalette()->raise(); } QMainWindow::changeEvent(event); } StylePalette *MainWindow::stylePalette() const { return _stylePalette; } QString MainWindow::tikzSource() { return ui->tikzSource->toPlainText(); } void MainWindow::setSourceLine(int line) { QTextCursor cursor(ui->tikzSource->document()->findBlockByLineNumber(line)); cursor.movePosition(QTextCursor::EndOfLine); //ui->tikzSource->moveCursor(QTextCursor::End); ui->tikzSource->setTextCursor(cursor); ui->tikzSource->setFocus(); } void MainWindow::updateFileName() { QString nm = _tikzDocument->shortName(); if (nm.isEmpty()) nm = "untitled"; if (!_tikzDocument->isClean()) nm += "*"; setWindowTitle("TiKZiT - " + nm); } void MainWindow::refreshTikz() { // don't emit textChanged() when we update the tikz ui->tikzSource->blockSignals(true); ui->tikzSource->setText(_tikzDocument->tikz()); ui->tikzSource->blockSignals(false); } ToolPalette *MainWindow::toolPalette() const { return _toolPalette; } 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; } void MainWindow::on_tikzSource_textChanged() { if (_tikzScene->enabled()) _tikzScene->setEnabled(false); }