OGS
VtkAddFilterDialog Class Reference

Detailed Description

Dialog for selecting a filter to be applied to a VtkPipelineItem. The dialog lets you select filters defined in VtkOGSFilter that have been registered as OGSFilterInfo - objects.

Definition at line 17 of file VtkAddFilterDialog.h.

#include <VtkAddFilterDialog.h>

Inheritance diagram for VtkAddFilterDialog:
[legend]
Collaboration diagram for VtkAddFilterDialog:
[legend]

Public Slots

void on_buttonBox_accepted ()

Public Member Functions

 VtkAddFilterDialog (VtkVisPipeline &pipeline, QModelIndex parentIndex, QDialog *parent=nullptr)

Protected Slots

void on_filterListWidget_currentRowChanged (int currentRow)

Private Attributes

VtkVisPipeline_pipeline
QModelIndex _parentIndex

Constructor & Destructor Documentation

◆ VtkAddFilterDialog()

VtkAddFilterDialog::VtkAddFilterDialog ( VtkVisPipeline & pipeline,
QModelIndex parentIndex,
QDialog * parent = nullptr )

Definition at line 21 of file VtkAddFilterDialog.cpp.

24 : QDialog(parent), _pipeline(pipeline), _parentIndex(parentIndex)
25{
26 setupUi(this);
27 filterListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
28
29 auto* parentItem =
30 static_cast<VtkVisPipelineItem*>(_pipeline.getItem(parentIndex));
31 vtkDataObject* parentDataObject =
32 parentItem->algorithm()->GetOutputDataObject(0);
33 int parentDataObjectType = parentDataObject->GetDataObjectType();
34
35 QVector<VtkFilterInfo> filterList = VtkFilterFactory::GetFilterList();
36 foreach (VtkFilterInfo filter, filterList)
37 {
38 // Check for suitable filters (see vtkDataSet inheritance diagram)
39 int inputType = filter.inputDataObjectType;
40 if ((inputType == parentDataObjectType) ||
41 (inputType == VTK_POINT_SET &&
42 parentDataObjectType != VTK_IMAGE_DATA) ||
43 (inputType == VTK_IMAGE_DATA &&
44 (parentDataObjectType == VTK_STRUCTURED_POINTS ||
45 parentDataObjectType == VTK_UNIFORM_GRID)))
46 {
47 new QListWidgetItem(filter.readableName, filterListWidget);
48 }
49 }
50
51 // On double clicking an item the dialog gets accepted
52 connect(filterListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
53 this->buttonBox, SIGNAL(accepted()));
54}
VtkVisPipeline & _pipeline
static QVector< VtkFilterInfo > GetFilterList()
Returns all registered filters. New VtkCompositeFilter or filter inherited from VtkAlgorithmPropertie...
constexpr List filter(Pred, SomeListOfTypes<> *)
Definition TMP.h:42

References _parentIndex, _pipeline, VtkVisPipelineItem::algorithm(), and VtkFilterFactory::GetFilterList().

Member Function Documentation

◆ on_buttonBox_accepted

void VtkAddFilterDialog::on_buttonBox_accepted ( )
slot

Definition at line 56 of file VtkAddFilterDialog.cpp.

57{
58 QVector<VtkFilterInfo> filterList = VtkFilterFactory::GetFilterList();
59 QString filterName;
60 foreach (VtkFilterInfo filter, filterList)
61 {
62 if (filter.readableName.compare(
63 filterListWidget->currentItem()->text()) == 0)
64 {
65 filterName = filter.name;
66 break;
67 }
68 }
69 auto* parentItem =
70 static_cast<VtkVisPipelineItem*>(_pipeline.getItem(_parentIndex));
71 QList<QVariant> itemData;
72 itemData << filterListWidget->currentItem()->text() << true;
73
74 VtkCompositeFilter* filter;
75 if (dynamic_cast<VtkVisImageItem*>(parentItem))
76 {
78 filterName, parentItem->algorithm());
79 }
80 else
81 {
83 filterName, parentItem->transformFilter());
84 }
85
86 VtkVisPipelineItem* item;
87 if (filter)
88 {
89 if (filter->GetOutputDataObjectType() == VTK_IMAGE_DATA)
90 {
91 item = new VtkVisImageItem(filter, parentItem, itemData);
92 }
93 else
94 {
95 item = new VtkVisPointSetItem(filter, parentItem, itemData);
96 }
97 }
98 else
99 {
100 vtkAlgorithm* algorithm =
102 if (algorithm)
103 {
104 item = new VtkVisPointSetItem(algorithm, parentItem, itemData);
105 }
106 else
107 {
108 ERR("VtkFilterFactory cannot create {:s}.",
109 filterName.toStdString());
110 return;
111 }
112 }
113 _pipeline.addPipelineItem(item, _parentIndex);
114}
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:40
static VtkCompositeFilter * CreateCompositeFilter(QString type, vtkAlgorithm *inputAlgorithm)
Creates a composite filter by name.
static vtkAlgorithm * CreateSimpleFilter(QString type)
Creates a normal filter name.

References _parentIndex, _pipeline, VtkFilterFactory::CreateCompositeFilter(), VtkFilterFactory::CreateSimpleFilter(), ERR(), and VtkFilterFactory::GetFilterList().

◆ on_filterListWidget_currentRowChanged

void VtkAddFilterDialog::on_filterListWidget_currentRowChanged ( int currentRow)
protectedslot

Definition at line 116 of file VtkAddFilterDialog.cpp.

117{
118 foreach (VtkFilterInfo filter, VtkFilterFactory::GetFilterList())
119 {
120 if (filter.readableName.compare(
121 filterListWidget->item(currentRow)->text()) == 0)
122 {
123 QString desc = filter.description;
124 desc = desc + QString("\n\nThis filter outputs ") +
125 filter.OutputDataObjectTypeAsString() +
126 QString("\n\nFilter class name: ") + filter.name;
127
128 this->filterDescTextEdit->setText(desc);
129 continue;
130 }
131 }
132}

References VtkFilterFactory::GetFilterList().

Member Data Documentation

◆ _parentIndex

QModelIndex VtkAddFilterDialog::_parentIndex
private

Definition at line 34 of file VtkAddFilterDialog.h.

Referenced by VtkAddFilterDialog(), and on_buttonBox_accepted().

◆ _pipeline

VtkVisPipeline& VtkAddFilterDialog::_pipeline
private

Definition at line 33 of file VtkAddFilterDialog.h.

Referenced by VtkAddFilterDialog(), and on_buttonBox_accepted().


The documentation for this class was generated from the following files: