Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qSlicerCLILoadableModuleFactory.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qSlicerCLILoadableModuleFactory_h
22#define __qSlicerCLILoadableModuleFactory_h
23
24// CTK includes
25#include <ctkPimpl.h>
26#include <ctkAbstractLibraryFactory.h>
27
28// Slicer includes
30#include "qSlicerBaseQTCLIExport.h"
31
32class ModuleDescription;
33class ModuleLogo;
35
36//-----------------------------------------------------------------------------
37class qSlicerCLILoadableModuleFactoryItem : public ctkFactoryLibraryItem<qSlicerAbstractCoreModule>
38{
39public:
40 typedef ctkFactoryLibraryItem<qSlicerAbstractCoreModule> Superclass;
41 qSlicerCLILoadableModuleFactoryItem(const QString& newTempDirectory);
42 bool load() override;
43
44 static void loadLibraryAndResolveSymbols(void* libraryLoader, ModuleDescription& desc);
45
46protected:
49
52 bool resolveSymbols(ModuleDescription& desc);
53 static bool updateLogo(qSlicerCLILoadableModuleFactoryItem* item, ModuleLogo& logo);
54
55private:
56 QString TempDirectory;
57};
58
59class qSlicerCLILoadableModuleFactoryPrivate;
60
61//-----------------------------------------------------------------------------
62class Q_SLICER_BASE_QTCLI_EXPORT qSlicerCLILoadableModuleFactory : public ctkAbstractLibraryFactory<qSlicerAbstractCoreModule>
63{
64public:
65 typedef ctkAbstractLibraryFactory<qSlicerAbstractCoreModule> Superclass;
68
70 void registerItems() override;
71
78 QString fileNameToKey(const QString& fileName) const override;
79
80 void setTempDirectory(const QString& newTempDirectory);
81
82protected:
83 ctkAbstractFactoryItem<qSlicerAbstractCoreModule>* createFactoryFileBasedItem() override;
84
85 bool isValidFile(const QFileInfo& file) const override;
86
87protected:
88 QScopedPointer<qSlicerCLILoadableModuleFactoryPrivate> d_ptr;
89
90private:
91 Q_DECLARE_PRIVATE(qSlicerCLILoadableModuleFactory);
92 Q_DISABLE_COPY(qSlicerCLILoadableModuleFactory);
93};
94
95#endif
qSlicerAbstractCoreModule is the base class of any module in Slicer.
static bool updateLogo(qSlicerCLILoadableModuleFactoryItem *item, ModuleLogo &logo)
ctkFactoryLibraryItem< qSlicerAbstractCoreModule > Superclass
qSlicerAbstractCoreModule * instanciator() override
qSlicerCLILoadableModuleFactoryItem(const QString &newTempDirectory)
QString xmlModuleDescriptionFilePath() const
Return path of the expected XML file.
static void loadLibraryAndResolveSymbols(void *libraryLoader, ModuleDescription &desc)
bool resolveSymbols(ModuleDescription &desc)
void setTempDirectory(const QString &newTempDirectory)
bool isValidFile(const QFileInfo &file) const override
ctkAbstractLibraryFactory< qSlicerAbstractCoreModule > Superclass
QScopedPointer< qSlicerCLILoadableModuleFactoryPrivate > d_ptr
void registerItems() override
Reimplemented to scan the directory of the command line modules.
QString fileNameToKey(const QString &fileName) const override
ctkAbstractFactoryItem< qSlicerAbstractCoreModule > * createFactoryFileBasedItem() override