X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Operation.cxx;h=bdbd6fa05ffd1c86b4ea310a681dbf3f63b3ac1a;hb=f34b90e9e4e02ba65419134d5d37a2e42aecfabf;hp=3183b3b82b8af70118e8c0409844a9e51e0f5971;hpb=35a75ba275261aff7c8c48c0d16842dafd455007;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Operation.cxx b/src/HYDROGUI/HYDROGUI_Operation.cxx index 3183b3b8..bdbd6fa0 100644 --- a/src/HYDROGUI/HYDROGUI_Operation.cxx +++ b/src/HYDROGUI/HYDROGUI_Operation.cxx @@ -41,8 +41,13 @@ HYDROGUI_Operation::HYDROGUI_Operation( HYDROGUI_Module* theModule ) : LightApp_Operation(), myModule( theModule ), - myPanel( 0 ) + myPanel( 0 ), + myIsPrintErrorMessage( true ) { + connect( this, SIGNAL( helpContextModule( const QString&, const QString&, + const QString& ) ), + theModule->application(), SLOT( onHelpContextModule( const QString&, + const QString&, const QString& ) ) ); } HYDROGUI_Operation::~HYDROGUI_Operation() @@ -66,6 +71,7 @@ HYDROGUI_InputPanel* HYDROGUI_Operation::inputPanel() const ( ( HYDROGUI_Operation* )this )->myPanel = createInputPanel(); connect( myPanel, SIGNAL( panelApply() ), this, SLOT( onApply() ) ); connect( myPanel, SIGNAL( panelCancel() ), this, SLOT( onCancel() ) ); + connect( myPanel, SIGNAL( panelHelp() ), this, SLOT( onHelp() ) ); } return myPanel; } @@ -94,17 +100,25 @@ void HYDROGUI_Operation::startOperation() void HYDROGUI_Operation::abortOperation() { LightApp_Operation::abortOperation(); - - if( inputPanel() ) - inputPanel()->hide(); + closeInputPanel(); } void HYDROGUI_Operation::commitOperation() { LightApp_Operation::commitOperation(); + closeInputPanel(); +} - if( inputPanel() ) - inputPanel()->hide(); +void HYDROGUI_Operation::setDialogActive( const bool active ) +{ + LightApp_Operation::setDialogActive( active ); + if( myPanel ) + { + if( active ) + { + myPanel->show(); + } + } } HYDROGUI_InputPanel* HYDROGUI_Operation::createInputPanel() const @@ -112,6 +126,16 @@ HYDROGUI_InputPanel* HYDROGUI_Operation::createInputPanel() const return NULL; } +void HYDROGUI_Operation::closeInputPanel() +{ + if( myPanel ) + { + myModule->getApp()->desktop()->removeDockWidget( myPanel ); + delete myPanel; + myPanel = 0; + } +} + bool HYDROGUI_Operation::processApply( int& theUpdateFlags, QString& theErrorMsg ) { @@ -125,19 +149,22 @@ void HYDROGUI_Operation::processCancel() void HYDROGUI_Operation::startDocOperation() { // Open transaction in the model document - doc()->StartOperation(); + if ( !doc()->IsOperation() ) + doc()->StartOperation(); } void HYDROGUI_Operation::abortDocOperation() { // Abort transaction in the model document - doc()->AbortOperation(); + if ( doc()->IsOperation() ) + doc()->AbortOperation(); } void HYDROGUI_Operation::commitDocOperation() { // Commit transaction in the model document - doc()->CommitOperation( HYDROGUI_Tool::ToExtString( getName() ) ); + if ( doc()->IsOperation() ) + doc()->CommitOperation( HYDROGUI_Tool::ToExtString( getName() ) ); } Handle_HYDROData_Document HYDROGUI_Operation::doc() const @@ -182,13 +209,34 @@ void HYDROGUI_Operation::onApply() else { abortDocOperation(); + printErrorMessage( anErrorMsg ); + + // If the operation has no input panel - do abort + if ( !inputPanel() ) { + abort(); + } + } +} + +void HYDROGUI_Operation::setPrintErrorMessage( const bool theIsPrint ) +{ + myIsPrintErrorMessage = theIsPrint; +} + +void HYDROGUI_Operation::printErrorMessage( const QString& theErrorMsg ) +{ + if ( myIsPrintErrorMessage ) + { QString aMsg = tr( "INPUT_VALID_DATA" ); - if( !anErrorMsg.isEmpty() ) - aMsg.prepend( anErrorMsg + "\n" ); + if( !theErrorMsg.isEmpty() ) + aMsg.prepend( theErrorMsg + "\n" ); SUIT_MessageBox::critical( module()->getApp()->desktop(), tr( "INSUFFICIENT_INPUT_DATA" ), - aMsg ); + aMsg ); + } + + myIsPrintErrorMessage = true; } void HYDROGUI_Operation::onCancel() @@ -196,3 +244,26 @@ void HYDROGUI_Operation::onCancel() processCancel(); abort(); } + +void HYDROGUI_Operation::onHelp() +{ + emit helpContextModule( getHelpComponent(), getHelpFile(), getHelpContext() ); +} + +QString HYDROGUI_Operation::getHelpComponent() const +{ + return module()->moduleName(); +} + +QString HYDROGUI_Operation::getHelpFile() const +{ + QString aFileName = ((myName.isEmpty())? operationName() : myName); + return aFileName.replace(QRegExp("\\s"), "_").append(".html"); +} + +QString HYDROGUI_Operation::getHelpContext() const +{ + return QString(); +} + +