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 
0021 #ifndef BROWSERAPPCONFIGTYPE_H
0022 #define BROWSERAPPCONFIGTYPE_H
0023 
0024 #include <interfaces/launchconfigurationtype.h>
0025 #include <interfaces/launchconfigurationpage.h>
0026 #include <interfaces/ilauncher.h>
0027 
0028 #include "ui_browserappconfig.h"
0029 
0030 
0031 class BrowserAppConfigPage : public KDevelop::LaunchConfigurationPage, Ui::BrowserAppPage
0032 {
0033     Q_OBJECT
0034 public:
0035     BrowserAppConfigPage( QWidget* parent );
0036 
0037     void loadFromConfiguration( const KConfigGroup& cfg, KDevelop::IProject* project = nullptr ) override;
0038     void saveToConfiguration( KConfigGroup cfg, KDevelop::IProject* project = nullptr ) const override;
0039     QString title() const override;
0040     QIcon icon() const override;
0041 private:
0042     void selectDialog();
0043 };
0044 
0045 class BrowserAppLauncher : public KDevelop::ILauncher
0046 {
0047 public:
0048     BrowserAppLauncher();
0049 
0050     QList< KDevelop::LaunchConfigurationPageFactory* > configPages() const override;
0051     QString description() const override;
0052     QString id() override;
0053     QString name() const override;
0054     KJob* start(const QString& launchMode, KDevelop::ILaunchConfiguration* cfg) override;
0055     QStringList supportedModes() const override;
0056 };
0057 
0058 class BrowserAppPageFactory : public KDevelop::LaunchConfigurationPageFactory
0059 {
0060 public:
0061     BrowserAppPageFactory();
0062 
0063     KDevelop::LaunchConfigurationPage* createWidget(QWidget* parent) override;
0064 };
0065 
0066 /**
0067  * A specific configuration to start a launchable, this could be a native
0068  * compiled application, or some script file or byte-compiled file or something else
0069  * Provides access to the various configured informations, as well as its type and a name
0070  */
0071 class BrowserAppConfigType : public KDevelop::LaunchConfigurationType
0072 {
0073 public:
0074     BrowserAppConfigType();
0075 
0076     QString id() const override;
0077     QString name() const override;
0078     QList<KDevelop::LaunchConfigurationPageFactory*> configPages() const override;
0079     QIcon icon() const override;
0080     bool canLaunch( const QUrl& file ) const override;
0081     bool canLaunch(KDevelop::ProjectBaseItem* item) const override;
0082     void configureLaunchFromItem(KConfigGroup config, KDevelop::ProjectBaseItem* item) const override;
0083     void configureLaunchFromCmdLineArguments(KConfigGroup config, const QStringList& args) const override;
0084 
0085 private:
0086     QList<KDevelop::LaunchConfigurationPageFactory*> factoryList;
0087 };
0088 #endif
0089