File indexing completed on 2024-05-12 03:47:27
0001 /* 0002 File : interfaces.h 0003 Project : SciDAVis 0004 Description : Interfaces the kernel uses to talk to modules 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2008 Knut Franke <knut.franke*gmx.de (use @ for *)> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef INTERFACES_H 0011 #define INTERFACES_H 0012 0013 #include "backend/core/AbstractAspect.h" 0014 #include "backend/lib/XmlStreamReader.h" 0015 0016 #include <QtPlugin> 0017 0018 class AbstractPart; 0019 class QAction; 0020 class QMenu; 0021 class ProjectWindow; 0022 class AbstractFilter; 0023 class AbstractImportFilter; 0024 class AbstractExportFilter; 0025 class ActionManager; 0026 0027 class PartMaker { 0028 public: 0029 virtual ~PartMaker() = default; 0030 virtual AbstractPart* makePart() = 0; 0031 virtual QAction* makeAction(QObject* parent) = 0; 0032 }; 0033 0034 Q_DECLARE_INTERFACE(PartMaker, "net.sf.scidavis.partmaker/0.1") 0035 0036 class FilterMaker { 0037 public: 0038 virtual ~FilterMaker() = default; 0039 virtual AbstractFilter* makeFilter(int id = 0) = 0; 0040 virtual int filterCount() const { 0041 return 1; 0042 } 0043 virtual QAction* makeAction(QObject* parent, int id = 0) = 0; 0044 }; 0045 0046 Q_DECLARE_INTERFACE(FilterMaker, "net.sf.scidavis.filtermaker/0.1") 0047 0048 class FileFormat { 0049 public: 0050 virtual ~FileFormat() = default; 0051 virtual AbstractImportFilter* makeImportFilter() = 0; 0052 virtual AbstractExportFilter* makeExportFilter() = 0; 0053 }; 0054 0055 Q_DECLARE_INTERFACE(FileFormat, "net.sf.scidavis.fileformat/0.1") 0056 0057 class XmlElementAspectMaker { 0058 public: 0059 virtual ~XmlElementAspectMaker() = default; 0060 virtual bool canCreate(const QString& element_name) = 0; 0061 virtual AbstractAspect* createAspectFromXml(XmlStreamReader* reader) = 0; 0062 }; 0063 0064 Q_DECLARE_INTERFACE(XmlElementAspectMaker, "net.sf.scidavis.xmlelementaspectmaker/0.1") 0065 0066 class NeedsStaticInit { 0067 public: 0068 virtual ~NeedsStaticInit() = default; 0069 virtual void staticInit() = 0; 0070 }; 0071 0072 Q_DECLARE_INTERFACE(NeedsStaticInit, "net.sf.scidavis.needsstaticinit/0.1") 0073 0074 class VersionedPlugin { 0075 public: 0076 virtual ~VersionedPlugin() = default; 0077 virtual int pluginTargetAppVersion() const = 0; 0078 virtual QString pluginTargetAppName() const = 0; 0079 virtual QString pluginName() const = 0; 0080 }; 0081 0082 Q_DECLARE_INTERFACE(VersionedPlugin, "net.sf.scidavis.versionedplugin/0.1") 0083 0084 #endif // ifndef INTERFACES_H