summaryrefslogtreecommitdiff
path: root/src/data/tikzdocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/tikzdocument.cpp')
-rw-r--r--src/data/tikzdocument.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/data/tikzdocument.cpp b/src/data/tikzdocument.cpp
index a3fa961..eeb4e14 100644
--- a/src/data/tikzdocument.cpp
+++ b/src/data/tikzdocument.cpp
@@ -3,9 +3,12 @@
#include <QSettings>
#include <QTextStream>
#include <QMessageBox>
+#include <QFileDialog>
+#include "tikzit.h"
#include "tikzdocument.h"
#include "tikzassembler.h"
+#include "mainwindow.h"
TikzDocument::TikzDocument(QObject *parent) : QObject(parent)
{
@@ -71,6 +74,41 @@ void TikzDocument::open(QString fileName)
}
}
+void TikzDocument::save() {
+ if (_fileName == "") {
+ saveAs();
+ } else {
+ refreshTikz();
+ QFile file(_fileName);
+ QFileInfo fi(file);
+ _shortName = fi.fileName();
+ QSettings settings("tikzit", "tikzit");
+ settings.setValue("previous-file-path", fi.absolutePath());
+
+ if (file.open(QIODevice::ReadWrite)) {
+ QTextStream stream(&file);
+ stream << _tikz;
+ file.close();
+ tikzit->activeWindow()->updateFileName();
+ } else {
+ QMessageBox::warning(0, "Save Failed", "Could not open file: '" + _fileName + "' for writing.");
+ }
+ }
+}
+
+void TikzDocument::saveAs() {
+ QSettings settings("tikzit", "tikzit");
+ QString fileName = QFileDialog::getSaveFileName(tikzit->activeWindow(),
+ tr("Save File As"),
+ settings.value("previous-file-path").toString(),
+ tr("TiKZ Files (*.tikz)"));
+
+ if (!fileName.isEmpty()) {
+ _fileName = fileName;
+ save();
+ }
+}
+
QString TikzDocument::shortName() const
{
return _shortName;
@@ -80,3 +118,10 @@ bool TikzDocument::parseSuccess() const
{
return _parseSuccess;
}
+
+void TikzDocument::refreshTikz()
+{
+ _tikz = _graph->tikz();
+ if (MainWindow *w = dynamic_cast<MainWindow*>(parent()))
+ w->refreshTikz();
+}