OGS
MeshModel.h
Go to the documentation of this file.
1
15#pragma once
16
17#include <memory>
18
19#include "MeshLib/MeshEnums.h"
20
22
23namespace DataHolderLib
24{
25class Project;
26}
27
28namespace MeshLib {
29class Mesh;
30}
31
32class vtkUnstructuredGridAlgorithm;
33
37class MeshModel : public TreeModel
38{
39 Q_OBJECT
40
41public:
42 explicit MeshModel(DataHolderLib::Project& project,
43 QObject* parent = nullptr);
44
46 void addMesh(std::unique_ptr<MeshLib::Mesh> mesh);
47
49 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
50
51public slots:
53 void addMesh(MeshLib::Mesh* mesh);
55 const MeshLib::Mesh* getMesh(const QModelIndex &idx) const;
57 const MeshLib::Mesh* getMesh(const std::string &name) const;
59 bool removeMesh(const QModelIndex &idx);
61 bool removeMesh(const std::string &name);
63 void updateMesh(MeshLib::Mesh* /*mesh*/);
65 void updateModel();
67 vtkUnstructuredGridAlgorithm* vtkSource(const QModelIndex &idx) const;
69 vtkUnstructuredGridAlgorithm* vtkSource(const std::string &name) const;
70
71private:
73 void addMeshObject(const MeshLib::Mesh* mesh);
74
76 //bool isUniqueMeshName(std::string &name);
78
80 static std::map<MeshLib::MeshElemType, QVariant> createMeshElemTypeMap();
81
82 static const std::map<MeshLib::MeshElemType, QVariant> elem_type_map;
83 static const QVariant element_str;
84
85signals:
86 void meshAdded(MeshModel*, const QModelIndex&);
87 void meshRemoved(MeshModel*, const QModelIndex&);
88};
Definition of mesh-related Enumerations.
Definition of the TreeModel class.
void meshAdded(MeshModel *, const QModelIndex &)
void addMesh(MeshLib::Mesh *mesh)
Adds a new mesh (using no unique_ptr as this interferes with Qt's signal/slot policy)
Definition: MeshModel.cpp:59
void updateModel()
Updates the model based on the ProjectData-object.
Definition: MeshModel.cpp:174
bool removeMesh(const QModelIndex &idx)
Removes the mesh with the given index.
Definition: MeshModel.cpp:127
static std::map< MeshLib::MeshElemType, QVariant > createMeshElemTypeMap()
Creates a static map of all element type name-strings in QVariant format.
Definition: MeshModel.cpp:186
static const std::map< MeshLib::MeshElemType, QVariant > elem_type_map
Definition: MeshModel.h:82
static const QVariant element_str
Definition: MeshModel.h:83
void meshRemoved(MeshModel *, const QModelIndex &)
vtkUnstructuredGridAlgorithm * vtkSource(const QModelIndex &idx) const
Returns the VTK source item for the mesh with the given index.
Definition: MeshModel.cpp:201
DataHolderLib::Project & _project
Checks if the name of the mesh is already exists, if so it generates a unique name.
Definition: MeshModel.h:77
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Returns the number of columns used for the data list.
Definition: MeshModel.cpp:45
void addMeshObject(const MeshLib::Mesh *mesh)
Adds the mesh to the GUI-Mesh-Model und -View.
Definition: MeshModel.cpp:66
const MeshLib::Mesh * getMesh(const QModelIndex &idx) const
Returns the mesh with the given index.
Definition: MeshModel.cpp:96
void updateMesh(MeshLib::Mesh *)
Updates the model/view for a mesh.
Definition: MeshModel.cpp:160
A hierarchical model for a tree implemented as a double-linked list.
Definition: TreeModel.h:30
QModelIndex parent(const QModelIndex &index) const override
Definition: TreeModel.cpp:81