aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2015-10-19 00:25:14 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-10-18 17:37:49 -0700
commit894e7d5d39b8e926d06a10e7eb70300cb93bd374 (patch)
tree3808dae1c5a8dc16eb963e63ff5ec99eef032d39 /qt-ui
parentdbd07af59fd14d20e529c3561fb6cfc3a8fb1814 (diff)
downloadsubsurface-894e7d5d39b8e926d06a10e7eb70300cb93bd374.tar.gz
Print: copy the bundled templates to a safe location
This patch adds couple of helpers to retrieve the template path in the application bundle (getPrintingTemplatePathBundle()) and the template path in the user directory (getPrintingTemplatePathUser()). Once the print dialog is initiated for the first time the contents of the bundled template path are copied to the user template path using copyPath(). No overwriting of files will occur. The PrintOptions and TemplateLayout classes then only use the user path for retrieving templates. Fixes an issue where the bundled templates can be locked as read-only on OSX and Linux. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/mainwindow.cpp2
-rw-r--r--qt-ui/printoptions.cpp6
2 files changed, 5 insertions, 3 deletions
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index d28c1c699..580190caa 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -236,6 +236,8 @@ MainWindow::MainWindow() : QMainWindow(),
connect(geoLookup, SIGNAL(started()),information(), SLOT(disableGeoLookupEdition()));
connect(geoLookup, SIGNAL(finished()), information(), SLOT(enableGeoLookupEdition()));
#ifndef NO_PRINTING
+ // copy the bundled print templates to the user path; no overwriting occurs!
+ copyPath(getPrintingTemplatePathBundle(), getPrintingTemplatePathUser());
find_all_templates();
#endif
diff --git a/qt-ui/printoptions.cpp b/qt-ui/printoptions.cpp
index 79bcee158..769c89ff4 100644
--- a/qt-ui/printoptions.cpp
+++ b/qt-ui/printoptions.cpp
@@ -152,7 +152,7 @@ void PrintOptions::on_importButton_clicked()
if (filename.isEmpty())
return;
QFileInfo fileInfo(filename);
- QFile::copy(filename, getSubsurfaceDataPath("printing_templates") + QDir::separator() + fileInfo.fileName());
+ QFile::copy(filename, getPrintingTemplatePathUser() + QDir::separator() + fileInfo.fileName());
printOptions->p_template = fileInfo.fileName();
find_all_templates();
setup();
@@ -164,7 +164,7 @@ void PrintOptions::on_exportButton_clicked()
tr("HTML files (*.html)"));
if (filename.isEmpty())
return;
- QFile::copy(getSubsurfaceDataPath("printing_templates") + QDir::separator() + getSelectedTemplate(), filename);
+ QFile::copy(getPrintingTemplatePathUser() + QDir::separator() + getSelectedTemplate(), filename);
}
void PrintOptions::on_deleteButton_clicked()
@@ -176,7 +176,7 @@ void PrintOptions::on_deleteButton_clicked()
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
if (msgBox.exec() == QMessageBox::Ok) {
- QFile f(getSubsurfaceDataPath("printing_templates") + QDir::separator() + templateName);
+ QFile f(getPrintingTemplatePathUser() + QDir::separator() + templateName);
f.remove();
find_all_templates();
setup();