diff options
author | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-07-15 14:35:16 +0000 |
---|---|---|
committer | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-07-15 14:35:16 +0000 |
commit | 617663990119e1cf5c1f8eae308453e81a2e9c7d (patch) | |
tree | 2bd837654fc8352eb8567a95d57f9ff7a803d32a | |
parent | 06ebb4fbc9f069ebad1d8cd63e6eac9a0251e378 (diff) | |
download | scribus-617663990119e1cf5c1f8eae308453e81a2e9c7d.tar.gz scribus-617663990119e1cf5c1f8eae308453e81a2e9c7d.tar.xz scribus-617663990119e1cf5c1f8eae308453e81a2e9c7d.zip |
10689: Incorrect save filename when filename contains multiple points
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17721 11d20701-8431-0410-a711-e3c959e3b870
-rw-r--r-- | scribus/customfdialog.cpp | 34 | ||||
-rw-r--r-- | scribus/pdfopts.cpp | 9 | ||||
-rw-r--r-- | scribus/printdialog.cpp | 9 | ||||
-rw-r--r-- | scribus/scribus.cpp | 18 |
4 files changed, 47 insertions, 23 deletions
diff --git a/scribus/customfdialog.cpp b/scribus/customfdialog.cpp index 3afd06f..00c5eb4 100644 --- a/scribus/customfdialog.cpp +++ b/scribus/customfdialog.cpp @@ -456,26 +456,28 @@ CustomFDialog::~CustomFDialog() void CustomFDialog::handleCompress() { - QFileInfo tmp; - tmp.setFile(selectedFile()); - QString e(tmp.completeSuffix()); - QStringList ex = e.split(".", QString::SkipEmptyParts); - QString baseExt = ""; - for (int a = 0; a < ex.count(); a++) + QString fileName; + QFileInfo tmp(selectedFile()); + QString fn(tmp.fileName()); + QStringList fc = fn.split(".", QString::KeepEmptyParts); + if (fc.count() > 0) + fileName = fc.at(0); + for (int a = 1; a < fc.count(); a++) { - if ((ex[a] != "sla") && (ex[a] != "SLA") && (ex[a] != "gz") && (ex[a] != "GZ")) - baseExt += "."+ex[a]; + if (fc.at(a).compare("sla", Qt::CaseInsensitive) == 0) + continue; + if (fc.at(a).compare("gz", Qt::CaseInsensitive) == 0) + continue; + if (fc.at(a).compare(ext, Qt::CaseInsensitive) == 0) + continue; + if (fc.at(a).compare(extZip, Qt::CaseInsensitive) == 0) + continue; + fileName += "." + fc[a]; } if (SaveZip->isChecked()) - { - if (e != extZip) - tmp.setFile(tmp.baseName() + baseExt + "." + extZip); - } + tmp.setFile(fileName + "." + extZip); else - { - if (e != ext) - tmp.setFile(tmp.baseName() + baseExt + "." + ext); - } + tmp.setFile(fileName + "." + ext); setSelection(tmp.fileName()); } diff --git a/scribus/pdfopts.cpp b/scribus/pdfopts.cpp index 71cee56..5cfe6e6 100644 --- a/scribus/pdfopts.cpp +++ b/scribus/pdfopts.cpp @@ -75,9 +75,14 @@ PDFExportDialog::PDFExportDialog( QWidget* parent, const QString & docFileName, else { QFileInfo fi(docFileName); + QString completeBaseName = fi.completeBaseName(); + if (completeBaseName.endsWith(".sla", Qt::CaseInsensitive)) + if (completeBaseName.length() > 4) completeBaseName.chop(4); + if (completeBaseName.endsWith(".gz", Qt::CaseInsensitive)) + if (completeBaseName.length() > 3) completeBaseName.chop(3); if (fi.exists()) { - QString fileName(fi.path()+"/"+fi.baseName()+".pdf"); + QString fileName(fi.path() + "/" + completeBaseName + ".pdf"); fileNameLineEdit->setText( QDir::toNativeSeparators(fileName) ); } else @@ -86,7 +91,7 @@ PDFExportDialog::PDFExportDialog( QWidget* parent, const QString & docFileName, QString pdfdir = dirs->get("pdf", fi.path()); if (pdfdir.right(1) != "/") pdfdir += "/"; - QString fileName(pdfdir+fi.baseName()+".pdf"); + QString fileName(pdfdir + completeBaseName + ".pdf"); fileNameLineEdit->setText( QDir::toNativeSeparators(fileName) ); } } diff --git a/scribus/printdialog.cpp b/scribus/printdialog.cpp index c094c88..63d55d9 100644 --- a/scribus/printdialog.cpp +++ b/scribus/printdialog.cpp @@ -313,7 +313,14 @@ void PrintDialog::SelPrinter(const QString& prn) if (fi.isRelative()) // if (m_doc->DocName.startsWith( tr("Document"))) LineEdit1->setText( QDir::toNativeSeparators(QDir::currentPath() + "/" + m_doc->DocName + ".ps") ); else - LineEdit1->setText( QDir::toNativeSeparators(fi.path() + "/" + fi.baseName() + ".ps") ); + { + QString completeBaseName = fi.completeBaseName(); + if (completeBaseName.endsWith(".sla", Qt::CaseInsensitive)) + if (completeBaseName.length() > 4) completeBaseName.chop(4); + if (completeBaseName.endsWith(".gz", Qt::CaseInsensitive)) + if (completeBaseName.length() > 3) completeBaseName.chop(3); + LineEdit1->setText( QDir::toNativeSeparators(fi.path() + "/" + completeBaseName + ".ps") ); + } } // Get page description language supported by the selected printer diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp index 16586fb..32e107a 100644 --- a/scribus/scribus.cpp +++ b/scribus/scribus.cpp @@ -4521,8 +4521,13 @@ bool ScribusMainWindow::slotFileSaveAs() if (doc->hasName) { QFileInfo fi(doc->DocName); + QString completeBaseName = fi.completeBaseName(); + if (completeBaseName.endsWith(".sla", Qt::CaseInsensitive)) + completeBaseName.chop(4); + else if (completeBaseName.endsWith(".gz", Qt::CaseInsensitive)) + completeBaseName.chop(3); wdir = QDir::fromNativeSeparators( fi.path() ); - fna = QDir::fromNativeSeparators( fi.path()+"/"+fi.baseName()+".sla" ); + fna = QDir::fromNativeSeparators( fi.path()+"/"+completeBaseName+".sla" ); } else { @@ -4878,7 +4883,12 @@ void ScribusMainWindow::slotReallyPrint() if (!doc->DocName.startsWith( tr("Document"))) { QFileInfo fi(doc->DocName); - doc->Print_Options.filename = fi.path()+"/"+fi.baseName()+".ps"; + QString completeBaseName = fi.completeBaseName(); + if (completeBaseName.endsWith(".sla", Qt::CaseInsensitive)) + if (completeBaseName.length() > 4) completeBaseName.chop(4); + if (completeBaseName.endsWith(".gz", Qt::CaseInsensitive)) + if (completeBaseName.length() > 3) completeBaseName.chop(3); + doc->Print_Options.filename = fi.path()+"/"+completeBaseName+".ps"; } else { @@ -8864,8 +8874,8 @@ QString ScribusMainWindow::CFileDialog(QString wDir, QString caption, QString fi if (!defNa.isEmpty()) { QFileInfo f(defNa); - dia->setExtension(f.completeSuffix()); - dia->setZipExtension(f.completeSuffix() + ".gz"); + dia->setExtension(f.suffix()); + dia->setZipExtension(f.suffix() + ".gz"); dia->setSelection(defNa); } if (optionFlags & fdDirectoriesOnly) |