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