Slicer 5.9
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
vtkMRMLTableNode.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Portions (c) Copyright 2015 Brigham and Women's Hospital (BWH) All Rights Reserved.
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 Andras Lasso (PerkLab, Queen's
17 University) and Kevin Wang (Princess Margaret Hospital, Toronto) and was
18 supported through OCAIRO and the Applied Cancer Research Unit program of
19 Cancer Care Ontario.
20
21==============================================================================*/
22
23#ifndef __vtkMRMLTableNode_h
24#define __vtkMRMLTableNode_h
25
26#include <string>
27#include <vector>
28
29#include "vtkMRMLStorableNode.h"
30
31// MRML Includes
33
34// VTK Includes
35class vtkTable;
36
44class VTK_MRML_EXPORT vtkMRMLTableNode : public vtkMRMLStorableNode
45{
46public:
48
49public:
52
53 void PrintSelf(ostream& os, vtkIndent indent) override;
54
55 //----------------------------------------------------------------
57 //----------------------------------------------------------------
58
60
63 void ReadXMLAttributes( const char** atts) override;
64
67 void WriteXML(ostream& of, int indent) override;
68
72
75 const char* GetNodeTagName() override { return "Table"; }
76
79 void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override;
80
81 //----------------------------------------------------------------
83 //----------------------------------------------------------------
84 virtual void SetAndObserveTable(vtkTable* table);
85 vtkGetObjectMacro(Table, vtkTable);
86
106 virtual void SetAndObserveSchema(vtkTable* schema);
107 vtkGetObjectMacro(Schema, vtkTable);
109
112 vtkGetMacro(Locked, bool);
113 vtkSetMacro(Locked, bool);
115
118 vtkGetMacro(UseFirstColumnAsRowHeader, bool);
119 vtkSetMacro(UseFirstColumnAsRowHeader, bool);
121
127
131 void SetUseColumnNameAsColumnHeader(bool useColumnTitle);
133
136
145 vtkAbstractArray* AddColumn(vtkAbstractArray* column = nullptr);
146
152 bool RenameColumn(int columnIndex, const char* newName);
153
157 bool RemoveColumn(int columnIndex);
158
163
168
172 bool RemoveRow(int rowIndex);
173
177 std::string GetCellText(int rowIndex, int columnIndex);
178
185 bool SetCellText(int rowIndex, int columnIndex, const char* text);
186
190 int GetColumnIndex(const char* columnName);
191 int GetColumnIndex(const std::string &columnName);
193
196 int GetColumnIndex(vtkAbstractArray* column);
197
201 std::string GetColumnName(int columnIndex);
202
206
209
212 void SetColumnNullValue(const std::string& columnName, const std::string& nullValue);
213 std::string GetColumnNullValue(const std::string& columnName);
215
220 void SetColumnLongName(const std::string& columnName, const std::string& description);
221 std::string GetColumnLongName(const std::string& columnName);
223
227 void SetColumnTitle(const std::string& columnName, const std::string& description);
228 std::string GetColumnTitle(const std::string& columnName);
230
234 void SetColumnDescription(const std::string& columnName, const std::string& description);
235 std::string GetColumnDescription(const std::string& columnName);
237
242 void SetColumnUnitLabel(const std::string& columnName, const std::string& unitLabel);
243 std::string GetColumnUnitLabel(const std::string& columnName);
245
250 std::string GetColumnProperty(const std::string& columnName, const std::string& propertyName);
251 std::string GetColumnProperty(int columnIndex, const std::string& propertyName);
253
256 void GetAllColumnPropertyNames(vtkStringArray* propertyNames);
257
263 void SetColumnProperty(const std::string& columnName, const std::string& propertyName, const std::string& propertyValue);
264 void SetColumnProperty(int columnIndex, const std::string& propertyName, const std::string& propertyValue);
266
271 void RemoveColumnProperty(const std::string& propertyName);
272
275 void CopyAllColumnProperties(const std::string& sourceColumnName, const std::string& targetColumnName);
279 void RemoveAllColumnProperties(const std::string& columnName);
280 void RemoveAllColumnProperties(int columnIndex);
282
285 int GetColumnValueTypeFromSchema(const std::string& columnName);
286
289 vtkIdType InsertNextBlankRowWithNullValues(vtkTable* table);
290
293 int GetColumnType(const std::string& columnName);
294
300 bool SetColumnType(const std::string& columnName, int typeId);
301
310 bool SetDefaultColumnType(const std::string& type, const std::string& nullValue="");
311
313 static const char* GetDefaultColumnName();
314
316 static int GetValueTypeFromString(std::string valueTypeStr);
317
319 static std::string GetValueTypeAsString(int valueType);
320
322 bool SetComponentNames(const std::string& columnName, const std::vector<std::string>& componentNames);
323
325 std::vector<std::string> GetComponentNames(const std::string& columnName);
326
329 std::vector<std::string> GetComponentNamesFromSchema(const std::string& columnName);
330
332 static std::vector<std::string> GetComponentNamesFromArray(vtkAbstractArray* array);
333
335 static const std::vector<std::string> GetComponentNamesFromString(const std::string& componentNameString);
336
338 static std::string GetComponentNamesAsString(const std::vector<std::string>& componentNames);
339
340 //----------------------------------------------------------------
342 //----------------------------------------------------------------
343 protected:
348
349 protected:
350
352 std::string GetColumnPropertyInternal(const std::string& columnName, const std::string& propertyName);
353
355 void SetColumnPropertyInternal(const std::string& columnName, const std::string& propertyName, const std::string& propertyValue);
356
357 vtkIdType GetPropertyRowIndex(const std::string& columnName);
358
359 //----------------------------------------------------------------
361 //----------------------------------------------------------------
362
363 vtkTable* Table;
364 bool Locked;
367
368 vtkTable* Schema;
369
370};
371
372#endif
A superclass for other storage nodes.
virtual void SetAndObserveSchema(vtkTable *schema)
void ReadXMLAttributes(const char **atts) override
Set node attributes.
bool SetComponentNames(const std::string &columnName, const std::vector< std::string > &componentNames)
Set the component names for the specified column.
void CopyAllColumnProperties(const std::string &sourceColumnName, const std::string &targetColumnName)
Copy all properties from one column to another.
void SetColumnDescription(const std::string &columnName, const std::string &description)
std::string GetColumnUnitLabel(const std::string &columnName)
std::string GetColumnProperty(const std::string &columnName, const std::string &propertyName)
int GetColumnValueTypeFromSchema(const std::string &columnName)
vtkMRMLCopyContentMacro(vtkMRMLTableNode)
vtkIdType GetPropertyRowIndex(const std::string &columnName)
void GetAllColumnPropertyNames(vtkStringArray *propertyNames)
bool SetCellText(int rowIndex, int columnIndex, const char *text)
std::string GetColumnNullValue(const std::string &columnName)
static std::vector< std::string > GetComponentNamesFromArray(vtkAbstractArray *array)
Get component names from a vtkAbstractArray as a vector of string.
void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override
Method to propagate events generated in mrml.
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
vtkMRMLTableNode(const vtkMRMLTableNode &)
bool SetDefaultColumnType(const std::string &type, const std::string &nullValue="")
static int GetValueTypeFromString(std::string valueTypeStr)
Get value type id from string (inverse of vtkImageScalarTypeNameMacro)
~vtkMRMLTableNode() override
virtual void SetAndObserveTable(vtkTable *table)
Get and Set Macros.
void SetColumnNullValue(const std::string &columnName, const std::string &nullValue)
int GetColumnIndex(vtkAbstractArray *column)
int GetNumberOfColumns()
Convenience method for getting number of columns in the table.
std::string GetColumnName(int columnIndex)
std::vector< std::string > GetComponentNamesFromSchema(const std::string &columnName)
std::string GetColumnDescription(const std::string &columnName)
static vtkMRMLTableNode * New()
Data types supported by the table. Used in qMRMLTableModel for visualization.
bool GetUseColumnNameAsColumnHeader()
vtkIdType InsertNextBlankRowWithNullValues(vtkTable *table)
void SetColumnUnitLabel(const std::string &columnName, const std::string &unitLabel)
void SetColumnTitle(const std::string &columnName, const std::string &description)
std::vector< std::string > GetComponentNames(const std::string &columnName)
Get the vector of component names from the.
void SetColumnLongName(const std::string &columnName, const std::string &description)
std::string GetColumnLongName(const std::string &columnName)
std::string GetColumnPropertyInternal(const std::string &columnName, const std::string &propertyName)
Get column property, even for reserved properties.
int GetColumnIndex(const char *columnName)
bool SetColumnType(const std::string &columnName, int typeId)
vtkAbstractArray * AddColumn(vtkAbstractArray *column=nullptr)
static const char * GetDefaultColumnName()
Name of the column that stores default properties that are used when a new column is created.
std::string GetColumnTitle(const std::string &columnName)
vtkMRMLNode * CreateNodeInstance() override
Standard methods for MRML nodes.
bool RenameColumn(int columnIndex, const char *newName)
void RemoveAllColumnProperties(const std::string &columnName)
static std::string GetValueTypeAsString(int valueType)
Get value type id from string (uses vtkImageScalarTypeNameMacro)
void SetColumnProperty(const std::string &columnName, const std::string &propertyName, const std::string &propertyValue)
int GetColumnType(const std::string &columnName)
void RemoveAllColumnProperties(int columnIndex)
void SetColumnProperty(int columnIndex, const std::string &propertyName, const std::string &propertyValue)
static const std::vector< std::string > GetComponentNamesFromString(const std::string &componentNameString)
Convert the vector of component names from a string of component names separated with the '|' charact...
vtkMRMLStorageNode * CreateDefaultStorageNode() override
Create default storage node or nullptr if does not have one.
int GetColumnIndex(const std::string &columnName)
int GetNumberOfRows()
Convenience method for getting number of rows in the table.
bool RemoveRow(int rowIndex)
void operator=(const vtkMRMLTableNode &)
void PrintSelf(ostream &os, vtkIndent indent) override
vtkTable * Table
Data.
static std::string GetComponentNamesAsString(const std::vector< std::string > &componentNames)
Convert the component names as a string of component names separated with the '|' character.
vtkMRMLTableNode()
Constructor and destructor.
void SetColumnPropertyInternal(const std::string &columnName, const std::string &propertyName, const std::string &propertyValue)
Set column property, even for reserved properties.
bool RemoveColumn(int columnIndex)
std::string GetCellText(int rowIndex, int columnIndex)
void SetUseColumnNameAsColumnHeader(bool useColumnTitle)
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
void RemoveColumnProperty(const std::string &propertyName)
std::string GetColumnProperty(int columnIndex, const std::string &propertyName)
bool RemoveAllColumns()