42 m_SelectedSubCellType(NULL)
44 this->
SetInfo(iImgSessionID, iparent);
65 this->SetTracesInfoContainerForVisuTemplate< MeshContainer >(
83 vtkMySQLDatabase *iDatabaseConnector)
93 vtkMySQLDatabase *iDatabaseConnector,
94 const std::list<unsigned int> & iListTPs)
96 this->DisplayInfoAndLoadVisuContainerWithAllTracesForSpecificTPs< ContourMeshContainer >
103 vtkMySQLDatabase *iDatabaseConnector,
104 const std::list<unsigned int> & iListTPs)
110 std::list<unsigned int> ListIDs =
112 iDatabaseConnector, iListTPs);
113 std::list<ContourMeshContainer::MultiIndexContainerElementType> list_of_traces =
115 GetListStructureFromDB<ContourMeshContainer::MultiIndexContainerElementType>(
125 vtkMySQLDatabase *iDatabaseConnector,
126 const std::list<unsigned int> & iListTPs)
149 vtkMySQLDatabase *iDatabaseConnector)
153 this->DisplayInfoForAllTracesTemplate< GoDBTWContainerForMesh >(
154 this->
m_TWContainer, iDatabaseConnector, Qt::Unchecked, IndexShowColumn);
162 const std::list<unsigned int> & iListTPs)
165 this->DisplayInfoForTracesForSpecificTPsTemplate<GoDBTWContainerForMesh >(
166 this->
m_TWContainer, iDatabaseConnector, Qt::Unchecked, iListTPs,
174 vtkMySQLDatabase *iDatabaseConnector,
175 const std::list<unsigned int> & iListTPs)
177 this->RemoveTracesFromTWAndContainerForVisuForSpecificTPsTemplate< ContourMeshContainer >
185 vtkMySQLDatabase *iDatabaseConnector)
187 this->DisplayInfoForLastCreatedTraceTemplate< GoDBTWContainerForMesh >(
197 if ( iMeshAttributes != 0 )
199 std::vector< std::string > ColumnNames (2);
200 std::vector< std::string > Values (2);
201 ColumnNames.at(0) =
"SurfaceArea";
202 Values.at(0) = ConvertToString< double >(iMeshAttributes->
m_Area);
203 ColumnNames.at(1) =
"Volume";
204 Values.at(1) = ConvertToString< double >(iMeshAttributes->
m_Volume);
223 vtkMySQLDatabase *iDatabaseConnector,
int iTraceID)
225 this->DisplayInfoForExistingTraceTemplate< GoDBTWContainerForMesh >(
233 vtkMySQLDatabase *iDatabaseConnector,
int iTraceID,
248 tr(
"Add the selected CellType '%1' to the checked meshes")
251 tr(
"Add the selected SubCellType '%1' to the checked meshes")
259 unsigned int iXCoordMin,
unsigned int iYCoordMin,
unsigned int iZCoordMin,
260 unsigned int iXCoordMax,
unsigned int iYCoordMax,
261 unsigned int iZCoordMax,
int iTCoord,
262 vtkPolyData *iTraceNodes,
263 vtkMySQLDatabase *iDatabaseConnector,
265 unsigned int iTrackID)
273 iXCoordMax, iYCoordMax, iZCoordMax, iTraceNodes, iDatabaseConnector, NewMesh,
274 iMeshAttributes, iTCoord);
291 unsigned int iXCoordMin,
unsigned int iYCoordMin,
unsigned int iZCoordMin,
292 unsigned int iXCoordMax,
unsigned int iYCoordMax,
293 unsigned int iZCoordMax,
int iTCoord, vtkPolyData *iTraceNodes,
294 vtkMySQLDatabase *iDatabaseConnector,
298 iZCoordMax, iTCoord, iTraceNodes, iDatabaseConnector, iMeshAttributes,
306 unsigned int iXCoordMin,
unsigned int iYCoordMin,
unsigned int iZCoordMin,
307 unsigned int iXCoordMax,
unsigned int iYCoordMax,
308 unsigned int iZCoordMax,
int iTShift, vtkPolyData *iTraceNodes,
309 vtkMySQLDatabase *iDatabaseConnector,
313 iZCoordMax, iTShift, iTraceNodes, iDatabaseConnector, iMeshAttributes, 0 );
320 unsigned int iYCoordMin,
321 unsigned int iZCoordMin,
322 unsigned int iXCoordMax,
323 unsigned int iYCoordMax,
324 unsigned int iZCoordMax,
325 vtkPolyData *iTraceNodes,
326 vtkMySQLDatabase *iDatabaseConnector,
329 unsigned int TraceID =
346 GeneratedMesh.
SaveInDB(iDatabaseConnector);
354 vtkMySQLDatabase *iDatabaseConnector)
374 unsigned int NewMeshID =
387 this->m_SelectedColorData->second);
396 vtkMySQLDatabase *iDatabaseConnector)
398 return this->UpdateTheTracesColorTemplate< GoDBMeshRow, ContourMeshContainer >(
407 const std::list< unsigned int > & iListTracesIDs)
409 std::list< unsigned int > ListMeshesWithNoPoints =
411 iListTracesIDs, iDatabaseConnector);
412 if ( !ListMeshesWithNoPoints.empty() )
422 unsigned int iYCoordMin,
423 unsigned int iZCoordMin,
424 unsigned int iXCoordMax,
425 unsigned int iYCoordMax,
426 unsigned int iZCoordMax,
427 vtkPolyData *iTraceNodes,
428 vtkMySQLDatabase *iDatabaseConnector,
435 iYCoordMin, iZCoordMin, iTCoord);
437 iYCoordMax, iZCoordMax, iTCoord);
440 coord_min, coord_max, iMeshAttributes);
447 const std::vector< int > & iVectorImportedTraces,
448 vtkMySQLDatabase *iDatabaseConnector)
452 iVectorImportedTraces, iDatabaseConnector);
455 UpdateVisualizationForGivenIDs< std::vector< int > >(
456 iVectorImportedTraces);
464 this->DeleteTracesTemplate< ContourMeshContainer >(iDatabaseConnector,
483 UpdateElementHighlightingWithGivenTraceID(iTraceID);
492 UpdateElementVisibilityWithGivenTraceID(iTraceID);
499 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
501 this->GetTracesInfoFromDBAndModifyContainerForVisuTemplate< MeshContainer >(
509 vtkMySQLDatabase *iDatabaseConnector,
510 const std::list< unsigned int > & iListCollectionIDs)
512 std::list< unsigned int > ListMeshesInvolved =
517 std::list< ContourMeshStructure > ListMeshesInfo =
521 std::list< ContourMeshStructure >::iterator it = ListMeshesInfo.begin();
523 while ( it != ListMeshesInfo.end() )
525 oMeshContainer->
Insert(*it);
528 return oMeshContainer;
535 std::list< unsigned int > iMeshesIDs)
545 this->SetColorCodingTemplate< ContourMeshContainer >(
572 std::list< unsigned int > ListCheckedMeshes =
590 std::list< unsigned int > ListCheckedMeshes =
605 unsigned int iTrackID,
606 unsigned int iTimePoint)
608 unsigned int oExistingMeshID = 0;
611 std::list< unsigned int > ExistingMeshID =
613 iDatabaseConnector, iTrackID, iTimePoint);
614 if ( ExistingMeshID.empty() )
616 return oExistingMeshID;
618 if ( ExistingMeshID.size() > 1 )
620 std::cout <<
"there is more than 1 existing mesh for this track at this timepoint ";
621 std::cout <<
"Debug: In " << __FILE__ <<
", line " << __LINE__;
622 std::cout << std::endl;
623 return oExistingMeshID;
625 oExistingMeshID = ExistingMeshID.front();
626 GoDBMeshRow ExistingMesh(oExistingMeshID, iDatabaseConnector);
629 ExistingMesh.
SaveInDB(iDatabaseConnector);
635 return oExistingMeshID;
642 unsigned int iTrackID, vtkMySQLDatabase *iDatabaseConnector,
649 unsigned int MeshIDKickedOut =
651 iDatabaseConnector, iTrackID, iTCoord);
652 if ( MeshIDKickedOut != 0 )
657 return MessageToPrint;
664 unsigned int iTrackID, vtkMySQLDatabase *iDatabaseConnector,
665 std::list< unsigned int > & ioListMeshIDs,
666 std::list< unsigned int > & ioNullListMeshIDs)
672 std::string MessageToPrint =
"";
673 std::list< unsigned int > ListTimePoints =
675 if ( !ListTimePoints.empty() )
677 std::string MeshIDToPrint =
"";
678 std::list< unsigned int >::iterator iter = ListTimePoints.begin();
679 while ( iter != ListTimePoints.end() )
681 unsigned int MeshIDKickedOut =
683 iDatabaseConnector, iTrackID, *iter);
684 if ( MeshIDKickedOut != 0 )
686 ioNullListMeshIDs.push_back(MeshIDKickedOut);
687 MeshIDToPrint += ConvertToString< unsigned int >(MeshIDKickedOut);
688 MeshIDToPrint +=
", ";
692 if ( !MeshIDToPrint.empty() )
694 MeshIDToPrint = MeshIDToPrint.substr(0, MeshIDToPrint.size() - 2);
695 MessageToPrint +=
"The trackID of the meshes ";
696 MessageToPrint += MeshIDToPrint;
697 MessageToPrint +=
" have been reassigned to 0";
700 MessageQString = MessageToPrint.c_str();
702 return MessageQString;
709 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListMeshIDs,
710 std::list< unsigned int > & ioListMeshIDsToBePartOfTrack,
711 std::list< unsigned int > & ioListMeshIDsToReassign)
713 std::string MessageToPrint =
"";
715 ioListMeshIDsToBePartOfTrack = iListMeshIDs;
717 std::list< unsigned int >::iterator iter;
719 if ( !iListMeshIDs.empty() )
721 std::list< unsigned int > TimePointsWithSeveralMeshes =
723 iDatabaseConnector, iListMeshIDs);
725 iter = TimePointsWithSeveralMeshes.begin();
727 while ( iter != TimePointsWithSeveralMeshes.end() )
729 int MaxMeshIDForTimePoint =
731 iDatabaseConnector, iListMeshIDs, *iter);
732 if ( MaxMeshIDForTimePoint != -1 )
734 std::list< unsigned int > TraceIDs =
736 iDatabaseConnector, iListMeshIDs, *iter, MaxMeshIDForTimePoint);
737 std::copy( TraceIDs.begin(), TraceIDs.end(), std::back_inserter(ioListMeshIDsToReassign) );
738 std::list< unsigned int >::iterator iterTraceIDToRemove = TraceIDs.begin();
739 while ( iterTraceIDToRemove != TraceIDs.end() )
741 std::list< unsigned int >::iterator Find =
742 std::find(ioListMeshIDsToBePartOfTrack.begin(), ioListMeshIDsToBePartOfTrack.end(),
743 *iterTraceIDToRemove);
744 ioListMeshIDsToBePartOfTrack.erase(Find);
745 ++iterTraceIDToRemove;
750 if ( !ioListMeshIDsToReassign.empty() )
752 MessageToPrint =
"Warning: the meshIDs ";
753 std::list< unsigned int >::iterator iterIDs = ioListMeshIDsToReassign.begin();
754 while ( iterIDs != ioListMeshIDsToReassign.end() )
756 std::string temp = ConvertToString< unsigned int >(*iterIDs);
757 MessageToPrint += temp;
758 MessageToPrint +=
", ";
761 MessageToPrint = MessageToPrint.substr(0, MessageToPrint.size() - 1);
762 MessageToPrint +=
"have not been reassigned ";
763 MessageToPrint +=
"to the trackID because several meshes were selected for the same ";
764 MessageToPrint +=
"timepoints ";
766 iter = TimePointsWithSeveralMeshes.begin();
768 while ( iter != TimePointsWithSeveralMeshes.end() )
770 std::string temp = ConvertToString< unsigned int >(*iter);
771 MessageToPrint += temp;
772 MessageToPrint +=
", ";
775 MessageToPrint = MessageToPrint.substr(0, MessageToPrint.size() - 2);
778 return MessageToPrint;
784 std::list< unsigned int >
786 unsigned int iTrackID, vtkMySQLDatabase *iDatabaseConnector,
787 std::list< unsigned int > iListMeshesBelongingToTrack)
789 std::list< unsigned int > oListMeshesTimePointInf = std::list< unsigned int >();
790 std::pair< unsigned int, unsigned int > InfoSplitMesh =
792 if ( InfoSplitMesh.first != 0 )
795 iDatabaseConnector, iListMeshesBelongingToTrack, InfoSplitMesh.second);
798 return oListMeshesTimePointInf;
805 vtkMySQLDatabase *iDatabaseConnector,
809 std::pair< unsigned int, unsigned int > oInfo =
810 std::pair< unsigned int, unsigned int >(0, 0);
811 std::list< unsigned int > ListCheckedMeshes =
813 std::list< unsigned int > ListCheckedMeshesBelongingToTrackID =
814 std::list< unsigned int >();
815 if ( !ListCheckedMeshes.empty() )
817 ListCheckedMeshesBelongingToTrackID =
819 iDatabaseConnector, ListCheckedMeshes, iTrackID);
821 if ( ListCheckedMeshesBelongingToTrackID.size() != 1 )
825 tr(
"Please select one and only one Mesh where to split the Track") );
830 unsigned int CheckedMesh = ListCheckedMeshesBelongingToTrackID.front();
831 oInfo.first = CheckedMesh;
832 std::list< unsigned int > MeshesIDs;
833 MeshesIDs.push_back(CheckedMesh);
834 std::list< unsigned int > ListTimePoints =
837 if ( ListTimePoints.size() != 1 )
839 std::cout <<
"more than one timepoint";
840 std::cout <<
"Debug: In " << __FILE__ <<
", line " << __LINE__;
841 std::cout << std::endl;
844 oInfo.second = ListTimePoints.front();
850 std::list< QGoDBTraceManager::NameWithColorData >
852 vtkMySQLDatabase *iDatabaseConnector, std::string & ioIDToSelect)
861 std::list< std::pair<unsigned int, double> >
865 std::list< std::pair<unsigned int, double> > oList;
870 std::list<unsigned int>::iterator it = list.begin();
872 while(it!=list.end())
874 double volume = (tableWidget->
GetValue( *it,
"mesh",
"Volume" )).toDouble();
875 int trackID = (tableWidget->
GetValue( *it,
"mesh",
"trackID" )).toInt();
877 std::pair<unsigned int, double> trackAndVolume(trackID, volume);
878 oList.push_back(trackAndVolume);
888 std::list< std::pair<unsigned int, double> >
892 std::list< std::pair<unsigned int, double> > oList;
895 std::list<unsigned int>::const_iterator it = iMeshIDs.begin();
897 while(it!=iMeshIDs.end())
899 double volume = (tableWidget->
GetValue( *it,
"mesh",
"Volume" )).toDouble();
900 int trackID = (tableWidget->
GetValue( *it,
"mesh",
"trackID" )).toInt();
902 std::pair<unsigned int, double> trackAndVolume(trackID, volume);
903 oList.push_back(trackAndVolume);
917 return (this->
GetTableWidget()->GetValue( iMeshID,
"mesh",
"Volume" )).toDouble();
925 const std::list<unsigned int>& iTimePoints)
927 this->RemoveTracesFromTWAndContainerForVisuForSpecificTPsTemplate<MeshContainer>(
936 const std::list< unsigned int > & iToTrack,
937 const std::list< unsigned int > & iToNull)