Slicer  5.0
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vtkMRMLCommandLineModuleNode.h
Go to the documentation of this file.
1 /*=auto=========================================================================
2 
3  Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4 
5  See COPYRIGHT.txt
6  or http://www.slicer.org/copyright/copyright.txt for details.
7 
8 =========================================================================auto=*/
9 
10 #ifndef __vtkMRMLCommandLineModuleNode_h
11 #define __vtkMRMLCommandLineModuleNode_h
12 
14 #include <vtkMRMLNode.h>
15 
16 #include "vtkMRMLCLIExport.h"
17 
18 class ModuleDescription;
19 
26 class VTK_MRML_CLI_EXPORT vtkMRMLCommandLineModuleNode : public vtkMRMLNode
27 {
28 public:
29  static vtkMRMLCommandLineModuleNode *New();
31  void PrintSelf(ostream& os, vtkIndent indent) override;
32 
33  vtkMRMLNode* CreateNodeInstance() override;
34 
36  void ReadXMLAttributes(const char** atts) override;
37 
39  void WriteXML(ostream& of, int indent) override;
40 
44 
46  const char* GetNodeTagName() override
47  {return "CommandLineModule";}
48 
55  ParameterChangedEvent = 17000,
66  StatusModifiedEvent
67  };
68 
71  const ModuleDescription& GetModuleDescription() const;
72  ModuleDescription& GetModuleDescription();
73  std::string GetModuleDescriptionAsString() const;
74  void SetModuleDescription(const ModuleDescription& description);
75 
76  typedef enum {
78  Idle=0x00,
80  Scheduled=0x01,
82  Running=0x02,
84  Cancelling=0x04,
88  Cancelled=0x08,
91  Completing=0x10,
94  Completed=0x20,
96  ErrorsMask=0x40,
98  CompletedWithErrors= Completed | ErrorsMask,
100  BusyMask = Scheduled | Running | Cancelling | Completing
101  } StatusType;
102 
110  void SetStatus(int status, bool modify=true);
112  int GetStatus() const;
113 
116  const char* GetStatusString() const;
117 
119  void SetOutputText(const std::string& text, bool modify = true);
121  const std::string GetOutputText() const;
122 
124  void SetErrorText(const std::string& text, bool modify = true);
126  const std::string GetErrorText() const;
127 
131  bool IsBusy()const;
132 
133  int GetProgress()const;
134 
138  void Cancel();
139 
143  {
147  AutoRunCancelsRunningProcess = 0x01,
151  AutoRunOnChangedParameter = 0x10,
156  AutoRunOnModifiedInputEvent = 0x20,
159  AutoRunOnOtherInputEvents = 0x40,
161  AutoRunOnAnyInputEvent = AutoRunOnModifiedInputEvent | AutoRunOnOtherInputEvents,
162  // <- add here new options
164  AutoRunEnabledMask = AutoRunOnChangedParameter | AutoRunOnAnyInputEvent
165  };
166 
171  void SetAutoRun(bool enable);
172 
175  bool GetAutoRun()const;
176 
182  void SetAutoRunMode(int autoRunMode);
183 
186  int GetAutoRunMode()const;
187 
191  void SetAutoRunDelay(unsigned int delayInMs);
192 
196  unsigned int GetAutoRunDelay()const;
197 
200  vtkMTimeType GetLastRunTime()const;
201 
204  vtkMTimeType GetParameterMTime()const;
205 
208  vtkMTimeType GetInputMTime()const;
209 
212  bool ReadParameterFile(const std::string& filename);
213 
219  bool WriteParameterFile(const std::string& filename, bool withHandlesToBulkParameters = true);
220 
226  bool SetParameterAsNode(const char* name, vtkMRMLNode* value);
230  bool SetParameterAsString(const char* name, const std::string& value);
234  bool SetParameterAsInt(const char* name, int value);
238  bool SetParameterAsBool(const char* name, bool value);
242  bool SetParameterAsDouble(const char* name, double value);
246  bool SetParameterAsFloat(const char* name, float value);
247 
248  std::string GetParameterAsString(const char* name) const;
249 
250  void SetModuleDescription(const char *name);
251  std::string GetModuleVersion() const;
252  std::string GetModuleTitle() const;
253  std::string GetModuleTarget() const;
254  std::string GetModuleType() const;
255  bool IsValidGroupId(unsigned int group) const;
256  bool IsValidParamId(unsigned int group, unsigned int param) const;
257  unsigned int GetNumberOfParameterGroups() const;
258  unsigned int GetNumberOfParametersInGroup(unsigned int group) const;
259  std::string GetParameterGroupLabel(unsigned int group) const;
260  std::string GetParameterGroupDescription(unsigned int group) const;
261  std::string GetParameterGroupAdvanced(unsigned int group) const;
262  std::string GetParameterTag(unsigned int group, unsigned int param) const;
263  std::string GetParameterType(unsigned int group, unsigned int param) const;
264  std::string GetParameterArgType(unsigned int group, unsigned int param) const;
265  std::string GetParameterName(unsigned int group, unsigned int param) const;
266  std::string GetParameterLongFlag(unsigned int group, unsigned int param) const;
267  std::string GetParameterLabel(unsigned int group, unsigned int param) const;
268  std::string GetParameterConstraints(unsigned int group, unsigned int param) const;
269  std::string GetParameterMaximum(unsigned int group, unsigned int param) const;
270  std::string GetParameterMinimum(unsigned int group, unsigned int param) const;
271  std::string GetParameterDescription(unsigned int group, unsigned int param) const;
272  std::string GetParameterChannel(unsigned int group, unsigned int param) const;
273  std::string GetParameterIndex(unsigned int group, unsigned int param) const;
275  std::string GetParameterDefault(unsigned int group, unsigned int param) const;
276  std::string GetParameterValue(unsigned int group, unsigned int param) const;
277  std::string GetParameterFlag(unsigned int group, unsigned int param) const;
278  std::string GetParameterMultiple(unsigned int group, unsigned int param) const;
279  std::string GetParameterFileExtensions(unsigned int group, unsigned int param) const;
280  std::string GetParameterCoordinateSystem(unsigned int group, unsigned int param) const;
281 
285  bool IsInputDefaultValue(const std::string& value)const;
286 
288  static int GetNumberOfRegisteredModules();
289  static const char* GetRegisteredModuleNameByIndex(int idx);
290  static void RegisterModuleDescription(ModuleDescription md);
291  static bool HasRegisteredModule(const std::string& name);
292  static ModuleDescription GetRegisteredModuleDescription(const std::string& name);
293 
295  void Modified() override;
296 protected:
297  void AbortProcess();
298  void ProcessMRMLEvents(vtkObject *caller, unsigned long event,
299  void *callData) override;
300 
301 private:
303  ~vtkMRMLCommandLineModuleNode() override;
305  void operator=(const vtkMRMLCommandLineModuleNode&) = delete;
306 
307  class vtkInternal;
308  vtkInternal * Internal;
309 };
310 
311 #endif
virtual void ReadXMLAttributes(const char **atts)
void operator=(const vtkMRMLNode &)
virtual vtkMRMLNode * CreateNodeInstance()=0
Create instance of the default node. Like New only virtual.
virtual void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData)
Propagate events generated in mrml.
virtual void WriteXML(ostream &of, int indent)
CLINodeEvent
List of events that can be fired on or by the node.
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
void PrintSelf(ostream &os, vtkIndent indent) override
#define vtkMRMLCopyContentMacro(thisClassName)
Definition: vtkMRMLNode.h:142
void Modified() override
Customized version of Modified() allowing to compress vtkCommand::ModifiedEvent.
Definition: vtkMRMLNode.h:515
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
MRML node for representing the parameters allowing to run a command line interface module (CLI)...