+int MeshModel::GetId()
+{
+ return _meshId;
+}
+
+std::string MeshModel::GetName()
+{
+ return _name;
+}
+
+////////////////////
+/////////////////////// MESH MANAGER
+////////////////////
+
+MeshManagerModel::MeshManagerModel()
+{
+ //MeshModel* firstMesh = new MeshModel();
+ //_meshes.push_back(firstMesh);
+ currentMesh = 0;
+ meshId = 0;
+}
+
+MeshManagerModel::~MeshManagerModel()
+{
+ DeleteAll();
+}
+
+void MeshManagerModel::RefreshOutputs(bool signalBox) // virtual
+{
+}
+
+int MeshManagerModel::GetNumberOfMeshes(){
+ return _meshes.size();
+}
+
+void MeshManagerModel::AddMesh_(vtkPolyData* mesh){
+ if(mesh != NULL){
+ MeshModel *meshModel = new MeshModel(mesh, meshId);
+ _meshes.push_back(meshModel);
+ meshId++;
+ }
+ else{
+ printf("PG MeshManagerModel::AddMesh Mesh is null \n");
+ }
+}
+
+void MeshManagerModel::AddMesh(vtkPolyData* mesh){
+ AddMesh_(mesh);
+ RefreshOutputs(true);
+}
+
+void MeshManagerModel::AddMeshes_(std::vector<vtkPolyData*> meshList){
+ if(!meshList.empty())
+ {
+ MeshModel *meshModel;
+ for(int i = 0; i < meshList.size(); i++){
+ meshModel = new MeshModel(meshList[i], meshId);
+ _meshes.push_back(meshModel);
+ meshId++;
+ }
+ }else{
+ printf("PG MeshManagerModel::AddMeshes Empty list of meshes \n");
+ }
+}
+
+void MeshManagerModel::AddMeshes(std::vector<vtkPolyData*> meshList){
+ AddMeshes_(meshList);
+ RefreshOutputs(true);
+}
+
+void MeshManagerModel::AddEmptyMesh_(){
+ MeshModel *meshModel = new MeshModel(meshId);
+ _meshes.push_back(meshModel);
+ meshId++;
+}
+
+void MeshManagerModel::AddEmptyMesh(){
+ AddEmptyMesh_();
+ RefreshOutputs(true);
+}
+
+void MeshManagerModel::InsertMeshesAtCurrent_(std::vector<vtkPolyData*> meshList)
+{
+ if(!meshList.empty())
+ {
+ std::vector<MeshModel*> tmpVect;
+ MeshModel *meshModel;
+ for(int i = 0; i < meshList.size(); i++){
+ meshModel = new MeshModel(meshList[i], meshId);
+ tmpVect.push_back(meshModel);
+ meshId++;
+ }
+ _meshes.insert(_meshes.begin() + currentMesh, tmpVect.begin(), tmpVect.end());
+ }else{
+ printf("PG MeshManagerModel::AddMeshes Empty list of meshes \n");
+ }
+}
+
+void MeshManagerModel::InsertMeshesAtCurrent(std::vector<vtkPolyData*> meshList)
+{
+ InsertMeshesAtCurrent_(meshList);
+ RefreshOutputs(true);
+}
+
+void MeshManagerModel::SelectMesh(int i) {
+ if(i >= 0 && i < _meshes.size()){
+ int prevCurrent = currentMesh;
+ currentMesh = i;
+ if(prevCurrent != i){
+ RefreshOutputs(true);
+ }
+ }
+ else{
+ printf("PG MeshManagerModel::SelectMesh index out of bounds \n");
+ }
+}
+
+void MeshManagerModel::SelectMeshByName(std::string meshName) {
+ if(!_meshes.empty()){
+ bool found = false;
+ for(int i = 0; i < _meshes.size() && !found; i++){
+ if(_meshes.at(i)->GetName() == meshName){
+ found = true;
+ SelectMesh(i);
+ }
+ }
+ }
+}
+
+void MeshManagerModel::DeleteMesh(int position){
+ if(position >= 0 && position < _meshes.size()){
+ delete _meshes.at(position);
+ _meshes.erase(_meshes.begin() + position);
+ currentMesh = currentMesh + (position <= currentMesh?-1:0);
+ if(currentMesh < 0){
+ currentMesh = 0;
+ }
+ RefreshOutputs(true);
+ }
+}
+
+void MeshManagerModel::DeleteMeshByName(std::string meshName){
+ if(!_meshes.empty()){
+ bool found = false;
+ for(int i = 0; i < _meshes.size() && !found; i++){
+ if(_meshes.at(i)->GetName() == meshName){
+ found = true;
+ delete _meshes.at(i);
+ _meshes.erase(_meshes.begin() + i);
+ currentMesh = currentMesh + (i <= currentMesh?-1:0);
+ if(currentMesh < 0){
+ currentMesh = 0;
+ }
+ RefreshOutputs(true);
+ }
+ }
+ }
+}
+
+void MeshManagerModel::DeleteCurrentMesh(){
+ if(!_meshes.empty()){
+ delete _meshes.at(currentMesh);
+ _meshes.erase(_meshes.begin() + currentMesh);
+ currentMesh--;
+ if(currentMesh < 0){
+ currentMesh = 0;
+ }
+ RefreshOutputs(true);
+ }
+}
+
+void MeshManagerModel::DeleteAll(){
+ if(!_meshes.empty()){
+ for (MeshModel* element : _meshes)
+ {
+ delete element;
+ }
+ _meshes.clear();
+ RefreshOutputs(true);
+ }
+}
+
+void MeshManagerModel::NextMesh(){
+ currentMesh++;
+ if(currentMesh >= _meshes.size()){
+ currentMesh = _meshes.size()-1;
+ }
+ RefreshOutputs(true);
+}
+
+void MeshManagerModel::PreviousMesh(){
+ currentMesh--;
+ if(currentMesh < 0){
+ currentMesh = 0;
+ }
+ RefreshOutputs(true);
+}
+
+MeshModel* MeshManagerModel::GetMeshModel(){
+ return _meshes.at(currentMesh);
+}
+
+vtkPolyData* MeshManagerModel::GetMeshBase()
+{
+ if(!_meshes.empty()){
+ return _meshes.at(currentMesh)->GetMeshBase();
+ }
+ else{
+ return NULL;
+ }
+}
+
+vtkPolyData* MeshManagerModel::GetMeshTemp()
+{
+ if(!_meshes.empty()){
+ return _meshes.at(currentMesh)->GetMeshTemp();
+ }
+ else{
+ return NULL;
+ }
+}
+
+void MeshManagerModel::SetMeshBase(vtkPolyData* mesh)
+{
+ if(!_meshes.empty()){
+ _meshes.at(currentMesh)->SetMeshBase(mesh);
+ RefreshOutputs(true);
+ }else{
+ printf("PG MeshManagerModel::SetMeshMemoryMode Mesh vector is empty \n");
+ }
+}
+
+void MeshManagerModel::SetMeshMemoryMode(vtkPolyData* mesh)
+{
+ //if(!_meshes.empty()){
+ if(_meshes.size() > 1){
+ DeleteAll();
+ }
+ if(_meshes.size() == 0){
+ AddEmptyMesh_();
+ }
+ _meshes.at(currentMesh)->SetMeshMemoryMode(mesh);
+ RefreshOutputs(true);
+ //}else{
+ // printf("PG MeshManagerModel::SetMeshMemoryMode Mesh vector is empty \n");
+ //}
+}
+
+void MeshManagerModel::ResetMeshTemp()
+{
+ if(!_meshes.empty()){
+ _meshes.at(currentMesh)->ResetMeshTemp();
+ RefreshOutputs(true);
+ }else{
+ printf("PG MeshManagerModel::ResetMeshTemp Mesh vector is empty \n");
+ }
+
+}
+
+void MeshManagerModel::CopySetMeshBase(vtkPolyData* mesh)
+{
+ if(!_meshes.empty()){
+ _meshes.at(currentMesh)->CopySetMeshBase(mesh);
+ RefreshOutputs(true);
+ }
+ else{
+ printf("PG MeshManagerModel::CopySetMeshBase Mesh vector is empty \n");
+ }
+}
+
+std::vector<std::string> MeshManagerModel::GetMeshNames()