@@ -40,6 +40,8 @@ This file is part of Fast Track.
4040 */
4141Interactive::Interactive (QWidget *parent) : QMainWindow(parent),
4242 ui(new Ui::Interactive),
43+ video(new VideoReader()),
44+ analysis(new StatAnalysis(this , false )),
4345 videoStatus(false ),
4446 settingsFile(new QSettings(QStringLiteral(" FastTrack" ), QStringLiteral(" FastTrackOrg" ), this)) {
4547 ui->setupUi (this );
@@ -102,10 +104,12 @@ Interactive::Interactive(QWidget *parent) : QMainWindow(parent),
102104 connect (replayAction, &QAction::toggled, this , [this ](bool isChecked) {
103105 if (isChecked) {
104106 ui->interactiveTab ->addTab (replay, tr (" Replay" ));
107+ ui->interactiveTab ->addTab (analysis, tr (" Analysis" )); // Preview feature. Will have a separate action latter if necessary.
105108 ui->interactiveTab ->setCurrentIndex (1 );
106109 }
107110 else {
108- ui->interactiveTab ->removeTab (1 );
111+ ui->interactiveTab ->removeTab (1 ); // Remove Replay tab
112+ ui->interactiveTab ->removeTab (1 ); // Remove Analysis tab
109113 }
110114 });
111115 ui->menuView ->addAction (replayAction);
@@ -121,8 +125,11 @@ Interactive::Interactive(QWidget *parent) : QMainWindow(parent),
121125 });
122126
123127 // Stay on the same frame when changing tab
124- connect (ui->interactiveTab , &QTabWidget::currentChanged, this , [this ]() {
128+ connect (ui->interactiveTab , &QTabWidget::currentChanged, this , [this ](int index ) {
125129 ui->slider ->setValue (ui->slider ->value ());
130+ if (index == 2 ) {
131+ analysis->reload ();
132+ }
126133 });
127134
128135 // Loads prefered style
@@ -378,12 +385,10 @@ Interactive::Interactive(QWidget *parent) : QMainWindow(parent),
378385 });
379386
380387 // Replay tab
381- video = new VideoReader ();
382388 replay = new Replay (this , false , ui->slider , video);
383389 connect (ui->interactiveTab , &QTabWidget::tabCloseRequested, this , [this ](int index) {
384390 if (index != 0 ) {
385- ui->interactiveTab ->removeTab (index);
386- replayAction->setChecked (false );
391+ replayAction->setChecked (false ); // The replayAction takes care of the tabs removing
387392 }
388393 });
389394
@@ -485,6 +490,7 @@ void Interactive::openFolder() {
485490 ui->display ->clear ();
486491 video->release ();
487492 replay->clear ();
493+ analysis->clear ();
488494 ui->backgroundProgressBar ->setValue (0 );
489495 ui->isBin ->setCheckable (false );
490496 ui->isSub ->setCheckable (false );
@@ -533,6 +539,7 @@ void Interactive::openFolder() {
533539 // Load replay
534540 replay->loadReplay (dir);
535541 if (!replay->trackingData ->isEmpty ) {
542+ analysis->openTrackingData (replay->trackingData , true );
536543 replayAction->setChecked (true );
537544 }
538545
@@ -853,7 +860,7 @@ void Interactive::getParameters() {
853860}
854861
855862/* *
856- * @brief Does a tracing analysis on a sub-part of the image sequence defined by the user. Triggered when previewButton is clicked.
863+ * @brief Does a tracking analysis on a sub-part of the image sequence defined by the user. Triggered when previewButton is clicked.
857864 */
858865void Interactive::previewTracking () {
859866 if (videoStatus) {
@@ -863,6 +870,7 @@ void Interactive::previewTracking() {
863870 ui->trackButton ->setDisabled (true );
864871 replayAction->setChecked (false );
865872 replay->clear (); // Avoid mixing 2 subsequent analysy
873+ analysis->clear ();
866874
867875 QThread *thread = new QThread;
868876 Tracking *tracking = new Tracking (memoryDir.toStdString (), background, ui->startImage ->value (), ui->startImage ->value () + ui->stopImage ->value ());
@@ -878,13 +886,15 @@ void Interactive::previewTracking() {
878886 ui->previewButton ->setDisabled (false );
879887 ui->trackButton ->setDisabled (false );
880888 replay->loadReplay (dir);
889+ analysis->openTrackingData (replay->trackingData , true );
881890 replayAction->setChecked (true );
882891 });
883892 connect (tracking, &Tracking::forceFinished, this , [this ](const QString &errorMessage) {
884893 ui->slider ->setDisabled (false );
885894 ui->previewButton ->setDisabled (false );
886895 ui->trackButton ->setDisabled (false );
887896 replay->loadReplay (dir);
897+ analysis->openTrackingData (replay->trackingData , true );
888898 replayAction->setChecked (true );
889899 emit message (errorMessage);
890900 });
@@ -912,6 +922,7 @@ void Interactive::track() {
912922 ui->trackButton ->setDisabled (true );
913923 replayAction->setChecked (false );
914924 replay->clear (); // Avoid mixing 2 subsequent analysy
925+ analysis->clear ();
915926
916927 QThread *thread = new QThread;
917928 Tracking *tracking = new Tracking (memoryDir.toStdString (), background);
@@ -931,6 +942,7 @@ void Interactive::track() {
931942 ui->previewButton ->setDisabled (false );
932943 ui->trackButton ->setDisabled (false );
933944 replay->loadReplay (dir);
945+ analysis->openTrackingData (replay->trackingData , true );
934946 replayAction->setChecked (true );
935947 logMap->insert (QStringLiteral (" status" ), errorMessage);
936948 emit log (*logMap);
@@ -943,6 +955,7 @@ void Interactive::track() {
943955 ui->previewButton ->setDisabled (false );
944956 ui->trackButton ->setDisabled (false );
945957 replay->loadReplay (dir);
958+ analysis->openTrackingData (replay->trackingData , true );
946959 replayAction->setChecked (true );
947960 logMap->insert (QStringLiteral (" status" ), QStringLiteral (" Done" ));
948961 emit log (*logMap);
0 commit comments