File indexing completed on 2024-05-05 04:39:48
0001 #ifndef KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H 0002 #define KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H 0003 0004 #include <interfaces/iplugin.h> 0005 #include <interfaces/itemplateprovider.h> 0006 #include <QVariantList> 0007 0008 class QUrl; 0009 namespace KDevelop 0010 { 0011 class TemplatesModel; 0012 class IToolViewFactory; 0013 } 0014 0015 0016 class FileTemplatesPlugin : public KDevelop::IPlugin, public KDevelop::ITemplateProvider 0017 { 0018 Q_OBJECT 0019 Q_INTERFACES(KDevelop::ITemplateProvider) 0020 0021 public: 0022 enum TemplateType 0023 { 0024 NoTemplate, 0025 FileTemplate, 0026 ProjectTemplate 0027 }; 0028 0029 FileTemplatesPlugin(QObject* parent, const QVariantList& args); 0030 ~FileTemplatesPlugin() override; 0031 void unload() override; 0032 0033 KDevelop::ContextMenuExtension contextMenuExtension (KDevelop::Context* context, QWidget* parent) override; 0034 0035 QString name() const override; 0036 QIcon icon() const override; 0037 QAbstractItemModel* templatesModel() const override; 0038 QString knsConfigurationFile() const override; 0039 QStringList supportedMimeTypes() const override; 0040 0041 void reload() override; 0042 void loadTemplate(const QString& fileName) override; 0043 0044 TemplateType determineTemplateType(const QUrl& url); 0045 0046 private: 0047 // created lazily 0048 mutable KDevelop::TemplatesModel* m_model = nullptr; 0049 KDevelop::IToolViewFactory* m_toolView; 0050 0051 public Q_SLOTS: 0052 void createFromTemplate(); 0053 void previewTemplate(); 0054 }; 0055 0056 #endif // KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H