File indexing completed on 2024-04-28 04:37:48

0001 /*
0002     SPDX-FileCopyrightText: 2001 Bernd Gehrmann <bernd@kdevelop.org>
0003     SPDX-FileCopyrightText: 2004-2005 Sascha Cunz <sascha@kdevelop.org>
0004     SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef _APPWIZARDPLUGIN_H_
0010 #define _APPWIZARDPLUGIN_H_
0011 
0012 #include <interfaces/iplugin.h>
0013 #include <interfaces/itemplateprovider.h>
0014 
0015 #include <QHash>
0016 #include <QVariant>
0017 
0018 class ProjectTemplatesModel;
0019 class ApplicationInfo;
0020 class KArchiveDirectory;
0021 
0022 class AppWizardPlugin: public KDevelop::IPlugin, public KDevelop::ITemplateProvider
0023 {
0024     Q_OBJECT
0025     Q_INTERFACES(KDevelop::ITemplateProvider)
0026 
0027 public:
0028     explicit AppWizardPlugin(QObject *parent, const QVariantList & = QVariantList());
0029     ~AppWizardPlugin() override;
0030     KDevelop::ContextMenuExtension contextMenuExtension(KDevelop::Context* context, QWidget* parent) override;
0031 
0032     QAbstractItemModel* templatesModel() const override;
0033     QString knsConfigurationFile() const override;
0034     QStringList supportedMimeTypes() const override;
0035     QString name() const override;
0036     QIcon icon() const override;
0037     void loadTemplate(const QString& fileName) override;
0038     void reload() override;
0039 
0040 private Q_SLOTS:
0041     void slotNewProject();
0042 
0043 private:
0044     ProjectTemplatesModel* model() const;
0045 
0046     QString createProject(const ApplicationInfo& );
0047     bool unpackArchive(const KArchiveDirectory* dir, const QString& dest, const QStringList& skipList = {});
0048     bool copyFileAndExpandMacros(const QString &source, const QString &dest);
0049 
0050     // created lazily
0051     mutable ProjectTemplatesModel* m_templatesModel = nullptr;
0052     QAction* m_newFromTemplate;
0053     QHash<QString, QString> m_variables;
0054 };
0055 
0056 #endif
0057