diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/gtdialogs.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/gtdialogs.cpp')
| -rw-r--r-- | scribus/gtdialogs.cpp | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/scribus/gtdialogs.cpp b/scribus/gtdialogs.cpp new file mode 100644 index 0000000..408016f --- /dev/null +++ b/scribus/gtdialogs.cpp @@ -0,0 +1,239 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +/*************************************************************************** + * Copyright (C) 2004 by Riku Leino * + * tsoots@gmail.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "gtdialogs.h" +#include "prefsmanager.h" +#include "prefscontext.h" +#include "prefsfile.h" +#include "sccombobox.h" +#include <QLabel> +//Added by qt3to4: +#include <QHBoxLayout> +#include <QPixmap> +#include <QVBoxLayout> +#include <QToolTip> +#include <QPushButton> +#include "commonstrings.h" +#include "util_icon.h" +#include "gtfiledialog.h" + +extern QString DocDir; + + +/********* Class gtImporterDialog*******************************************************************/ + +gtImporterDialog::gtImporterDialog(const QStringList& importers, int currentSelection) +{ + setWindowTitle( tr("Choose the importer to use")); + setWindowIcon(loadIcon("AppIcon.png")); + + QBoxLayout* layout = new QVBoxLayout(this); + + QBoxLayout* llayout = new QHBoxLayout; + llayout->setMargin(5); + llayout->setSpacing(5); + QLabel* label = new QLabel( tr("Choose the importer to use"), this); + llayout->addWidget(label); + layout->addLayout(llayout); + + QBoxLayout* ilayout = new QHBoxLayout; + ilayout->setMargin(5); + ilayout->setSpacing(5); + importerCombo = new ScComboBox(this); + importerCombo->setMinimumSize(QSize(150, 0)); + importerCombo->setToolTip( tr("Choose the importer to use")); + importerCombo->addItems(importers); + if (static_cast<int>(importers.count()) > currentSelection) + importerCombo->setCurrentIndex(currentSelection); + else + importerCombo->setCurrentIndex(0); + ilayout->addWidget(importerCombo); + layout->addLayout(ilayout); + + QBoxLayout* dlayout = new QHBoxLayout; + dlayout->setMargin(5); + dlayout->setSpacing(5); + rememberCheck = new QCheckBox( tr("Remember association"), this); + rememberCheck->setChecked(false); + rememberCheck->setToolTip( "<qt>" + tr("Remember the file extension - importer association and do not ask again to select an importer for files of this type.") + "</qt>" ); + dlayout->addStretch(10); + dlayout->addWidget(rememberCheck); + layout->addLayout(dlayout); + + QBoxLayout* blayout = new QHBoxLayout; + blayout->setMargin(5); + blayout->setSpacing(5); + blayout->addStretch(10); + okButton = new QPushButton( CommonStrings::tr_OK, this); + blayout->addWidget(okButton); + layout->addLayout(blayout); + + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); +} + +bool gtImporterDialog::shouldRemember() +{ + return rememberCheck->isChecked(); +} + +QString gtImporterDialog::getImporter() +{ + return importerCombo->currentText(); +} + +gtImporterDialog::~gtImporterDialog() +{ + +} + +/********* Class gtDialogs *************************************************************************/ + +gtDialogs::gtDialogs() +{ + fdia = NULL; + fileName = ""; + encoding = ""; + importer = -1; + prefs = PrefsManager::instance()->prefsFile->getContext("gtDialogs"); + pwd = QDir::currentPath(); +} + +bool gtDialogs::runFileDialog(const QString& filters, const QStringList& importers) +{ + 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()) + accepted = true; + encoding = 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); + 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")); + QString res = ""; + bool shouldRemember = false; + bool ok = false; + if (imp != "false") + { + res = imp; + if (importers.contains(res) > 0) + ok = true; + } + + if (!ok) + { + if ((extensionSel > -1) && (extensionSel < static_cast<int>(importers.count()))) + curSel = extensionSel; + else + curSel = 0; + gtImporterDialog* idia = new gtImporterDialog(importers, curSel); + if (idia->exec()) + { + res = idia->getImporter(); + shouldRemember = idia->shouldRemember(); + + ok = true; + } + delete idia; + } + + if (ok) + { + QString fileExtension = ""; + for (int i = 0; i < importers.count(); ++i) + { + if (importers[i] == res) + { + 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; + } + } + } + return ok; +} + +const QString& gtDialogs::getFileName() +{ + return fileName; +} + +const QString& gtDialogs::getEncoding() +{ + return encoding; +} + +int gtDialogs::getImporter() +{ + return importer; +} + +bool gtDialogs::importTextOnly() +{ + bool ret = false; + if (fdia) + ret = fdia->textOnlyCheckBox->isChecked(); + return ret; +} + +gtDialogs::~gtDialogs() +{ + delete fdia; +} |
