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