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 28 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 32 of file VtkAddFilterDialog.cpp.

35 : QDialog(parent), _pipeline(pipeline), _parentIndex(parentIndex)
36{
37 setupUi(this);
38 filterListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
39
40 auto* parentItem =
41 static_cast<VtkVisPipelineItem*>(_pipeline.getItem(parentIndex));
42 vtkDataObject* parentDataObject =
43 parentItem->algorithm()->GetOutputDataObject(0);
44 int parentDataObjectType = parentDataObject->GetDataObjectType();
45
46 QVector<VtkFilterInfo> filterList = VtkFilterFactory::GetFilterList();
47 foreach (VtkFilterInfo filter, filterList)
48 {
49 // Check for suitable filters (see vtkDataSet inheritance diagram)
50 int inputType = filter.inputDataObjectType;
51 if ((inputType == parentDataObjectType) ||
52 (inputType == VTK_POINT_SET &&
53 parentDataObjectType != VTK_IMAGE_DATA) ||
54 (inputType == VTK_IMAGE_DATA &&
55 (parentDataObjectType == VTK_STRUCTURED_POINTS ||
56 parentDataObjectType == VTK_UNIFORM_GRID)))
57 {
58 new QListWidgetItem(filter.readableName, filterListWidget);
59 }
60 }
61
62 // On double clicking an item the dialog gets accepted
63 connect(filterListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
64 this->buttonBox, SIGNAL(accepted()));
65}
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:49

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

Member Function Documentation

◆ on_buttonBox_accepted

void VtkAddFilterDialog::on_buttonBox_accepted ( )
slot

Definition at line 67 of file VtkAddFilterDialog.cpp.

68{
69 QVector<VtkFilterInfo> filterList = VtkFilterFactory::GetFilterList();
70 QString filterName;
71 foreach (VtkFilterInfo filter, filterList)
72 {
73 if (filter.readableName.compare(
74 filterListWidget->currentItem()->text()) == 0)
75 {
76 filterName = filter.name;
77 break;
78 }
79 }
80 auto* parentItem =
81 static_cast<VtkVisPipelineItem*>(_pipeline.getItem(_parentIndex));
82 QList<QVariant> itemData;
83 itemData << filterListWidget->currentItem()->text() << true;
84
85 VtkCompositeFilter* filter;
86 if (dynamic_cast<VtkVisImageItem*>(parentItem))
87 {
89 filterName, parentItem->algorithm());
90 }
91 else
92 {
94 filterName, parentItem->transformFilter());
95 }
96
97 VtkVisPipelineItem* item;
98 if (filter)
99 {
100 if (filter->GetOutputDataObjectType() == VTK_IMAGE_DATA)
101 {
102 item = new VtkVisImageItem(filter, parentItem, itemData);
103 }
104 else
105 {
106 item = new VtkVisPointSetItem(filter, parentItem, itemData);
107 }
108 }
109 else
110 {
111 vtkAlgorithm* algorithm =
113 if (algorithm)
114 {
115 item = new VtkVisPointSetItem(algorithm, parentItem, itemData);
116 }
117 else
118 {
119 ERR("VtkFilterFactory cannot create {:s}.",
120 filterName.toStdString());
121 return;
122 }
123 }
124 _pipeline.addPipelineItem(item, _parentIndex);
125}
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:48
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 127 of file VtkAddFilterDialog.cpp.

128{
129 foreach (VtkFilterInfo filter, VtkFilterFactory::GetFilterList())
130 {
131 if (filter.readableName.compare(
132 filterListWidget->item(currentRow)->text()) == 0)
133 {
134 QString desc = filter.description;
135 desc = desc + QString("\n\nThis filter outputs ") +
136 filter.OutputDataObjectTypeAsString() +
137 QString("\n\nFilter class name: ") + filter.name;
138
139 this->filterDescTextEdit->setText(desc);
140 continue;
141 }
142 }
143}

References VtkFilterFactory::GetFilterList().

Member Data Documentation

◆ _parentIndex

QModelIndex VtkAddFilterDialog::_parentIndex
private

Definition at line 45 of file VtkAddFilterDialog.h.

Referenced by VtkAddFilterDialog(), and on_buttonBox_accepted().

◆ _pipeline

VtkVisPipeline& VtkAddFilterDialog::_pipeline
private

Definition at line 44 of file VtkAddFilterDialog.h.

Referenced by VtkAddFilterDialog(), and on_buttonBox_accepted().


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