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