summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-07-15 14:35:16 +0000
committerjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-07-15 14:35:16 +0000
commit617663990119e1cf5c1f8eae308453e81a2e9c7d (patch)
tree2bd837654fc8352eb8567a95d57f9ff7a803d32a
parent06ebb4fbc9f069ebad1d8cd63e6eac9a0251e378 (diff)
downloadscribus-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.cpp34
-rw-r--r--scribus/pdfopts.cpp9
-rw-r--r--scribus/printdialog.cpp9
-rw-r--r--scribus/scribus.cpp18
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)