Author: jghali Date: Tue Mar 6 22:54:26 2018 New Revision: 22422 URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22422 Log: refactoring and fixed for gettext dialogs
Modified: trunk/Scribus/scribus/gtgettext.cpp trunk/Scribus/scribus/ui/gtdialogs.cpp trunk/Scribus/scribus/ui/gtdialogs.h Modified: trunk/Scribus/scribus/gtgettext.cpp URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22422&path=/trunk/Scribus/scribus/gtgettext.cpp ============================================================================== --- trunk/Scribus/scribus/gtgettext.cpp (original) +++ trunk/Scribus/scribus/gtgettext.cpp Tue Mar 6 22:54:26 2018 @@ -67,8 +67,7 @@ // If the map is found, assign ida to the corresponding struct in the map. ida = *m_importerMap[fend]; // Otherwise, test for the lowercase version - else - if (m_importerMap.find(fendL) != m_importerMap.end()) + else if (m_importerMap.find(fendL) != m_importerMap.end()) // If the map is found, assign ida to the corresponding struct in the map. ida = *m_importerMap[fendL]; // Otherwise, try and ask the user. @@ -78,7 +77,7 @@ m_dias = new gtDialogs(); // Pop up the dialog asking the user to select the type from our list (ilist) of // importable file types. If one is not selected, set callImporter to false. - callImporter = m_dias->runImporterDialog(m_ilist); + callImporter = m_dias->runImporterDialog(filename, m_ilist); // If we're gonna call an importer, we need to copy it's struct to ida. if (callImporter) ida = m_importers[m_dias->getImporter()]; @@ -223,9 +222,7 @@ impsetup.importer = m_dias->getImporter(); impsetup.textOnly = m_dias->importTextOnly(); impsetup.prefixNames = m_dias->prefixStyles(); -// launchImporter(dias->getImporter(), dias->getFileName(), -// dias->importTextOnly(), dias->getEncoding(), append); - } // if (dias->runFileDialog(filters, ilist)) + } // Destroy the dialog. delete m_dias; // Return the ImportSetup struct. Modified: trunk/Scribus/scribus/ui/gtdialogs.cpp URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22422&path=/trunk/Scribus/scribus/ui/gtdialogs.cpp ============================================================================== --- trunk/Scribus/scribus/ui/gtdialogs.cpp (original) +++ trunk/Scribus/scribus/ui/gtdialogs.cpp Tue Mar 6 22:54:26 2018 @@ -32,6 +32,8 @@ #include "prefsmanager.h" #include "sccombobox.h" #include "ui/gtfiledialog.h" + +#include <QFileInfo> #include <QHBoxLayout> #include <QLabel> #include <QPixmap> @@ -43,8 +45,13 @@ /********* Class gtImporterDialog*******************************************************************/ -gtImporterDialog::gtImporterDialog(const QStringList& importers, int currentSelection) -{ +gtImporterDialog::gtImporterDialog(const QString& fileName, const QStringList& importers, int currentSelection) +{ + QFileInfo fInfo(fileName); + QString ext = fInfo.suffix(); + if ((ext.length() > 0) && !ext.startsWith(".")) + ext.prepend("."); + setWindowTitle( tr("Choose the importer to use")); setWindowIcon(IconManager::instance()->loadIcon("AppIcon.png")); @@ -53,7 +60,13 @@ QBoxLayout* llayout = new QHBoxLayout; llayout->setMargin(5); llayout->setSpacing(5); - QLabel* label = new QLabel( tr("Choose the importer to use"), this); + + QString labelText; + if (ext.length() > 0) + labelText = tr("Choose the importer to use for %1 file:").arg(ext); + else + labelText = tr("Choose the importer to use:"); + QLabel* label = new QLabel(labelText, this); llayout->addWidget(label); layout->addLayout(llayout); @@ -111,12 +124,11 @@ gtDialogs::gtDialogs() { - fdia = NULL; - fileName = ""; - encoding = ""; - importer = -1; - prefs = PrefsManager::instance()->prefsFile->getContext("gtDialogs"); - pwd = QDir::currentPath(); + m_fdia = NULL; + m_fileName = ""; + m_encoding = ""; + m_importer = -1; + m_prefs = PrefsManager::instance()->prefsFile->getContext("gtDialogs"); } bool gtDialogs::runFileDialog(const QString& filters, const QStringList& importers) @@ -124,56 +136,56 @@ bool accepted = false; PrefsContext* dirs = PrefsManager::instance()->prefsFile->getContext("dirs"); QString dir = dirs->get("get_text", "."); - fdia = new gtFileDialog(filters, importers, dir); - if (fdia->exec() == QDialog::Accepted) - { - fileName = fdia->selectedFile(); - if (!fileName.isEmpty()) + m_fdia = new gtFileDialog(filters, importers, dir); + if (m_fdia->exec() == QDialog::Accepted) + { + m_fileName = m_fdia->selectedFile(); + if (!m_fileName.isEmpty()) accepted = true; - encoding = fdia->encodingCombo->currentText(); + m_encoding = m_fdia->encodingCombo->currentText(); // if (encoding == "UTF-16") // encoding = "ISO-10646-UCS-2"; - importer = fdia->importerCombo->currentIndex() - 1; - dirs->set("get_text", fileName.left(fileName.lastIndexOf("/"))); - } - QDir::setCurrent(pwd); + m_importer = m_fdia->importerCombo->currentIndex() - 1; + dirs->set("get_text", m_fileName.left(m_fileName.lastIndexOf("/"))); + } return accepted; } -bool gtDialogs::runImporterDialog(const QStringList& importers) -{ - int curSel = prefs->getInt("curSel", 0); - QString extension = ""; - QString shortName = fileName.right(fileName.length() - fileName.lastIndexOf("/") - 1); - if (shortName.indexOf(".") == -1) - extension = ".no_extension"; - else - extension = fileName.right(fileName.length() - fileName.lastIndexOf(".")); - int extensionSel = prefs->getInt(extension, -1); - QString imp = prefs->get("remember"+extension, QString("false")); +bool gtDialogs::runImporterDialog(const QString& fileName, const QStringList& importers) +{ + bool ok = false; + bool shouldRemember = false; + + QFileInfo fileInfo(fileName); + QString fileExtension = fileInfo.suffix(); + if (fileExtension.length() > 0 && !fileExtension.startsWith(".")) + fileExtension.prepend("."); + if (fileExtension.isEmpty()) + fileExtension = ".no_extension"; + + QString imp = m_prefs->get("remember"+ fileExtension, QString("false")); QString res = ""; - bool shouldRemember = false; - bool ok = false; if (imp != "false") { res = imp; - if (importers.contains(res) > 0) + if (importers.contains(res)) ok = true; } if (!ok) { + int curSel = m_prefs->getInt("curSel", 0); + int extensionSel = m_prefs->getInt(fileExtension, -1); if ((extensionSel > -1) && (extensionSel < static_cast<int>(importers.count()))) curSel = extensionSel; else curSel = 0; - gtImporterDialog* idia = new gtImporterDialog(importers, curSel); + gtImporterDialog* idia = new gtImporterDialog(fileName, importers, curSel); if (idia->exec()) { res = idia->getImporter(); shouldRemember = idia->shouldRemember(); - ok = true; } delete idia; @@ -181,27 +193,17 @@ if (ok) { - QString fileExtension = ""; - for (int i = 0; i < importers.count(); ++i) + QString fileExtension; + int importerIndex = importers.indexOf(res); + if (importerIndex >= 0) { - if (importers[i] == res) + m_importer = importerIndex; + m_prefs->set("curSel", static_cast<int>(importerIndex)); + if (!fileExtension.isEmpty()) { - importer = i; - prefs->set("curSel", static_cast<int>(i)); - if (fileName.indexOf(".") != -1) - { - if (shortName.indexOf(".") == -1) - fileExtension = ".no_extension"; - else - fileExtension = fileName.right(fileName.length() - fileName.lastIndexOf(".")); - if (!fileExtension.isEmpty()) - { - prefs->set(fileExtension, static_cast<int>(i)); - if (shouldRemember) - prefs->set("remember"+fileExtension, res); - } - } - break; + m_prefs->set(fileExtension, static_cast<int>(importerIndex)); + if (shouldRemember) + m_prefs->set("remember" + fileExtension, res); } } } @@ -210,36 +212,36 @@ const QString& gtDialogs::getFileName() { - return fileName; + return m_fileName; } const QString& gtDialogs::getEncoding() { - return encoding; + return m_encoding; } int gtDialogs::getImporter() { - return importer; + return m_importer; } bool gtDialogs::importTextOnly() { bool ret = false; - if (fdia) - ret = fdia->textOnlyCheckBox->isChecked(); + if (m_fdia) + ret = m_fdia->textOnlyCheckBox->isChecked(); return ret; } bool gtDialogs::prefixStyles() { bool ret = false; - if (fdia) - ret = fdia->prefixStylesCheckBox->isChecked(); + if (m_fdia) + ret = m_fdia->prefixStylesCheckBox->isChecked(); return ret; } gtDialogs::~gtDialogs() { - delete fdia; -} + delete m_fdia; +} Modified: trunk/Scribus/scribus/ui/gtdialogs.h URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22422&path=/trunk/Scribus/scribus/ui/gtdialogs.h ============================================================================== --- trunk/Scribus/scribus/ui/gtdialogs.h (original) +++ trunk/Scribus/scribus/ui/gtdialogs.h Tue Mar 6 22:54:26 2018 @@ -45,7 +45,7 @@ QCheckBox* rememberCheck; QPushButton* okButton; public: - gtImporterDialog(const QStringList& importers, int currentSelection); + gtImporterDialog(const QString& fileName, const QStringList& importers, int currentSelection); ~gtImporterDialog(); bool shouldRemember(); QString getImporter(); @@ -53,23 +53,24 @@ class SCRIBUS_API gtDialogs { -private: - gtFileDialog* fdia; - QString fileName; - QString encoding; - int importer; - PrefsContext* prefs; - QString pwd; public: gtDialogs(); ~gtDialogs(); + const QString& getFileName(); const QString& getEncoding(); int getImporter(); bool importTextOnly(); bool prefixStyles(); bool runFileDialog(const QString& filters, const QStringList& importers); - bool runImporterDialog(const QStringList& importers); + bool runImporterDialog(const QString& file, const QStringList& importers); + +private: + gtFileDialog* m_fdia; + QString m_fileName; + QString m_encoding; + int m_importer; + PrefsContext* m_prefs; }; #endif // GTDIALOGS_H _______________________________________________ scribus-commit mailing list scribus-commit@lists.scribus.net http://lists.scribus.net/mailman/listinfo/scribus-commit