File indexing completed on 2024-04-28 03:43:17
0001 /* 0002 SPDX-FileCopyrightText: 2020 Jasem Mutlaq <mutlaqja@ikarustech.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include <QFileDialog> 0008 #include <QFileInfo> 0009 0010 #include "scriptsmanager.h" 0011 #include "ui_scriptsmanager.h" 0012 #include "auxiliary/ksnotification.h" 0013 0014 #include "scriptsmanager.h" 0015 #include "ui_scriptsmanager.h" 0016 0017 namespace Ekos 0018 { 0019 ScriptsManager::ScriptsManager(QWidget *parent) : 0020 QDialog(parent), 0021 ui(new Ui::ScriptsManager) 0022 { 0023 ui->setupUi(this); 0024 0025 connect(ui->preJobB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts); 0026 connect(ui->postJobB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts); 0027 connect(ui->preCaptureB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts); 0028 connect(ui->postCaptureB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts); 0029 0030 connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); 0031 connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); 0032 } 0033 0034 void ScriptsManager::handleSelectScripts() 0035 { 0036 QPushButton *button = qobject_cast<QPushButton*>(sender()); 0037 if (!button) 0038 return; 0039 0040 QString title; 0041 if (button == ui->preJobB) 0042 title = i18nc("@title:window", "Pre Job Script"); 0043 else if (button == ui->postJobB) 0044 title = i18nc("@title:window", "Post Job Script"); 0045 else if (button == ui->postCaptureB) 0046 title = i18nc("@title:window", "Post Capture Script"); 0047 else if (button == ui->preCaptureB) 0048 title = i18nc("@title:window", "Pre Capture Script"); 0049 0050 QUrl url = QFileDialog::getOpenFileUrl(this, title); 0051 if (!url.isValid()) 0052 return; 0053 0054 QString localFile = url.toLocalFile(); 0055 QFileInfo info(localFile); 0056 0057 if (info.permission(QFileDevice::ExeOwner) == false) 0058 { 0059 KSNotification::error(i18n("File %1 is not executable.", localFile)); 0060 return; 0061 } 0062 0063 if (button == ui->preJobB) 0064 ui->preJobScript->setText(localFile); 0065 else if (button == ui->postJobB) 0066 ui->postJobScript->setText(localFile); 0067 else if (button == ui->postCaptureB) 0068 ui->postCaptureScript->setText(localFile); 0069 else if (button == ui->preCaptureB) 0070 ui->preCaptureScript->setText(localFile); 0071 0072 connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); 0073 connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); 0074 } 0075 0076 void ScriptsManager::setScripts(const QMap<ScriptTypes, QString> &scripts) 0077 { 0078 ui->preJobScript->setText(scripts[SCRIPT_PRE_JOB]); 0079 ui->postJobScript->setText(scripts[SCRIPT_POST_JOB]); 0080 ui->preCaptureScript->setText(scripts[SCRIPT_PRE_CAPTURE]); 0081 ui->postCaptureScript->setText(scripts[SCRIPT_POST_CAPTURE]); 0082 } 0083 0084 QMap<ScriptTypes, QString> ScriptsManager::getScripts() 0085 { 0086 QMap<ScriptTypes, QString> scripts; 0087 0088 scripts[SCRIPT_PRE_JOB] = ui->preJobScript->text(); 0089 scripts[SCRIPT_POST_JOB] = ui->postJobScript->text(); 0090 scripts[SCRIPT_PRE_CAPTURE] = ui->preCaptureScript->text(); 0091 scripts[SCRIPT_POST_CAPTURE] = ui->postCaptureScript->text(); 0092 0093 return scripts; 0094 } 0095 0096 ScriptsManager::~ScriptsManager() 0097 { 0098 delete ui; 0099 } 0100 0101 }