@@ -9716,61 +9716,51 @@ void InterSpec::programaticallyCloseAutoRemoteRidResultDialog()
97169716#if ( USE_REL_ACT_TOOL )
97179717RelActAutoGui *InterSpec::relActAutoWindow ( const bool createIfNotOpen )
97189718{
9719+ assert ( (!m_relActAutoGui) == (!m_relActAutoWindow) );
9720+
97199721 if ( !createIfNotOpen )
97209722 return m_relActAutoGui;
97219723
9722- if ( !m_relActAutoGui )
9724+ if ( m_relActAutoGui )
9725+ return m_relActAutoGui;
9726+
9727+ const std::pair<RelActAutoGui *,AuxWindow *> widgets = RelActAutoGui::createWindow ( this );
9728+ if ( !widgets.first || !widgets.second )
9729+ return m_relActAutoGui;
9730+
9731+ m_relActAutoGui = widgets.first ;
9732+ m_relActAutoWindow = widgets.second ;
9733+
9734+ m_relActAutoWindow->finished ().connect ( boost::bind ( &InterSpec::handleRelActAutoClose, this ) );
9735+
9736+ try
97239737 {
9724- const std::pair<RelActAutoGui *,AuxWindow *> widgets = RelActAutoGui::createWindow ( this );
9725- if ( !widgets.first || !widgets.second )
9726- return m_relActAutoGui;
9727-
9728- m_relActAutoGui = widgets.first ;
9729- m_relActAutoWindow = widgets.second ;
9730-
9731- m_relActAutoWindow->finished ().connect ( boost::bind ( &InterSpec::handleRelActAutoClose, this ) );
9732-
9733- try
9738+ std::unique_ptr<RelActCalcAuto::RelActAutoGuiState> relActState = m_dataMeasurement
9739+ ? m_dataMeasurement->getRelActAutoGuiState ()
9740+ : nullptr ;
9741+ if ( relActState )
97349742 {
9735- std::unique_ptr<RelActCalcAuto::RelActAutoGuiState> relActState = m_dataMeasurement
9736- ? m_dataMeasurement->getRelActAutoGuiState ()
9737- : nullptr ;
9738- if ( relActState )
9739- {
9740- m_relActAutoGui->deSerialize ( *relActState );
9741- m_relActAutoGui->checkIfInUserConfigOrCreateOne ( true );
9742- }
9743- }catch ( std::exception &e )
9744- {
9745- passMessage ( " Error setting "Isotopics from nuclides" state to previously used state: "
9746- + std::string (e.what ()), WarningWidget::WarningMsgHigh );
9747-
9743+ m_relActAutoGui->deSerialize ( *relActState );
9744+ m_relActAutoGui->checkIfInUserConfigOrCreateOne ( true );
9745+ }
9746+ }catch ( std::exception &e )
9747+ {
9748+ passMessage ( " Error setting "Isotopics from nuclides" state to previously used state: "
9749+ + std::string (e.what ()), WarningWidget::WarningMsgHigh );
9750+
97489751#if ( PERFORM_DEVELOPER_CHECKS )
9749- log_developer_error ( __func__, (" Error deserializing Rel. Act. GUI state: " + string (e.what ())).c_str () );
9752+ log_developer_error ( __func__, (" Error deserializing Rel. Act. GUI state: " + string (e.what ())).c_str () );
97509753#endif
9751-
9752- // assert( 0 );
9753- }// try / catch
9754-
9755- if ( m_undo && m_undo->canAddUndoRedoNow () )
9756- {
9757- auto undo = [this ](){ handleRelActAutoClose (); };
9758- auto redo = [this ](){ relActAutoWindow (true ); };
9759- m_undo->addUndoRedoStep ( std::move (undo), std::move (redo), " Show 'Isotopics from nuclides' tool" );
9760- }// if( m_undo && !m_undo->canAddUndoRedoNow() )
9761-
9762- // Since we dont have undo/redo implemented for RelActAuto - we will block it entirely
9763- new UndoRedoManager::BlockGuiUndoRedo ( m_relActAutoGui );
9764- }else
9765- {
9766- const double windowWidth = 0.95 * renderedWidth ();
9767- const double windowHeight = 0.95 * renderedHeight ();
9768- m_relActAutoWindow->resizeWindow ( windowWidth, windowHeight );
97699754
9770- m_relActAutoWindow->resizeToFitOnScreen ();
9771- m_relActAutoWindow->show ();
9772- m_relActAutoWindow->centerWindow ();
9773- }// if( !m_shieldingSourceFit )
9755+ // assert( 0 );
9756+ }// try / catch
9757+
9758+ if ( m_undo && m_undo->canAddUndoRedoNow () )
9759+ {
9760+ auto undo = [this ](){ handleRelActAutoClose (); };
9761+ auto redo = [this ](){ relActAutoWindow (true ); };
9762+ m_undo->addUndoRedoStep ( std::move (undo), std::move (redo), " Show 'Isotopics from nuclides' tool" );
9763+ }// if( m_undo && !m_undo->canAddUndoRedoNow() )
97749764
97759765 assert ( m_relActAutoMenuItem );
97769766 m_relActAutoMenuItem->disable ();
0 commit comments