35 #ifndef __QGoDBTrackManager_h
36 #define __QGoDBTrackManager_h
42 #include "QGoGUILibConfigure.h"
70 void SetTracksInfoContainerForVisu(
TrackContainer *iContainerForVisu);
77 void DisplayInfoAndLoadVisuContainerForAllTracks(
78 vtkMySQLDatabase *iDatabaseConnector);
85 void LoadInfoVisuContainerForTrackFamilies(vtkMySQLDatabase *iDatabaseConnector);
93 void DisplayOnlyCalculatedValuesForExistingTrack(
102 unsigned int CreateNewTrackWithNoMesh(
103 vtkMySQLDatabase *iDatabaseConnector);
110 const std::vector< int > & iVectorImportedTraces,
111 vtkMySQLDatabase *iDatabaseConnector);
120 void DeleteListTraces(vtkMySQLDatabase *iDatabaseConnector,
121 const std::list<unsigned int> & iListTraces);
134 void UpdateCurrentElementTrackContainer();
140 void UpdatePointsOfCurrentElementForImportedTrack(
141 std::map<unsigned int,double*> iMeshesInfo,
142 vtkMySQLDatabase* iDatabaseConnector);
146 vtkMySQLDatabase *iDatabaseConnector,
147 const std::list< unsigned int > & iListTracesIDs);
155 std::string CheckMeshCanBeAddedToTrack( vtkMySQLDatabase* iDatabaseConnector,
156 unsigned int iTrackID,
157 unsigned int iMeshTimePoint,
158 std::list<unsigned int> &ioMotherTrackDivisionToUpdate);
163 void UpdateDivisions(
const std::list<unsigned int> & iListMotherTrackIDs);
168 void AddVolume(
const unsigned int& iTrackID,
const double& iVolume);
173 void AddVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes);
178 void RemoveVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes);
183 void AddVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes,
184 unsigned int iTrackID);
189 void RemoveVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes,
190 unsigned int iTrackID);
192 std::vector<unsigned int> GetTrackFamily(vtkMySQLDatabase* iDatabaseConnector,
193 unsigned int iTrackID);
195 bool isMother(vtkMySQLDatabase* iDatabaseConnector,
unsigned int iTrackID);
205 int CreateTrackFamily(vtkMySQLDatabase* iDatabaseConnector,
206 unsigned int iMotherTrackID,
207 const std::list<unsigned int> & iDaughtersID);
210 void NeedMeshesInfoForImportedTrack(
unsigned int iTrackID);
211 void TrackToSplit(
unsigned int iTrackID, std::list<unsigned int> iListMeshIDs);
212 void TrackIDToBeModifiedWithWidget(std::list<unsigned int> iListTracksID);
213 void MeshesToAddToTrack(std::list<unsigned int> iListMeshes,
unsigned int iTrackID);
215 void CheckedTracksToAddToSelectedLineage(std::list<unsigned int> iDaughtersID,
unsigned int iLineageID,
216 std::list<unsigned> iLineagesToDelete);
218 void NewLineageToCreateFromTracks( std::list<unsigned int> iCheckedTracksIDs,
unsigned int iTrackIDRoot,
219 std::list<unsigned> iLineagesToDelete);
221 void NeedToGoToTheRealLocation(
double,
double,
double,
int);
227 void DeleteTheDivisions(std::list<unsigned int> iDivisions = std::list<unsigned int>());
232 void CreateCorrespondingTrackFamily(std::list<unsigned int> iDivisions = std::list<unsigned int>());
245 vtkMySQLDatabase *iDatabaseConnector,
const std::list<unsigned int> & iListTPs);
249 vtkMySQLDatabase* iDatabaseConnector,
250 std::list<unsigned int> iListTraceIDs = std::list< unsigned int >());
259 void UpdateTrackPolydataForVisu(vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTrackID);
270 void SaveTrackCurrentElement(vtkMySQLDatabase* iDatabaseConnector);
272 void SaveTrackStructure(vtkMySQLDatabase* iDatabaseConnector,
284 bool CheckOverlappingTracks(std::list<unsigned int> iTrackIDs,
285 unsigned int &ioTraceIDToKeep,
unsigned int &ioTraceIDToDelete,
286 vtkMySQLDatabase* iDatabaseConnector);
296 void UpdateTrackFamilyIDForDaughter(vtkMySQLDatabase* iDatabaseConnector,
297 unsigned int iDaughterID,
unsigned int iTrackFamilyID);
308 bool IdentifyMotherDaughtersToCreateTrackFamily(
309 vtkMySQLDatabase* iDatabaseConnector,
310 const std::list<unsigned int> & iListTracksID,
312 std::list<unsigned int> &ioDaughtersID);
322 std::list<unsigned int> GetTrackIDFromDaughtersFamilies( vtkMySQLDatabase* iDatabaseConnector,
323 std::list<unsigned int> &ioTrackIDsOfTheFamilies);
331 void DeleteOneDivision(
GoDBTrackFamilyRow iDivision, vtkMySQLDatabase* iDatabaseConnector,
332 std::list<unsigned int> &ioTrackIDsNoLineage, std::list<unsigned int> &ioMotherLineageToDelete);
339 void PrintAMessageForTracksWithNoDivision(std::list<unsigned int> iTracksNoDivision);
346 void CreateALineageWithFormerDaughterOfADeletedDivision(
347 unsigned int iDaughterID, vtkMySQLDatabase* iDatabaseConnector,
bool &ioPartOfHigherLineage);
353 unsigned int IsTheTrackAMother(
unsigned int iDaughterID,
354 vtkMySQLDatabase* iDatabaseConnector);
360 unsigned int IsTheTrackADaughter(
unsigned int iTrackID,
361 vtkMySQLDatabase* iDatabaseConnector);
370 void UpdateFormerDaughtersOfADeletedDivision(
371 std::list<unsigned int> iDaughtersID,
372 std::list<unsigned int> &ioTrackIDsNoLineage,
373 bool &ioPartOfHigherLineage);
378 std::list<unsigned int> GetDivisionIDsTheTrackBelongsTo(
379 vtkMySQLDatabase* iDatabaseConnector,
unsigned int iTrackID );
384 unsigned int CheckBoundingBoxDivisionAsAMother(vtkMySQLDatabase* iDatabaseConnector,
385 unsigned int iTimePoint,
unsigned int iTrackFamilyID );
391 unsigned int CheckBoundingBoxDivisionAsADaughter(vtkMySQLDatabase* iDatabaseConnector,
392 unsigned int iTimePoint,
unsigned int iTrackFamilyID );
410 void SplitMergeTrackWithWidget();
416 void TrackIDToEmit();
429 void GoToTrackBegin();
virtual void DisplayInfoForLastCreatedTrace(vtkMySQLDatabase *iDatabaseConnector)=0
Virtual pure method: get the data needed from the database for the last created trace and display the...
virtual void UpdateBoundingBoxes(vtkMySQLDatabase *iDatabaseConnector, const std::list< unsigned int > &iListTracesIDs, bool UpdateTW=true)
update in the database the bounding boxes corresponding to the TracesIDs and update the corresponding...
Abstract class inherited by QGoDBContourManager,Mesh,Track,Lineage.
virtual void SetCollectionsTraceNames()=0
virtual pure method: set the std::string class members
virtual void UpdateHighlightedElementsInVisuContainer(int iTraceID)=0
modify to the opposite one the highlighted property of the corresponding trace base on traceID in the...
manages a map with keys matching fields of the gofiguredatabase TrackFamily table and values of the m...
virtual void DisplayInfoForExistingTrace(vtkMySQLDatabase *iDatabaseConnector, int iTraceID)=0
Virtual pure method: get the data needed from the database for the existing trace with iTraceID and u...
TrackContainer * m_TrackContainerInfoForVisu
virtual void UpdateTWAndContainerForImportedTraces(const std::vector< int > &iVectorImportedTraces, vtkMySQLDatabase *iDatabaseConnector)=0
get the data needed from the database for the imported traces,display them in new inserted rows of th...
This class describes the specificities of the GoDBTWContainerForTrackLineage for track.
Structure which represent a track, and used for interaction between Visualization and TableWidget...
This class manages the database queries, the table widget and the data from the database in the Conta...
virtual void SetColorCoding(bool IsChecked)=0
ColorCode the traces in the visualization base on a selected column in the table widget.
virtual void DisplayInfoForTracesForSpecificTPs(vtkMySQLDatabase *iDatabaseConnector, const std::list< unsigned int > &iListTPs)=0
void GetTracesInfoFromDBAndModifyContainerForVisu(vtkMySQLDatabase *iDatabaseConnector, std::vector< int > iVectIDs, C *iContainerForVisu)
virtual void DeleteCheckedTraces(vtkMySQLDatabase *iDatabaseConnector)=0
delete the checked traces from the database, the TW and the container for visu
Wraps a boost multi index container of TrackStructure. This class intends to synchronize Track repres...
virtual std::list< unsigned int > GetListHighlightedIDs()=0
GoDBTWContainerForTrack * m_TWContainer
virtual std::list< unsigned int > UpdateTheTracesColor(vtkMySQLDatabase *iDatabaseConnector)=0
virtual pure. update the color of the checked traces in the database, the visu container and the TW a...
virtual void UpdateVisibleElementsInVisuContainer(int iTraceID)=0
modify to the opposite one the Visible property of the corresponding trace base on traceID in the con...
virtual void DisplayInfoForAllTraces(vtkMySQLDatabase *iDatabaseConnector)=0
Virtual pure method: get the data needed from the database and display them in the m_Table for all tr...
virtual void AddActionsContextMenu(QMenu *iMenu)