[us-commits] r2799 - in trunk: programs/us_com_project programs/us_xpn_viewer utils

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Wed Jul 24 18:28:21 MDT 2019


Author: alexey
Date: 2019-07-25 00:28:19 +0000 (Thu, 25 Jul 2019)
New Revision: 2799

Modified:
   trunk/programs/us_com_project/us_com_project_gui.cpp
   trunk/programs/us_com_project/us_com_project_gui.h
   trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
   trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h
   trunk/utils/us_xpn_data.cpp
Log:
Autoflow:
 * updates on properly stopping timers/threads when attempting to switch back centralizedto Managing Runs while LIVE UPDATE in full operation...
 * multiple other updates



Modified: trunk/programs/us_com_project/us_com_project_gui.cpp
===================================================================
--- trunk/programs/us_com_project/us_com_project_gui.cpp	2019-07-24 06:40:06 UTC (rev 2798)
+++ trunk/programs/us_com_project/us_com_project_gui.cpp	2019-07-25 00:28:19 UTC (rev 2799)
@@ -33,6 +33,7 @@
   //   dbg_level    = US_Settings::us_debug();
    curr_panx    = 0;
    window_closed = false;
+   xpn_viewer_closed_soft = false;  
    
    us_mode_bool = true;
 
@@ -173,6 +174,7 @@
    
    //connect( this, SIGNAL( clear_experiment( QString & ) ),  epanExp, SLOT( clear_experiment( QString & )  ) );
    connect( epanObserv, SIGNAL( close_everything() ), this, SLOT( close_all() ));
+   connect( this, SIGNAL( reset_live_update() ),  epanObserv, SLOT( reset_live_update( )  ) );
    
    //connect( epanPostProd, SIGNAL( switch_to_analysis( QString &, QString &) ),  this, SLOT( switch_to_analysis( QString &, QString & )  ) );
    //connect( this, SIGNAL( pass_to_analysis( QString &, QString & ) ),   epanAnalysis, SLOT( do_analysis( QString &, QString & )  ) );
@@ -197,6 +199,8 @@
    curr_panx    = 0;
 
    window_closed = false;
+   xpn_viewer_closed_soft = false;  
+   
    us_mode_bool = false;
    
    setWindowTitle( tr( "UltraScan Optima AUC Interface" ) );
@@ -337,6 +341,7 @@
    connect( epanObserv, SIGNAL( switch_to_post_processing( QMap < QString, QString > & ) ), this, SLOT( switch_to_post_processing( QMap < QString, QString > & ) ) );
    connect( this, SIGNAL( import_data_us_convert( QMap < QString, QString > & ) ),  epanPostProd, SLOT( import_data_us_convert( QMap < QString, QString > & )  ) );
    connect( epanObserv, SIGNAL( close_everything() ), this, SLOT( close_all() ));
+   connect( this, SIGNAL( reset_live_update() ),  epanObserv, SLOT( reset_live_update( )  ) );
    
    connect( epanPostProd, SIGNAL( switch_to_editing( QString &, QString &) ),  this, SLOT( switch_to_editing( QString &, QString & )  ) );
    connect( this, SIGNAL( reset_lims_import() ),  epanPostProd, SLOT( reset_lims_import( )  ) );
@@ -381,18 +386,23 @@
 		2. More complex: Back to Managing runs from active LIVE_UPDATE stage -- stop all timers and other processes...
 	  */ 
 	  qDebug() << "Jumping from LIVE UPDATE.";
+	  
+	  //2. Stop all timers/threads, reset GUI - when stopping fully working LIVE UPDATE
+	  if ( !xpn_viewer_closed_soft )
+	    emit reset_live_update();
 	}
 
       if ( curr_panx == 3 )
 	{
 	  qDebug() << "Jumping from LIMS IMPORT.";
-	  //Send sigmal to reset LIMS IMPORT tab... Fully SET
+	  //Send signal to reset LIMS IMPORT tab... Fully SET
 	  emit reset_lims_import();
 	}
       
       if ( curr_panx == 4 )
 	qDebug() << "Jumping from EDITING.";
-      
+
+      xpn_viewer_closed_soft = false;
       epanInit  ->initAutoflowPanel();
     }
 
@@ -627,6 +637,7 @@
 // Slot to pass submitted to Optima run info to the Live Update tab
 void US_ComProjectMain::close_all( void )
 {
+  xpn_viewer_closed_soft = true;  
   tabWidget->setCurrentIndex( 0 );   
   //epanInit  ->initAutoflowPanel();  //DO NOT Duplicate - was called in previous line while changing Tab!!!
   qDebug() << "XPN viewer /US_convert  closed!";
@@ -671,6 +682,12 @@
   tabWidget->setCurrentIndex( 3 );   // Maybe lock this panel from now on? i.e. tabWidget->tabBar()-setEnabled(false) ??
   curr_panx = 3;
 
+  // Trigger resize to update size of the PostProcs
+  int curr_h = this->height() + 1;
+  int curr_w = this->width() + 1;
+
+  this->resize( QSize(curr_w, curr_h) );
+  
   for (int i = 1; i < tabWidget->count(); ++i )
     {
       if ( i == 3 )
@@ -1021,7 +1038,7 @@
 	{
 	  QString list_instruments_in_use = occupied_instruments.join(", ");
 	  
-	  QMessageBox * msg_instr_use = new QMessageBox;
+	  QMessageBox * msg_instr_use = new QMessageBox(this);
 	  msg_instr_use->setIcon(QMessageBox::Information);
 	  msg_instr_use->setText(tr( "The following Optima instrument(s)<br>"
 				       "are currently in use: <br><br>"
@@ -1656,6 +1673,9 @@
 
    //ALEXEY: devise SLOT saying what to do upon completion of experiment and exporting AUC data to hard drive - Import Experimental Data  !!! 
    connect( sdiag, SIGNAL( experiment_complete_auto( QMap < QString, QString > & ) ), this, SLOT( to_post_processing ( QMap < QString, QString > & ) ) );
+
+   //ALEXEY: to reset timers/threads and GUI when returning back to InitDialog
+   connect( this, SIGNAL( reset_live_update_passed( ) ), sdiag, SLOT( reset_liveupdate_panel ( )  ) );
    
    //ALEXEY: close program, emitted from sdiag
    connect( sdiag, SIGNAL( close_program() ), this, SLOT( to_close_program()  ) );
@@ -1700,6 +1720,11 @@
     QWidget::resizeEvent(event);
 }
 
+void US_ObservGui::reset_live_update( void )
+{
+  emit reset_live_update_passed(); 
+}
+
 // Live Update's get and use submitted run's protocol details
 void US_ObservGui::process_protocol_details( QMap < QString, QString > & protocol_details )
 {

Modified: trunk/programs/us_com_project/us_com_project_gui.h
===================================================================
--- trunk/programs/us_com_project/us_com_project_gui.h	2019-07-24 06:40:06 UTC (rev 2798)
+++ trunk/programs/us_com_project/us_com_project_gui.h	2019-07-25 00:28:19 UTC (rev 2799)
@@ -185,11 +185,13 @@
       //void to_post_processing( QString & currDir, QString & protocolName, QString & invID_passed, QString & correctRadii );
       void to_post_processing( QMap < QString, QString > & );
       void to_close_program( void );
+      void reset_live_update( void );
  signals:
       void to_xpn_viewer( QMap < QString, QString > & protocol_details );
       //void switch_to_post_processing( QString & currDir, QString & protocolName, QString & invID_passed, QString & correctRadii  );
       void switch_to_post_processing( QMap < QString, QString > &  );
       void close_everything( void );
+      void reset_live_update_passed( void );
 };
 
 
@@ -336,6 +338,8 @@
   void close_initDialogue();
 
   bool window_closed;
+  bool xpn_viewer_closed_soft;
+  
   int         curr_panx;       // Current panel index (0-7)
   //QStringList occupied_instruments;
 
@@ -399,6 +403,7 @@
   void us_comproject_closed( void );
   void pass_used_instruments( QStringList & );
   void reset_lims_import( void );
+  void reset_live_update( void );
 };
 
 

Modified: trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
===================================================================
--- trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-07-24 06:40:06 UTC (rev 2798)
+++ trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-07-25 00:28:19 UTC (rev 2799)
@@ -656,6 +656,7 @@
 
    grid_rpm          = us_grid( data_plot_rpm );
 
+   //ALEXEY: curves for sysdata must be re-defined in the reset_auto() !!!
    curv_rpm  = us_curve( data_plot_rpm, "RPM" );
    curv_temp = us_curve( data_plot_rpm, "Temperature" );
    curv_temp->setYAxis     ( QwtPlot::yRight );
@@ -665,6 +666,8 @@
 
    curv_temp->setPen( pen_red);
    curv_rpm ->setPen( pen_green);
+   /*************************************************************************/
+
    
    connect( plot_rpm, SIGNAL( zoomedCorners( QRectF ) ),
             this, SLOT  ( currentRectf ( QRectF ) ) );
@@ -1209,6 +1212,15 @@
    data_plot_rpm->setAxisScale( QwtPlot::yRight , 0.0, 40 );
    grid_rpm      = us_grid( data_plot_rpm );
    data_plot_rpm->replot();
+   //Curves for RPM/Temp.
+   curv_rpm  = us_curve( data_plot_rpm, "RPM" );
+   curv_temp = us_curve( data_plot_rpm, "Temperature" );
+   curv_temp->setYAxis     ( QwtPlot::yRight );
+   QPen    pen_red ( Qt::red );
+   QPen    pen_green ( Qt::green );
+   curv_temp->setPen( pen_red);
+   curv_rpm ->setPen( pen_green);
+   
    //RPM/Temp.
    rpm_box->setSpeed(0);
    temperature_box->setTemp(0);
@@ -1884,7 +1896,7 @@
   remaining_time_text = QString::number(dhms_remain[1]) + ":" + QString::number(dhms_remain[2]) + ":" + QString::number(dhms_remain[3]);
   le_remaining->setText( remaining_time_text );
   qApp->processEvents();
-  
+
   //RPM/Temp. Plots:
 
   //counter_mins += 500; //temporary for testing only
@@ -1901,7 +1913,7 @@
   double* d_rpm          = rpm_data.data();
   double* d_temp         = temp_data.data();
   double* d_time         = time_data.data();
-
+  
   //axis ranges, temporary
   double rpm_min = 0;
   double rpm_max = rpm + 5000;
@@ -1913,7 +1925,7 @@
   //if (temp_data.size() != 0 )
   curv_temp->setSamples( d_time, d_temp, time_data.size() );
   curv_rpm->setSamples(  d_time, d_rpm,  time_data.size() );   
-
+  
   //data_plot_rpm->setAxisScale( QwtPlot::xBottom, 0.0, double(elapsed_time_1/60.0) );  // <-- HERE
   data_plot_rpm->setAxisScale( QwtPlot::xBottom, double(ElapsedTimeOffset/60.0), double(elapsed_time_1/60.0) );  // 
   //data_plot_rpm->setAxisScale( QwtPlot::xBottom, 0.0, double(exp_time/60.0 + counter_mins ) ); // for testing only
@@ -2121,15 +2133,84 @@
 	{
 	  timer_data_init->stop();
 	  disconnect(timer_data_init, SIGNAL(timeout()), 0, 0);   //Disconnect timer from anything
+	  
+	  reset_auto();
 
-	  reset_auto();
 	  emit close_program(); 
 	}
     }
 }
 
+// Reset LIVE UPDATE panel && stop timers && quit threads
+void US_XpnDataViewer::reset_liveupdate_panel ( void )
+{
+  //Quit sys_thread, emit finished() to stop timer_check_sysdata from withing thread
+  if ( !sys_thread->isFinished() )
+    {
+      sys_thread->quit();    
+      qApp->processEvents();
+    }
+
+  //Disconnect timer_check_sysdata
+  if ( timer_check_sysdata->isActive() )
+    {
+      timer_check_sysdata->stop();
+      disconnect(timer_check_sysdata, SIGNAL(timeout()), 0, 0);
+    }
+  
+  //Stop other timers if active
+  if ( timer_all_data_avail->isActive() ) 
+    {
+      timer_all_data_avail->stop();
+      disconnect(timer_all_data_avail, SIGNAL(timeout()), 0, 0);
+    }
+  
+  if ( timer_data_reload->isActive() )
+    {
+      timer_data_reload->stop();
+      disconnect(timer_data_reload, SIGNAL(timeout()), 0, 0);
+    }
+
+  if ( timer_data_init->isActive() )
+    {
+      timer_data_init->stop();
+      disconnect(timer_data_init, SIGNAL(timeout()), 0, 0);
+    }
+
+  qApp->processEvents();
+  
+  /***** DEBUG ***********************/
+  if ( sys_thread->isFinished() )
+    qDebug() << "QThread STOPPED upon clickig Manage Optima runs !!! ";
+  
+  if ( !timer_check_sysdata->isActive() )
+    qDebug() << "QTimer timer_check_sysdata STOPPED by clickig Manage Optima runs !!! ";
+
+  if ( !timer_data_init->isActive() )
+    qDebug() << "QTimer timer_data_init STOPPED by clickig Manage Optima runs !!! ";
+  
+  if ( !timer_all_data_avail->isActive() )
+    qDebug() << "QTimer timer_all_data_avail STOPPED by clickig Manage Optima runs !!! ";
+
+  if ( !timer_data_reload->isActive() )
+    qDebug() << "QTimer timer_data_reload STOPPED by clickig Manage Optima runs !!! ";
+  /*************************************/
+  
+  reset_auto();
+
+  qDebug() << in_reload_auto << ", " << in_reload_all_data << ", " << in_reload_data_init << ", " << in_reload_check_sysdata;
+  
+  in_reload_auto    = false;
+  in_reload_all_data  = false;
+  in_reload_data_init = false;
+  in_reload_check_sysdata  = false;
+  
+  qApp->processEvents();
+}
+
+
 //void US_XpnDataViewer::retrieve_xpn_raw_auto( QString & RunID )
-void US_XpnDataViewer::retrieve_xpn_raw_auto( )
+void US_XpnDataViewer::retrieve_xpn_raw_auto( void )
 {
    if ( in_reload_all_data )            // If already doing a reload,
      return;                            //  skip starting a new one

Modified: trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h
===================================================================
--- trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h	2019-07-24 06:40:06 UTC (rev 2798)
+++ trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h	2019-07-25 00:28:19 UTC (rev 2799)
@@ -303,6 +303,8 @@
      bool   load_xpn_raw_auto   ( void );
      void   check_for_data ( QMap < QString, QString > & );
      void   check_for_sysdata ( void );
+
+     void   reset_liveupdate_panel ( void );
      
      //void   retrieve_xpn_raw_auto ( QString & );
      void   retrieve_xpn_raw_auto ( void );

Modified: trunk/utils/us_xpn_data.cpp
===================================================================
--- trunk/utils/us_xpn_data.cpp	2019-07-24 06:40:06 UTC (rev 2798)
+++ trunk/utils/us_xpn_data.cpp	2019-07-25 00:28:19 UTC (rev 2799)
@@ -55,7 +55,7 @@
    dbxpn.setUserName    ( dbuser  );
    dbxpn.setPassword    ( dbpasw );
 
-   dbxpn.setConnectOptions("connect_timeout=3");
+   dbxpn.setConnectOptions("connect_timeout=5");
      
    if ( dbxpn.open() )
    {



More information about the us-commits mailing list