[us-commits] r2798 - in trunk: gui programs/us_com_project programs/us_convert programs/us_xpn_viewer

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Wed Jul 24 00:40:08 MDT 2019


Author: alexey
Date: 2019-07-24 06:40:06 +0000 (Wed, 24 Jul 2019)
New Revision: 2798

Modified:
   trunk/gui/us_select_item.cpp
   trunk/programs/us_com_project/us_com_project_gui.cpp
   trunk/programs/us_com_project/us_com_project_gui.h
   trunk/programs/us_convert/us_convert_gui.cpp
   trunk/programs/us_convert/us_convert_gui.h
   trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
Log:
Autoflow:
 * many logical updates (for centralized accessibility of the Manage Runs)



Modified: trunk/gui/us_select_item.cpp
===================================================================
--- trunk/gui/us_select_item.cpp	2019-07-23 07:35:43 UTC (rev 2797)
+++ trunk/gui/us_select_item.cpp	2019-07-24 06:40:06 UTC (rev 2798)
@@ -111,22 +111,28 @@
    //Inormation field for autoflow
    QTextEdit*     le_info;
 
+   QFont le_info_font( US_Widgets::fixedFont().family(),
+		       US_GuiSettings::fontSize() );
+   
    if ( autoflow_button )
      {
        le_info = us_textedit();
        QFontMetrics m (le_info -> font()) ;
        int RowHeight = m.lineSpacing() ;
-       le_info -> setFixedHeight  (5 * RowHeight) ;
+       le_info -> setFixedHeight  (10 * RowHeight) ;
 
        QPalette p = le_info->palette(); 
        p.setColor(QPalette::Base, Qt::lightGray);
        p.setColor(QPalette::Text, Qt::darkRed);
        le_info->setPalette(p);
        
-       le_info->setText(tr( "<ul><li>Information on one or more experimental methods submitted to Bechman Optima(s) is available. "
-			    "<br>You can reattach to the job by selecting the run from the list below. "
-			    "<br>Alternatively, you can define and submit a new experiment method to the availabale Optima instrument(s). </ul></li>" ));
+       le_info->setText(tr( "Information on one or more experimental methods submitted to Bechman Optima(s) is available."
+			    "<ul><li>You can reattach to specific job by selecting from the list below and clicking \"Select Optima Run to Follow\"</ul></li>"
+			    "<ul><li>Alternatively, you can click \"Define Another Experiment\" to design and/or submit a new experiment method to the availabale Optima instrument(s)</ul></li>"
+			    "<ul><li>Finally, records can be deleted (\"Delete Record\"). Use with caution</ul></li>" ));
+
        
+       le_info->setFont(le_info_font);
        main->addWidget( le_info );
      }
    

Modified: trunk/programs/us_com_project/us_com_project_gui.cpp
===================================================================
--- trunk/programs/us_com_project/us_com_project_gui.cpp	2019-07-23 07:35:43 UTC (rev 2797)
+++ trunk/programs/us_com_project/us_com_project_gui.cpp	2019-07-24 06:40:06 UTC (rev 2798)
@@ -124,8 +124,11 @@
    
    tabWidget->tabBar()->setIconSize(QSize(50,50));
 
-   tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:hover {background: lightgray;} QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;} ");
+   //tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:hover {background: lightgray;} QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;}  QTabBar::tab:first:hover {background: #4169E1; color: white}  QTabBar::tab:disabled { color: rgba(0, 0, 0, 70%) } ");
 
+   //no hoover
+   tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;}  QTabBar::tab:first:hover {background: #4169E1; color: white}  QTabBar::tab:disabled { color: rgba(0, 0, 0, 70%) } ");
+   
    main->addWidget( tabWidget );
 
    for (int i=0; i < tabWidget->count(); ++i )
@@ -138,8 +141,7 @@
      }
 
    connect( tabWidget, SIGNAL( currentChanged( int ) ), this, SLOT( initPanels( int ) ) );
-   
-   
+
    logWidget = us_textedit();
    logWidget->setMaximumHeight(30);
    logWidget->setReadOnly(true);
@@ -166,18 +168,17 @@
    connect( this   , SIGNAL( pass_to_live_update( QMap < QString, QString > &) ),   epanObserv, SLOT( process_protocol_details( QMap < QString, QString > & )  ) );
    connect( epanExp, SIGNAL( to_autoflow_records( ) ), this, SLOT( to_autoflow_records( ) ) );
    
-   // connect( epanObserv, SIGNAL( switch_to_post_processing( QString &, QString &, QString &, SQtring &) ), this, SLOT( switch_to_post_processing( QString &, QString &, QString &, QString &) ) );
-   // connect( this, SIGNAL( import_data_us_convert( QString &, QString &, QString &, QString & ) ),  epanPostProd, SLOT( import_data_us_convert( QString &, QString &, QString &, QString & )  ) );
    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( this, SIGNAL( clear_experiment( QString & ) ),  epanExp, SLOT( clear_experiment( QString & )  ) );
+   //connect( this, SIGNAL( clear_experiment( QString & ) ),  epanExp, SLOT( clear_experiment( QString & )  ) );
    connect( epanObserv, SIGNAL( close_everything() ), this, SLOT( close_all() ));
    
    //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 & )  ) );
    //connect( epanPostProd, SIGNAL( switch_to_exp( QString & ) ), this, SLOT( switch_to_experiment( QString & )  ) );
    connect( epanPostProd, SIGNAL( switch_to_initAutoflow( ) ), this, SLOT( close_all( )  ) );
+   connect( this, SIGNAL( reset_lims_import() ),  epanPostProd, SLOT( reset_lims_import( )  ) );
    
    setMinimumSize( QSize( 1350, 800 ) );
    adjustSize();
@@ -283,8 +284,11 @@
 
    tabWidget->tabBar()->setIconSize(QSize(50,50));
 
-   tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:hover {background: lightgray;} QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;}  QTabBar::tab:first:hover {background: #4169E1; color: white}  QTabBar::tab:disabled {} ");
+   //tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:hover {background: lightgray;} QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;}  QTabBar::tab:first:hover {background: #4169E1; color: white}  QTabBar::tab:disabled { color: rgba(0, 0, 0, 70%)  } ");
 
+   //no hoover
+   tabWidget->tabBar()->setStyleSheet( "QTabBar::tab {min-width: 70;} QTabBar::tab:selected {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:first {background: blue; color: lightgray; min-width: 50;}  QTabBar::tab:first:hover {background: #4169E1; color: white}  QTabBar::tab:disabled { color: rgba(0, 0, 0, 70%)  } ");
+
    main->addWidget( tabWidget );
    
    for (int i=0; i < tabWidget->count(); ++i )
@@ -330,19 +334,18 @@
    connect( this   , SIGNAL( pass_to_live_update( QMap < QString, QString > &) ),   epanObserv, SLOT( process_protocol_details( QMap < QString, QString > & )  ) );
    connect( epanExp, SIGNAL( to_autoflow_records( ) ), this, SLOT( to_autoflow_records( ) ) );
    
-   // connect( epanObserv, SIGNAL( switch_to_post_processing( QString &, QString &, QString &, QString & ) ), this, SLOT( switch_to_post_processing( QString &, QString &, QString &, QString & )));
-   // connect( this, SIGNAL( import_data_us_convert( QString &, QString &, QString &, QString & ) ),  epanPostProd, SLOT( import_data_us_convert( QString &, QString &, QString &, QString & )  ) );
    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( clear_experiment( QString & ) ),  epanExp, SLOT( clear_experiment( QString & )  ) );
-   connect( epanObserv, SIGNAL( close_everything() ), this, SLOT( close_all() ));
-      
    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( )  ) );
+
    connect( this, SIGNAL( pass_to_editing( QString &, QString & ) ),   epanEditing, SLOT( do_editing( QString &, QString & )  ) );
-   //connect( epanPostProd, SIGNAL( switch_to_exp( QString & ) ), this, SLOT( switch_to_experiment( QString & )  ) );
    connect( epanPostProd, SIGNAL( switch_to_initAutoflow( ) ), this, SLOT( close_all( )  ) );
    
+   
+   
    setMinimumSize( QSize( 1350, 800 ) );
    adjustSize();
 
@@ -362,21 +365,38 @@
     {
       // Depending on from we jump to InitDialogue, we may need to stop/reset current stages:
       // E.g., LIVE_UPDATE: stop all timers, reset GUI etc..
+      // Maybe a warning message "You are going to leave this panel.." needs to be shown 
+      
+      if ( curr_panx == 1 )
+	{
+	  //Fully set: nothing needs to be done/reset:
+	  qDebug() << "Jumping from EXPERIMENT.";
+	}
+
+      if ( curr_panx == 2 )
+	{
+	  // 2 cases:
+	  /* 
+	        1. Avaiting for run to be launched ("Back to Managing Optima Runs") -- SET
+		2. More complex: Back to Managing runs from active LIVE_UPDATE stage -- stop all timers and other processes...
+	  */ 
+	  qDebug() << "Jumping from LIVE UPDATE.";
+	}
+
+      if ( curr_panx == 3 )
+	{
+	  qDebug() << "Jumping from LIMS IMPORT.";
+	  //Send sigmal to reset LIMS IMPORT tab... Fully SET
+	  emit reset_lims_import();
+	}
+      
+      if ( curr_panx == 4 )
+	qDebug() << "Jumping from EDITING.";
+      
       epanInit  ->initAutoflowPanel();
     }
-  // else
-  //   {
-  //     if ( epanInit->initMsgNorecOpen )
-  // 	{
-  // 	  epanInit->msg_norec->reject();
-  // 	  //epanInit->msg_norec->close();
-  // 	}
-  //     if ( epanInit->initMsgNorecDelOpen )
-  // 	epanInit->msg_norec_del->close();
-  //   }
-  
-  
-  curr_panx = panx;         // Set new current panel
+
+  //curr_panx = panx;         // Set new current panel
 }
 
 void US_ComProjectMain::closeEvent( QCloseEvent* event )
@@ -609,7 +629,7 @@
 {
   tabWidget->setCurrentIndex( 0 );   
   //epanInit  ->initAutoflowPanel();  //DO NOT Duplicate - was called in previous line while changing Tab!!!
-  qDebug() << "XPN viwer closed!";
+  qDebug() << "XPN viewer /US_convert  closed!";
   qApp->processEvents();
   
 
@@ -1431,7 +1451,6 @@
    sdiag = new US_ExperimentMain;
 
    sdiag->setParent(this, Qt::Widget);
-
       
    connect( sdiag, SIGNAL( us_exp_is_closed() ), this, SLOT( us_exp_is_closed_set_button() ) );
    //connect( this,  SIGNAL( set_auto_mode() ),   sdiag, SLOT( auto_mode_passed() ) );
@@ -1515,12 +1534,15 @@
   mainw->logWidget->append("US_Experiment has been closed!");
 }
 
-//Clear Experiment after manual abortion & data not saved .. 
-void US_ExperGui::clear_experiment( QString & protocolName )
-{
-  emit reset_experiment( protocolName );
-}
 
+//Obsolete
+// //Clear Experiment after manual abortion & data not saved .. 
+// void US_ExperGui::clear_experiment( QString & protocolName )
+// {
+//   emit reset_experiment( protocolName );
+// }
+
+
 //Upon clearing Experiment .. 
 void US_ExperGui::exp_cleared( void )
 {
@@ -1755,10 +1777,11 @@
    //connect( this, SIGNAL( to_post_prod( QString &, QString &, QString &, QString & ) ), sdiag, SLOT( import_data_auto ( QString &, QString &, QString &, QString & )  ) );
    connect( this, SIGNAL( to_post_prod( QMap < QString, QString > & ) ), sdiag, SLOT( import_data_auto ( QMap < QString, QString > & )  ) );
    
+   connect( this, SIGNAL( reset_lims_import_passed( ) ), sdiag, SLOT( reset_limsimport_panel ( )  ) );
+   
    //ALEXEY: switch to Editing
    connect( sdiag, SIGNAL( saving_complete_auto( QString &, QString & ) ), this, SLOT( to_editing ( QString &, QString &) ) );
    //ALEXEY: for academic ver. switch back to experiment
-   //connect( sdiag, SIGNAL( saving_complete_back_to_exp( QString & ) ), this, SLOT( to_experiment (  QString & ) ) );
    connect( sdiag, SIGNAL( saving_complete_back_to_initAutoflow( ) ), this, SLOT( to_initAutoflow ( ) ) );
    
    offset = 0;
@@ -1778,6 +1801,11 @@
 //   emit to_post_prod( currDir, protocolName, invID_passed, correctRadii );
 // }
 
+void US_PostProdGui::reset_lims_import( void )
+{
+  emit reset_lims_import_passed();
+}
+
 void US_PostProdGui::import_data_us_convert(  QMap < QString, QString > & protocol_details )
 {
   emit to_post_prod( 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-23 07:35:43 UTC (rev 2797)
+++ trunk/programs/us_com_project/us_com_project_gui.h	2019-07-24 06:40:06 UTC (rev 2798)
@@ -148,7 +148,7 @@
       void manageExperiment ( void );        // Slot for exp.  button clicked
       void us_exp_is_closed_set_button( void );
       void to_live_update( QMap < QString, QString > & protocol_details );
-      void clear_experiment( QString & protocolName);
+      //void clear_experiment( QString & protocolName);
       void exp_cleared( void );
       void pass_used_instruments( QStringList & );
       void expsetup_msg_closed( void );
@@ -218,6 +218,7 @@
     void to_editing( QString & currDir, QString & protocolName );
     //void to_experiment( QString & protocolName );
     void to_initAutoflow( void );
+    void reset_lims_import( void );
     
   signals:
     //void to_post_prod( QString & currDir, QString & protocolName, QString & invID_passed, QString & correctRadii  );
@@ -226,6 +227,7 @@
     void switch_to_editing( QString & currDir, QString & protocolName );
     //void switch_to_exp( QString & protocolName );
     void switch_to_initAutoflow( void);
+    void reset_lims_import_passed( void );
 };
 
 
@@ -393,9 +395,10 @@
   void import_data_us_convert(  QMap < QString, QString > & );
 
   void pass_to_editing( QString & currDir, QString & protocolName );
-  void clear_experiment( QString & protocolName);
+  //void clear_experiment( QString & protocolName);
   void us_comproject_closed( void );
   void pass_used_instruments( QStringList & );
+  void reset_lims_import( void );
 };
 
 

Modified: trunk/programs/us_convert/us_convert_gui.cpp
===================================================================
--- trunk/programs/us_convert/us_convert_gui.cpp	2019-07-23 07:35:43 UTC (rev 2797)
+++ trunk/programs/us_convert/us_convert_gui.cpp	2019-07-24 06:40:06 UTC (rev 2798)
@@ -1160,6 +1160,18 @@
    data_plot->setTitle( tr( "Absorbance Data" ) );
 }
 
+//
+void US_ConvertGui::reset_limsimport_panel( void )
+{
+  qDebug() << "Resetting panel BEFORE going to Manage runs... ";
+  
+  resetAll_auto( );
+  //emit saving_complete_back_to_initAutoflow( ); // Not needed...
+  
+  qDebug() << "LIMS IMPROT reset ..";
+}
+
+
 void US_ConvertGui::resetAll_auto( void )
 {
    QApplication::restoreOverrideCursor();
@@ -1407,6 +1419,15 @@
      qDebug() << "IMPORT MWL auto...";
       importMWL();
 
+      //ALEXEY: For autoflow: Reset to-do list && maybe solutions, triple desc.
+      if ( us_convert_auto_mode ) 
+	{
+	  lw_todoinfo->clear();
+	  le_solutionDesc ->setText( "" );
+	  le_description  ->setText( "" );
+	  le_centerpieceDesc -> setText( "");
+	}
+      
       editRuninfo_auto();
       readProtocol_auto();
       getLabInstrumentOperatorInfo_auto();
@@ -1419,6 +1440,15 @@
      qDebug() << "IMPORT AUC auto...";
       importAUC();
 
+      //ALEXEY: For autoflow: Reset to-do list && maybe solutions, triple desc.
+      if ( us_convert_auto_mode ) 
+	{
+	  lw_todoinfo->clear();
+	  le_solutionDesc ->setText( "" );
+	  le_description  ->setText( "" );
+	  le_centerpieceDesc -> setText( "");
+	}
+      
       editRuninfo_auto();
       readProtocol_auto();
       getLabInstrumentOperatorInfo_auto();

Modified: trunk/programs/us_convert/us_convert_gui.h
===================================================================
--- trunk/programs/us_convert/us_convert_gui.h	2019-07-23 07:35:43 UTC (rev 2797)
+++ trunk/programs/us_convert/us_convert_gui.h	2019-07-24 06:40:06 UTC (rev 2798)
@@ -369,6 +369,7 @@
 
       void resetAll          ( void );
       void resetAll_auto     ( void );
+      void reset_limsimport_panel( void );
       
       void source_changed    ( bool );
       void update_disk_db    ( bool );

Modified: trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
===================================================================
--- trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-07-23 07:35:43 UTC (rev 2797)
+++ trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-07-24 06:40:06 UTC (rev 2798)
@@ -190,7 +190,7 @@
 
 void WheelBox::setTemp( double v )
 {
-  qDebug() << "Setting Temperature!!!";
+  qDebug() << "Setting Temperature!!! Value: " << v ;
   d_thermo->setValue( v );
 
   setNum( v );
@@ -1940,13 +1940,18 @@
       //ALEXEY: This timer cannot be stopped from another thread, but can be dealt with signal/slot upon Qthread termination..
       //        disconnection maybe enough...
       disconnect(timer_check_sysdata, SIGNAL(timeout()), 0, 0);   //Disconnect timer from anything
-      sys_thread->quit(); // ALEXEY: does this emit Qthread's finished() signal??
+      //Maybe add this?
+      sys_thread->quit();     // ALEXEY: I think this emits Qthread's finished() signal... (connected to stopping timer_sysdata)
+      qApp->processEvents();  // <-- IMPORTANT to process event loop while stopping thread!!!
       
+      if ( sys_thread->isFinished() )
+	qDebug() << "QThread STOPPED !!! ";
+      
+      if ( !timer_check_sysdata->isActive() )
+	qDebug() << "QTimer timer_check_sysdata STOPPED by quitting the QThread !!! ";
+
       qDebug() << "ExpStat: 5/0  - sys_timer STOPPED here: ";
-
-      if ( !timer_check_sysdata->isActive() )
-	 qDebug() << "QTimer timer_check_sysdata STOPPED by quitting the QThread !!! ";
-	
+      
       rpm_box->setSpeed( 0 );
       le_remaining->setText( "00:00:00" );
       qApp->processEvents();
@@ -2107,12 +2112,7 @@
    			  .arg(RunName).arg(OptimaName) );
 
   msg_data_avail->setWindowTitle(tr("Live Update"));
-  //msg_data_avail->setText(tr( "Run named %1 was submitted to:\n\n"
-  // 		              "%2 \n\n"
-  // 			      "Please start this method scan from the instrument panel. \n\n\n")
-  //
-  //                      .arg(RunName).arg(OptimaName) );
-
+  
   if ( runID_passed.isEmpty() || runID_passed == "NULL" )
     {
       msg_data_avail->exec();
@@ -2418,6 +2418,8 @@
    //ALEXEY: Add Exp. Abortion Exception HERE... 
    if ( CheckExpComplete_auto( RunID_to_retrieve ) == 0 ) //ALEXEY should be == 3 as per documentation
      {
+       qDebug() << "ABORTION IN EARLY STAGE...";
+       
        experimentAborted  = true;
        
        timer_all_data_avail->stop();
@@ -3830,9 +3832,12 @@
 	  timer_data_reload->stop();
 	  disconnect(timer_data_reload, SIGNAL(timeout()), 0, 0);   //Disconnect timer from anything
 
+	  qDebug() << "STOPPING timer_data_reload...";
 
 	  if ( !timer_check_sysdata->isActive()  ) // Check if sys_data Timer is stopped
 	    {
+
+	      qDebug() << "Exporing/Writing to disk...";
 	      // ALEXEY Export AUC data: devise export_auc_auto() function which would return directory name with saved data - to pass to emit signal below... 
 	      export_auc_auto();
 	  



More information about the us-commits mailing list