File indexing completed on 2024-04-28 04:39:09

0001 /*
0002     SPDX-FileCopyrightText: 2004 Roberto Raggi <roberto@kdevelop.org>
0003     SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef KDEVPLATFORM_PLUGIN_PROJECTMANAGERVIEWPLUGIN_H
0009 #define KDEVPLATFORM_PLUGIN_PROJECTMANAGERVIEWPLUGIN_H
0010 
0011 #include <interfaces/iplugin.h>
0012 #include <QVariantList>
0013 #include <project/builderjob.h>
0014 
0015 namespace KDevelop
0016 {
0017 class ProjectBaseItem;
0018 }
0019 
0020 class ProjectManagerView;
0021 
0022 class ProjectManagerViewPlugin: public KDevelop::IPlugin
0023 {
0024     Q_OBJECT
0025 public:
0026 
0027 public:
0028     explicit ProjectManagerViewPlugin(QObject *parent, const QVariantList & = QVariantList() );
0029     ~ProjectManagerViewPlugin() override;
0030 
0031     // Plugin methods
0032     void unload() override;
0033 
0034     KDevelop::ContextMenuExtension contextMenuExtension(KDevelop::Context* context, QWidget* parent) override;
0035 
0036     void removeItems(const QList<KDevelop::ProjectBaseItem*>& items);
0037     void renameItems(const QList< KDevelop::ProjectBaseItem* >& items);
0038 
0039 public Q_SLOTS:
0040     void buildProjectItems();
0041     void installProjectItems();
0042     void cleanProjectItems();
0043     void copyFromContextMenu();
0044     void pasteFromContextMenu();
0045 
0046 protected Q_SLOTS:
0047     void closeProjects();
0048     void buildItemsFromContextMenu();
0049     void installItemsFromContextMenu();
0050     void cleanItemsFromContextMenu();
0051     void configureProjectItems();
0052     void pruneProjectItems();
0053     void buildAllProjects();
0054     void addItemsFromContextMenuToBuildset();
0055     void projectConfiguration();
0056     void runTargetsFromContextMenu();
0057     void reloadFromContextMenu();
0058     void createFolderFromContextMenu();
0059     void createFileFromContextMenu();
0060     void removeFromContextMenu();
0061     void cutFromContextMenu();
0062     void removeTargetFilesFromContextMenu();
0063     void renameItemFromContextMenu();
0064     void updateActionState( KDevelop::Context* ctx );
0065     void updateFromBuildSetChange();
0066 
0067 private:
0068     QList<KDevelop::ProjectBaseItem*> recurseAndFetchCheckedItems( KDevelop::ProjectBaseItem* item );
0069     QList<KDevelop::ProjectBaseItem*> collectItems();
0070     QList<KDevelop::ProjectBaseItem*> collectAllProjects();
0071     void runBuilderJob( KDevelop::BuilderJob::BuildType type, const QList<KDevelop::ProjectBaseItem*>& items );
0072     class ProjectManagerViewPluginPrivate* const d;
0073 };
0074 
0075 #endif
0076