diff options
Diffstat (limited to 'src/gui/exportdialog.cpp')
-rw-r--r-- | src/gui/exportdialog.cpp | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/src/gui/exportdialog.cpp b/src/gui/exportdialog.cpp index b176c71..cc0be7b 100644 --- a/src/gui/exportdialog.cpp +++ b/src/gui/exportdialog.cpp @@ -5,11 +5,13 @@ #include <QFileDialog> #include <QSettings> +#include <QStandardPaths> ExportDialog::ExportDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ExportDialog) { + QSettings settings("tikzit", "tikzit"); ui->setupUi(this); QIntValidator *v = new QIntValidator(this); @@ -31,6 +33,32 @@ ExportDialog::ExportDialog(QWidget *parent) : ui->width->blockSignals(false); ui->height->blockSignals(false); } + + if (!settings.value("previous-export-file-format").isNull()) { + ui->fileFormat->setCurrentIndex(settings.value("previous-export-file-format").toInt()); + } + + // set a default export file + QString path = (!settings.value("previous-export-file-path").isNull()) ? + settings.value("previous-export-file-path").toString() : + QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); + + QString suffix; + switch (ui->fileFormat->currentIndex()) { + case PNG: suffix = ".png"; break; + case JPG: suffix = ".jpg"; break; + case PDF: suffix = ".pdf"; break; + } + + QString fileName; + int i = 0; + bool exists = true; + while (exists) { + fileName = path + "/tikzit_image" + QString::number(i) + suffix; + exists = QFileInfo::exists(fileName); + ++i; + } + ui->filePath->setText(QDir::toNativeSeparators(fileName)); } ExportDialog::~ExportDialog() @@ -38,6 +66,31 @@ ExportDialog::~ExportDialog() delete ui; } +QString ExportDialog::filePath() +{ + return ui->filePath->text(); +} + +QSize ExportDialog::size() +{ + return QSize(ui->width->text().toInt(), + ui->height->text().toInt()); +} + +ExportDialog::Format ExportDialog::fileFormat() +{ + return static_cast<Format>(ui->fileFormat->currentIndex()); +} + +void ExportDialog::accept() +{ + QSettings settings("tikzit", "tikzit"); + QFileInfo fi(filePath()); + settings.setValue("previous-export-file-path", fi.absolutePath()); + settings.setValue("previous-export-file-format", fileFormat()); + QDialog::accept(); +} + void ExportDialog::setHeightFromWidth() { if (ui->keepAspect->isChecked()) { @@ -88,8 +141,14 @@ void ExportDialog::on_browseButton_clicked() dialog.setAcceptMode(QFileDialog::AcceptSave); dialog.setNameFilter(ui->fileFormat->currentText()); dialog.setFileMode(QFileDialog::AnyFile); - if (!settings.value("previous-export-file-path").isNull()) - dialog.setDirectory(settings.value("previous-export-file-path").toString()); + dialog.setLabelText(QFileDialog::Accept, "Select"); + + QFileInfo fi(ui->filePath->text()); + if (!fi.absolutePath().isEmpty()) { + dialog.setDirectory(fi.absolutePath()); + dialog.selectFile(fi.baseName()); + } + dialog.setOption(QFileDialog::DontUseNativeDialog); if (dialog.exec()) { @@ -101,6 +160,7 @@ void ExportDialog::on_fileFormat_currentIndexChanged(int f) { ui->width->setEnabled(f != PDF); ui->height->setEnabled(f != PDF); + ui->keepAspect->setEnabled(f != PDF); QString path = ui->filePath->text(); if (!path.isEmpty()) { |