[us-commits] r2828 - trunk/programs/us_convert

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Thu Aug 29 21:20:16 MDT 2019


Author: alexey
Date: 2019-08-30 03:20:14 +0000 (Fri, 30 Aug 2019)
New Revision: 2828

Modified:
   trunk/programs/us_convert/us_convert_gui.cpp
   trunk/programs/us_convert/us_convert_gui.h
Log:
us_convert: a bug fixed for MWL data while setting lambda_start/end and lambda_plot...



Modified: trunk/programs/us_convert/us_convert_gui.cpp
===================================================================
--- trunk/programs/us_convert/us_convert_gui.cpp	2019-08-27 13:05:47 UTC (rev 2827)
+++ trunk/programs/us_convert/us_convert_gui.cpp	2019-08-30 03:20:14 UTC (rev 2828)
@@ -4014,6 +4014,8 @@
       if ( slambda != wvs[ 0 ]  ||  elambda != wvs[ nlambda - 1 ] )
       {  // A change in lambda range requires a general reset
          setTripleInfo();
+
+	 qDebug() << "Calling setTripleInfo()";
       }
    }
 
@@ -4079,7 +4081,7 @@
 
          cb_lambplot->setCurrentIndex( nlambda / 2 );
 
-         show_mwl_control( true );
+	 show_mwl_control( true );
          mwl_connect( true );
       }
 
@@ -4113,19 +4115,41 @@
       mwl_connect( false );
       cb_lambplot->clear();
 
+      // //ALEXEY: also clear cb_lambstrt && cb_lambstop
+      // cb_lambstrt->clear();
+      // cb_lambstop->clear();
+
       for ( int wvx = 0; wvx < nlambda; wvx++ )
       {  // Rebuild the plot lambda list
+	
          int ilamb      = exp_lambdas[ wvx ];
          cb_lambplot->addItem( QString::number( ilamb ) );
 
+	 // //ALEXEY: Also regenerate cb_lambstrt && cb_lambstop - for selected channel:
+	 // cb_lambstrt->addItem( QString::number( ilamb ) );
+	 // cb_lambstop->addItem( QString::number( ilamb ) );
+
+	 
          if ( ilamb == plambda )  pltx = wvx;
+
+	 qDebug() << "Lambda MWL " << wvx << ": " << exp_lambdas[ wvx ] << "; INDEX: " << pltx; 
       }
 
       // Re-do selections for lambda start,stop,plot
+
+      //ALEXEY: set lambstart/stop based on selected channel, not all wavelengths 
+      // cb_lambstrt->setCurrentIndex( 0 );
+      // cb_lambstop->setCurrentIndex( nlambda - 1 );
       cb_lambstrt->setCurrentIndex( all_lambdas.indexOf( slambda ) );
       cb_lambstop->setCurrentIndex( all_lambdas.indexOf( elambda ) );
+
+      
+      
+     
       cb_lambplot->setCurrentIndex( pltx );
       mwl_connect( true );
+
+      qDebug() << "Inside setTripleInfo(); cb_lambplot->currentIndex() = " << cb_lambplot->currentIndex();
    }
 
    else
@@ -6416,9 +6440,36 @@
 void US_ConvertGui::lambdaStartChanged( int value )
 {
 DbgLv(1) << "lambdaStartChanged" << value;
+
+   //ALEXEY: compare slambda to the cb_lambplot->index(0).value: if <, setCurrentIndex() to index corresponding to this upper value
+   tripListx          = lw_triple->currentRow();
+   int slambda_lambplot = slambdas_per_channel[tripListx];
+   
    slambda       = cb_lambstrt->itemText( value ).toInt();
    elambda       = cb_lambstop->currentText()    .toInt();
-   tripListx     = lw_triple->currentRow();
+
+   qDebug() << "LAMBDA_STR_CHANGE: slambda_lambplot, slambda: " << slambda_lambplot << ", " << slambda;
+
+   if ( slambda < slambda_lambplot )
+   //if ( slambda < 280 )
+     {
+       int index_lambstrt = cb_lambstrt->findText( QString::number(slambda_lambplot) );
+
+       qDebug() << "LAMBDA_STR_CHANGE: index_lambstrt " << index_lambstrt;
+       slambda = slambda_lambplot;
+
+       cb_lambstrt->disconnect();
+       cb_lambstrt->setCurrentIndex( index_lambstrt );
+       connect( cb_lambstrt,  SIGNAL( currentIndexChanged( int    ) ),
+       		this,         SLOT  ( lambdaStartChanged ( int    ) ) );
+    
+     }
+
+   //slambda       = cb_lambstrt->itemText( value ).toInt();
+   //elambda       = cb_lambstop->currentText()    .toInt();
+   //tripListx     = lw_triple->currentRow();
+   /***************************************************************************************************/
+   
    int currChan  = out_chaninfo[ tripListx ].channelID;
 DbgLv(1) << "lambdaStartChanged" << value << "sl el tLx cCh"
  << slambda << elambda << tripListx << currChan;
@@ -6444,9 +6495,37 @@
 void US_ConvertGui::lambdaEndChanged( int value )
 {
 DbgLv(1) << "lambdaEndChanged" << value;
+
+     //ALEXEY: compare slambda to the cb_lambplot->index(0).value: if <, setCurrentIndex() to index corresponding to this upper value
+   tripListx            = lw_triple->currentRow();
+   int elambda_lambplot = elambdas_per_channel[tripListx];
+   
+   elambda       = cb_lambstop->itemText( value ).toInt();
    slambda       = cb_lambstrt->currentText()    .toInt();
-   elambda       = cb_lambstop->itemText( value ).toInt();
-   tripListx     = lw_triple->currentRow();
+
+   qDebug() << "LAMBDA_STOP_CHANGE: elambda_lambplot, elambda: " << elambda_lambplot << ", " << elambda;
+
+   if ( elambda > elambda_lambplot )
+     {
+       int index_lambstop = cb_lambstop->findText( QString::number(elambda_lambplot) );
+
+       qDebug() << "LAMBDA_STOP_CHANGE: index_lambstrt " << index_lambstop;
+       elambda = elambda_lambplot;
+
+       cb_lambstop->disconnect();
+       cb_lambstop->setCurrentIndex( index_lambstop );
+       connect( cb_lambstop,  SIGNAL( currentIndexChanged( int    ) ),
+       		this,         SLOT  ( lambdaEndChanged ( int    ) ) );
+    
+     }
+
+   //slambda       = cb_lambstrt->itemText( value ).toInt();
+   //elambda       = cb_lambstop->currentText()    .toInt();
+   //tripListx     = lw_triple->currentRow();
+   /***************************************************************************************************/
+ 
+
+
    int currChan  = out_chaninfo[ tripListx ].channelID;
 DbgLv(1) << "lEnChg:  val" << value << "sl el tLx cCh"
  << slambda << elambda << tripListx << currChan;
@@ -6490,6 +6569,11 @@
    int wvxmax  = cb_lambplot->count() - 1;
    int wvx     = qMin( wvxmax, cb_lambplot->currentIndex() + 1 );
 
+
+   qDebug() << "LAMBDA_NEXT: wvxmax  = cb_lambplot->count() - 1: " <<  wvxmax
+	    << ", cb_lambplot->currentIndex() + 1: " << cb_lambplot->currentIndex() + 1
+	    << ", wvx     = qMin( wvxmax, cb_lambplot->currentIndex() + 1 ): " << wvx;
+
    cb_lambplot->setCurrentIndex( wvx );
 }
 
@@ -6526,13 +6610,31 @@
       int tripx2     = out_chandatx[ tripnext  ];
       tripDatax      = tripx1 + cb_lambplot->currentIndex();
 
+      qDebug() << "TRIPLE_Index(): "
+	       << "tripnext = " << tripnext
+	       << ", tripx1 = " << tripx1
+	       << ", tripx2 = " << tripx2
+	       << ", tripDatax = tripx1 + cb_lambplot->currentIndex(): " << tripx1 << " + " << cb_lambplot->currentIndex();
+
+
+      //ALEXEY: the following part is buggy: commented out for now - seems to help with plotting/selecting triples for non-first channel for MWL case
+      //Ask Gary (if this section in place, it causes incorrect placement of cb_lambplot indexes, so no plots generated...)
+      /*
       if ( tripDatax >= tripx2 )
       {  // Less wavelengths in this channel than in the previous one
          tripDatax      = ( tripx1 + tripx2 ) / 2;
          mwl_connect( false );
          cb_lambplot->setCurrentIndex( ( tripDatax - tripx1 ) );
+
+
+      	 qDebug() << "Inside triple_index(): cb_lambplot->currentIndex() = " << cb_lambplot->currentIndex(); 
+      
          mwl_connect( true  );
       }
+      */
+      
+      qDebug() << "Inside triple_index(): cb_lambplot->currentIndex() = " << cb_lambplot->currentIndex(); 
+      
    }
 
    else
@@ -6754,10 +6856,37 @@
    {
       QString clamb = QString::number( exp_lambdas[ ii ] );
       cb_lambplot->addItem( clamb );
+
+      qDebug() << "MWL_SETUP: exp_lambda " << ii << ", " << clamb;
    }
 
    cb_lambplot->setCurrentIndex( nlambda / 2 );
 
+   //ALEXEY: need initial (non-modified by changing start/end lambdas) lambda boundaries for each channel
+   int nchans_int     = out_channels.count();
+   slambdas_per_channel.clear();
+   elambdas_per_channel.clear();
+   
+   if ( slambdas_per_channel.size() != nchans_int )
+     slambdas_per_channel.resize( nchans_int);
+
+   if ( elambdas_per_channel.size() != nchans_int )
+     elambdas_per_channel.resize( nchans_int);
+
+   
+   for ( int ccx = 0; ccx < nchans_int; ccx++ )
+     {  
+       int nlambda_per_channel        = mwl_data.lambdas( exp_lambdas, ccx );
+       if ( nlambda_per_channel  < 1 )
+         {
+	   break;
+         }
+       slambdas_per_channel[ccx]    = exp_lambdas[ 0 ];
+       elambdas_per_channel[ccx]    = exp_lambdas[ nlambda_per_channel - 1 ];
+     }
+   /****************************************************************************************************/
+   
+
    show_mwl_control( true );
    mwl_connect( true );
 

Modified: trunk/programs/us_convert/us_convert_gui.h
===================================================================
--- trunk/programs/us_convert/us_convert_gui.h	2019-08-27 13:05:47 UTC (rev 2827)
+++ trunk/programs/us_convert/us_convert_gui.h	2019-08-30 03:20:14 UTC (rev 2828)
@@ -246,6 +246,9 @@
       int           dbg_level;                 // Debug level
       int           impType;                   // Import type flag: 0,1,2 == Beck,MWL,AUC
 
+      QVector<int> slambdas_per_channel;
+      QVector<int> elambdas_per_channel;
+
       QString       currentDir;                // Current data file directory
       QString       saveDescription;           // Saved channel description
 



More information about the us-commits mailing list