Computer Assited Medical Intervention Tool Kit  version 5.0
ComponentExtension.h
Go to the documentation of this file.
1/*****************************************************************************
2 * $CAMITK_LICENCE_BEGIN$
3 *
4 * CamiTK - Computer Assisted Medical Intervention ToolKit
5 * (c) 2001-2021 Univ. Grenoble Alpes, CNRS, Grenoble INP, TIMC, 38000 Grenoble, France
6 *
7 * Visit http://camitk.imag.fr for more information
8 *
9 * This file is part of CamiTK.
10 *
11 * CamiTK is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * CamiTK is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22 *
23 * $CAMITK_LICENCE_END$
24 ****************************************************************************/
25
26
27#ifndef COMPONENT_EXTENSION_H
28#define COMPONENT_EXTENSION_H
29
30// -- Qt stuff
31#include <QObject>
32
33// -- CamiTK Core stuff
34#include "CamiTKAPI.h"
35#include "AbortException.h"
36
37namespace camitk {
38class Component;
60class CAMITK_API ComponentExtension : public QObject {
61
62protected:
63
66
67public:
68
70 ~ComponentExtension() override = default;
71
75 virtual QString getName() const = 0;
76
78 virtual QString getDescription() const = 0;
79
81 virtual QStringList getFileExtensions() const = 0;
82
92 virtual Component* open(const QString&) = 0;
93
112 virtual bool save(Component* component) const;
113
115 virtual bool hasDataDirectory() const {
116 return false;
117 }
118
120 QString getLocation() const {
121 return dynamicLibraryFileName;
122 }
123
125 void setLocation(const QString loc) {
126 dynamicLibraryFileName = loc;
127 }
128
130 void initResources();
131
133
134
135private:
138
141};
142
143
144
145}
146// -------------------- declare the interface for QPluginLoader --------------------
147Q_DECLARE_INTERFACE(camitk::ComponentExtension, "TIMC-IMAG.ComponentExtension/2.1") //TODO use variable from CMake?
148
149
150#endif //COMPONENT_EXTENSION_H
#define CAMITK_API
Definition: CamiTKAPI.h:49
A component is something that composed something and could also be a part of something.
Definition: modeling/libraries/pml/Component.h:48
This class describes what is a generic Component extension.
Definition: ComponentExtension.h:60
QString getLocation() const
get the file path (location of the .dll/.so/.dylib) of this plugin
Definition: ComponentExtension.h:120
virtual QString getName() const =0
virtual bool hasDataDirectory() const
return true if this component manages directory instead of individual files (e.g. Dicom series are st...
Definition: ComponentExtension.h:115
~ComponentExtension() override=default
protected destructor,
virtual QString getDescription() const =0
get the plugin description
bool autoload
the autoload state
Definition: ComponentExtension.h:140
virtual Component * open(const QString &)=0
get a new instance from data stored in a file (this is the most important method to redefine in your ...
void setLocation(const QString loc)
set the file path (once loaded as a dynamic library)
Definition: ComponentExtension.h:125
virtual QStringList getFileExtensions() const =0
get the list of managed extensions (each file with an extension in the list can be loaded by this Com...
QString dynamicLibraryFileName
the shared lib (.so, .dll or .dylib) used to instantiate the ComponentExtension subclass instance
Definition: ComponentExtension.h:137
A Component represents something that could be included in the explorer view, the interactive 3D view...
Definition: sdk/libraries/core/component/Component.h:302
Definition: Action.cpp:35