File indexing completed on 2024-04-21 04:34:29
0001 /* This file is part of KDevelop 0002 Copyright 2009 Andreas Pakulat <apaku@gmx.de> 0003 Copyright 2009 Niko Sams <niko.sams@gmail.com> 0004 0005 This library is free software; you can redistribute it and/or 0006 modify it under the terms of the GNU Library General Public 0007 License as published by the Free Software Foundation; either 0008 version 2 of the License, or (at your option) any later version. 0009 0010 This library is distributed in the hope that it will be useful, 0011 but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0013 Library General Public License for more details. 0014 0015 You should have received a copy of the GNU Library General Public License 0016 along with this library; see the file COPYING.LIB. If not, write to 0017 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0018 Boston, MA 02110-1301, USA. 0019 */ 0020 #include "browserappconfig.h" 0021 0022 #include <QIcon> 0023 0024 #include <KConfigGroup> 0025 #include <KOpenWithDialog> 0026 0027 #include <interfaces/icore.h> 0028 #include <interfaces/ilaunchconfiguration.h> 0029 #include <interfaces/iruncontroller.h> 0030 0031 #include <debug.h> 0032 #include "browserappjob.h" 0033 #include "executebrowserplugin.h" 0034 0035 QIcon BrowserAppConfigPage::icon() const 0036 { 0037 return QIcon::fromTheme("system-run"); 0038 } 0039 0040 void BrowserAppConfigPage::loadFromConfiguration(const KConfigGroup& cfg, KDevelop::IProject* project ) 0041 { 0042 Q_UNUSED(project); 0043 0044 bool b = blockSignals( true ); 0045 server->setText( cfg.readEntry( ExecuteBrowserPlugin::serverEntry, "localhost" ) ); 0046 path->setText( cfg.readEntry( ExecuteBrowserPlugin::pathEntry, "" ) ); 0047 port->setValue( cfg.readEntry( ExecuteBrowserPlugin::portEntry, 80 ) ); 0048 arguments->setText( cfg.readEntry( ExecuteBrowserPlugin::argumentsEntry, "" ) ); 0049 browser->setText( cfg.readEntry( ExecuteBrowserPlugin::browserEntry, "" ) ); 0050 blockSignals( b ); 0051 } 0052 0053 BrowserAppConfigPage::BrowserAppConfigPage( QWidget* parent ) 0054 : LaunchConfigurationPage( parent ) 0055 { 0056 setupUi(this); 0057 0058 selectBrowserButton->setIcon(QIcon::fromTheme("system-run")); 0059 0060 //connect signals to changed signal 0061 connect(server, &KLineEdit::textEdited, this, &BrowserAppConfigPage::changed); 0062 connect(path, &KLineEdit::textEdited, this, &BrowserAppConfigPage::changed); 0063 connect(port, QOverload<int>::of(&QSpinBox::valueChanged), this, &BrowserAppConfigPage::changed); 0064 connect(arguments, &KLineEdit::textEdited, this, &BrowserAppConfigPage::changed); 0065 connect(browser, &KLineEdit::textEdited, this, &BrowserAppConfigPage::changed); 0066 connect(selectBrowserButton, &QPushButton::pressed, this, &BrowserAppConfigPage::selectDialog); 0067 } 0068 0069 void BrowserAppConfigPage::saveToConfiguration( KConfigGroup cfg, KDevelop::IProject* project ) const 0070 { 0071 Q_UNUSED( project ); 0072 cfg.writeEntry( ExecuteBrowserPlugin::serverEntry, server->text() ); 0073 cfg.writeEntry( ExecuteBrowserPlugin::pathEntry, path->text() ); 0074 cfg.writeEntry( ExecuteBrowserPlugin::portEntry, port->value() ); 0075 cfg.writeEntry( ExecuteBrowserPlugin::argumentsEntry, arguments->text() ); 0076 cfg.writeEntry( ExecuteBrowserPlugin::browserEntry, browser->text() ); 0077 } 0078 0079 QString BrowserAppConfigPage::title() const 0080 { 0081 return i18n("Configure Browser Application"); 0082 } 0083 0084 void BrowserAppConfigPage::selectDialog() 0085 { 0086 KOpenWithDialog *dialog = new KOpenWithDialog(); 0087 dialog->hideNoCloseOnExit(); 0088 dialog->hideRunInTerminal(); 0089 if(dialog->exec()) { 0090 browser->setText(dialog->text().replace(QStringLiteral(" %u"), QStringLiteral(""), Qt::CaseSensitivity::CaseInsensitive)); 0091 dialog->deleteLater(); 0092 emit changed(); 0093 } 0094 } 0095 0096 QList< KDevelop::LaunchConfigurationPageFactory* > BrowserAppLauncher::configPages() const 0097 { 0098 return QList<KDevelop::LaunchConfigurationPageFactory*>(); 0099 } 0100 0101 QString BrowserAppLauncher::description() const 0102 { 0103 return "Executes Browser Applications"; 0104 } 0105 0106 QString BrowserAppLauncher::id() 0107 { 0108 return "browserAppLauncher"; 0109 } 0110 0111 QString BrowserAppLauncher::name() const 0112 { 0113 return i18n("Browser Application"); 0114 } 0115 0116 BrowserAppLauncher::BrowserAppLauncher() 0117 { 0118 } 0119 0120 KJob* BrowserAppLauncher::start(const QString& launchMode, KDevelop::ILaunchConfiguration* cfg) 0121 { 0122 Q_ASSERT(cfg); 0123 if( !cfg ) 0124 { 0125 return nullptr; 0126 } 0127 if( launchMode == "execute" ) 0128 { 0129 return new BrowserAppJob( KDevelop::ICore::self()->runController(), cfg ); 0130 0131 } 0132 qCWarning(KDEV_EXECUTEBROWSER) << "Unknown launch mode " << launchMode << "for config:" << cfg->name(); 0133 return nullptr; 0134 } 0135 0136 QStringList BrowserAppLauncher::supportedModes() const 0137 { 0138 return QStringList() << "execute"; 0139 } 0140 0141 KDevelop::LaunchConfigurationPage* BrowserAppPageFactory::createWidget(QWidget* parent) 0142 { 0143 return new BrowserAppConfigPage( parent ); 0144 } 0145 0146 BrowserAppPageFactory::BrowserAppPageFactory() 0147 { 0148 } 0149 0150 BrowserAppConfigType::BrowserAppConfigType() 0151 { 0152 factoryList.append( new BrowserAppPageFactory() ); 0153 } 0154 0155 QString BrowserAppConfigType::name() const 0156 { 0157 return i18n("Browser Application"); 0158 } 0159 0160 0161 QList<KDevelop::LaunchConfigurationPageFactory*> BrowserAppConfigType::configPages() const 0162 { 0163 return factoryList; 0164 } 0165 0166 QString BrowserAppConfigType::id() const 0167 { 0168 return ExecuteBrowserPlugin::_browserAppConfigTypeId; 0169 } 0170 0171 QIcon BrowserAppConfigType::icon() const 0172 { 0173 return QIcon::fromTheme("system-run"); 0174 } 0175 0176 bool BrowserAppConfigType::canLaunch(const QUrl& /*file*/) const 0177 { 0178 return false; 0179 } 0180 0181 bool BrowserAppConfigType::canLaunch(KDevelop::ProjectBaseItem* /*item*/) const 0182 { 0183 return false; 0184 } 0185 0186 void BrowserAppConfigType::configureLaunchFromItem(KConfigGroup /*config*/, 0187 KDevelop::ProjectBaseItem* /*item*/) const 0188 { 0189 0190 } 0191 0192 void BrowserAppConfigType::configureLaunchFromCmdLineArguments(KConfigGroup /*config*/, 0193 const QStringList &/*args*/) const 0194 { 0195 }