1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 #include <QDir>
8 #include <QPushButton>
9 #include "runscriptdialog.h"
10 #include "prefsmanager.h"
11
12 QString RunScriptDialog::m_lastScriptDir;
13
RunScriptDialog(QWidget * parent,bool extEnable)14 RunScriptDialog::RunScriptDialog(QWidget* parent, bool extEnable) :
15 QDialog(parent)
16 {
17 setupUi(this);
18
19 m_extEnable = extEnable;
20 PrefsManager& prefsManager = PrefsManager::instance();
21 QString scriptDir(prefsManager.appPrefs.pathPrefs.scripts);
22 if (!m_lastScriptDir.isEmpty() && QDir(m_lastScriptDir).exists())
23 fileWidget->setDirectory(m_lastScriptDir);
24 else if (!scriptDir.isEmpty() && QDir(scriptDir).exists())
25 fileWidget->setDirectory(scriptDir);
26 else
27 fileWidget->setDirectory(QDir::current());
28 fileWidget->setNameFilter( tr("Python Scripts (*.py *.PY);; All Files (*)"));
29
30 if (!extEnable)
31 extChk->setVisible(false);
32 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
33 connect(fileWidget, SIGNAL(currentChanged(const QString &)), this, SLOT(fileClicked(const QString &)));
34 connect(fileWidget, SIGNAL(accepted()), this, SLOT(accept()));
35 connect(fileWidget, SIGNAL(rejected()), this, SLOT(reject()));
36 connect(buttonBox, SIGNAL(accepted()), this, SLOT(okClicked()));
37 connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
38 }
39
~RunScriptDialog()40 RunScriptDialog::~RunScriptDialog()
41 {
42 }
43
extensionRequested()44 bool RunScriptDialog::extensionRequested()
45 {
46 if (m_extEnable)
47 return extChk->isChecked();
48 return false;
49 }
50
selectedFile()51 QString RunScriptDialog::selectedFile()
52 {
53 return fileWidget->selectedFile();
54 }
55
accept()56 void RunScriptDialog:: accept()
57 {
58 m_lastScriptDir = fileWidget->directory().path();
59 QDialog::accept();
60 }
61
fileClicked(const QString & path)62 void RunScriptDialog::fileClicked(const QString& path)
63 {
64 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!path.isEmpty());
65 }
66
okClicked()67 void RunScriptDialog::okClicked()
68 {
69 QString selFile;
70 QStringList sel = fileWidget->selectedFiles();
71 if (sel.isEmpty())
72 return;
73 selFile = QDir::fromNativeSeparators(sel[0]);
74 QFileInfo fi(selFile);
75 if (fi.isDir())
76 fileWidget->gotoSelectedDirectory();
77 else
78 accept();
79 }
80