From 1ecc46ee977805418faae3d1c57aefc828203d95 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Wed, 10 Oct 2018 11:03:49 +0200 Subject: maybe a fix for DPI --- src/data/tikzdocument.cpp | 39 +++++++++++++++++++++++++++++---------- src/data/tikzdocument.h | 4 ++-- src/gui/mainwindow.cpp | 22 ++++++++++++++++++++-- src/gui/mainwindow.ui | 2 +- src/main.cpp | 24 ++++++++++++++++++++++-- src/tikzit.cpp | 8 ++++++-- 6 files changed, 80 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/data/tikzdocument.cpp b/src/data/tikzdocument.cpp index fd70e92..2554c21 100644 --- a/src/data/tikzdocument.cpp +++ b/src/data/tikzdocument.cpp @@ -98,9 +98,9 @@ void TikzDocument::open(QString fileName) } } -void TikzDocument::save() { +bool TikzDocument::save() { if (_fileName == "") { - saveAs(); + return saveAs(); } else { MainWindow *win = tikzit->activeWindow(); if (win != 0 && !win->tikzScene()->enabled()) { @@ -110,7 +110,7 @@ void TikzDocument::save() { tr("Tikz failed to parse"), tr("Cannot save file with invalid TiKZ source. Revert changes and save?")); if (resp == QMessageBox::Yes) win->tikzScene()->setEnabled(true); - else return; // ABORT the save + else return false; // ABORT the save } } @@ -126,10 +126,13 @@ void TikzDocument::save() { stream << _tikz; file.close(); setClean(); + return true; } else { QMessageBox::warning(0, "Save Failed", "Could not open file: '" + _fileName + "' for writing."); } } + + return false; } bool TikzDocument::isClean() const @@ -148,7 +151,7 @@ void TikzDocument::setGraph(Graph *graph) refreshTikz(); } -void TikzDocument::saveAs() { +bool TikzDocument::saveAs() { MainWindow *win = tikzit->activeWindow(); if (win != 0 && !win->tikzScene()->enabled()) { win->tikzScene()->parseTikz(win->tikzSource()); @@ -157,23 +160,39 @@ void TikzDocument::saveAs() { tr("Tikz failed to parse"), tr("Cannot save file with invalid TiKZ source. Revert changes and save?")); if (resp == QMessageBox::Yes) win->tikzScene()->setEnabled(true); - else return; // ABORT the save + else return false; // ABORT the save } } QSettings settings("tikzit", "tikzit"); + +// QFileDialog dialog; +// dialog.setDefaultSuffix("tikz"); +// dialog.setWindowTitle(tr("Save File As")); +// dialog.setAcceptMode(QFileDialog::AcceptSave); +// dialog.setNameFilter(tr("TiKZ Files (*.tikz)")); +// dialog.setFileMode(QFileDialog::AnyFile); +// dialog.setDirectory(settings.value("previous-file-path").toString()); +// dialog.setOption(QFileDialog::DontUseNativeDialog); + QString fileName = QFileDialog::getSaveFileName(tikzit->activeWindow(), tr("Save File As"), settings.value("previous-file-path").toString(), - tr("TiKZ Files (*.tikz)")); + tr("TiKZ Files (*.tikz)"), + nullptr, + QFileDialog::DontUseNativeDialog); if (!fileName.isEmpty()) { +// QString fileName = dialog.selectedFiles()[0]; _fileName = fileName; - save(); - - // clean state might not change, so update title bar manually - tikzit->activeWindow()->updateFileName(); + if (save()) { + // clean state might not change, so update title bar manually + tikzit->activeWindow()->updateFileName(); + return true; + } } + + return false; } QString TikzDocument::shortName() const diff --git a/src/data/tikzdocument.h b/src/data/tikzdocument.h index 773f369..fca5434 100644 --- a/src/data/tikzdocument.h +++ b/src/data/tikzdocument.h @@ -47,8 +47,8 @@ public: QString shortName() const; - void saveAs(); - void save(); + bool saveAs(); + bool save(); bool isClean() const; void setClean(); diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index b0ffdc6..479d8ed 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -108,7 +108,25 @@ void MainWindow::closeEvent(QCloseEvent *event) settings.setValue("geometry-main", saveGeometry()); settings.setValue("windowState-main", saveState(2)); - QMainWindow::closeEvent(event); + if (!_tikzDocument->isClean()) { + QString nm = _tikzDocument->shortName(); + if (nm.isEmpty()) nm = "untitled"; + QMessageBox::StandardButton resBtn = QMessageBox::question( + this, "Save Changes", + "Do you wish to save changes to " + nm + "?", + QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes, + QMessageBox::Yes); + + if (resBtn == QMessageBox::Yes && _tikzDocument->save()) { + event->accept(); + } else if (resBtn == QMessageBox::No) { + event->accept(); + } else { + event->ignore(); + } + } else { + event->accept(); + } } void MainWindow::changeEvent(QEvent *event) @@ -144,7 +162,7 @@ void MainWindow::updateFileName() QString nm = _tikzDocument->shortName(); if (nm.isEmpty()) nm = "untitled"; if (!_tikzDocument->isClean()) nm += "*"; - setWindowTitle("TiKZiT - " + nm); + setWindowTitle(nm + " - TikZiT"); } void MainWindow::refreshTikz() diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 8eff5ee..27e0127 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -17,7 +17,7 @@ - TikZiT - untitled + untitled - TikZiT diff --git a/src/main.cpp b/src/main.cpp index 9ad40ae..ac8ab13 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,6 +27,9 @@ #include #include +#include +#include +#include // #ifdef Q_OS_WIN // #include @@ -37,13 +40,30 @@ int main(int argc, char *argv[]) // #ifdef Q_OS_WIN // SetProcessDPIAware(); // #endif - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); +// QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); - //QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + + // dummy application for detecting DPI + QApplication *a0 = new QApplication(argc, argv); + qDebug() << "physical DPI" << QApplication::screens()[0]->physicalDotsPerInch(); + + if (QApplication::screens()[0]->physicalDotsPerInch() >= 100) { + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + } else { + QApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + } + + delete a0; + QApplication a(argc, argv); a.setQuitOnLastWindowClosed(false); + + + tikzit = new Tikzit(); tikzit->init(); + + if (a.arguments().length() > 1) { tikzit->open(a.arguments()[1]); diff --git a/src/tikzit.cpp b/src/tikzit.cpp index 967d76e..c649969 100644 --- a/src/tikzit.cpp +++ b/src/tikzit.cpp @@ -181,7 +181,9 @@ void Tikzit::open() QString fileName = QFileDialog::getOpenFileName(0, tr("Open File"), settings.value("previous-file-path").toString(), - tr("TiKZ Files (*.tikz)")); + tr("TiKZ Files (*.tikz)"), + nullptr, + QFileDialog::DontUseNativeDialog); open(fileName); } @@ -210,7 +212,9 @@ void Tikzit::openTikzStyles() { QString fileName = QFileDialog::getOpenFileName(0, tr("Open File"), settings.value("previous-tikzstyles-path").toString(), - tr("TiKZ Style Files (*.tikzstyles)")); + tr("TiKZ Style Files (*.tikzstyles)"), + nullptr, + QFileDialog::DontUseNativeDialog); if (!fileName.isEmpty()) { QFileInfo fi(fileName); -- cgit v1.2.3