X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_StricklerTableOp.cxx;h=2433bca6e6ef285602b853c2162c5b3172464cb8;hb=36005df362d7bee6db949b079960cec90333aed2;hp=464b74854a8da9ce893e9a72461bf31b6564cb10;hpb=703cdef641ec2ac5c64e806e7785e64ac802973f;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_StricklerTableOp.cxx b/src/HYDROGUI/HYDROGUI_StricklerTableOp.cxx index 464b7485..2433bca6 100644 --- a/src/HYDROGUI/HYDROGUI_StricklerTableOp.cxx +++ b/src/HYDROGUI/HYDROGUI_StricklerTableOp.cxx @@ -19,8 +19,12 @@ #include "HYDROGUI_StricklerTableOp.h" #include "HYDROGUI_StricklerTableDlg.h" -#include "HYDROGUI_Tool.h" #include "HYDROGUI_DataObject.h" +#include "HYDROGUI_Module.h" +#include "HYDROGUI_OCCDisplayer.h" +#include "HYDROGUI_Operations.h" +#include "HYDROGUI_Tool.h" +#include "HYDROGUI_UpdateFlags.h" #include @@ -28,184 +32,186 @@ #include -HYDROGUI_StricklerTableOp::HYDROGUI_StricklerTableOp( HYDROGUI_Module* theModule, bool theIsEdit ) -: HYDROGUI_Operation( theModule ), - myIsEdit( theIsEdit ) +HYDROGUI_StricklerTableOp::HYDROGUI_StricklerTableOp( HYDROGUI_Module* theModule, int theType ) + : HYDROGUI_Operation( theModule ), + myType( theType ) { - setName( theIsEdit ? tr( "EDIT_STRICKLER_TABLE" ) : tr( "IMPORT_STRICKLER_TABLE" ) ); + setName( isEdit() ? tr( "EDIT_STRICKLER_TABLE" ) : + ( isImport() ? tr( "IMPORT_STRICKLER_TABLE" ) : tr( "EXPORT_STRICKLER_TABLE" ) ) ); } - HYDROGUI_StricklerTableOp::~HYDROGUI_StricklerTableOp() { } void HYDROGUI_StricklerTableOp::startOperation() { - HYDROGUI_Operation::startOperation(); + HYDROGUI_Operation::startOperation(); - HYDROGUI_StricklerTableDlg* aPanel = (HYDROGUI_StricklerTableDlg*)inputPanel(); - aPanel->reset(); - aPanel->setIsEdit( myIsEdit ); + HYDROGUI_StricklerTableDlg* aPanel = (HYDROGUI_StricklerTableDlg*)inputPanel(); + aPanel->reset(); - if( myIsEdit ) - { - if ( isApplyAndClose() ) - myEditedObject = Handle(HYDROData_StricklerTable)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); - if ( !myEditedObject.IsNull() ) + if ( !isImport() && isApplyAndClose() ) + myObject = Handle(HYDROData_StricklerTable)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); + + if ( isEdit() ) { - // Edit selected Strickler table - - aPanel->setStricklerTableName( myEditedObject->GetName() ); - - // Get Strickler table data from the data model - // ... - - // The code below is a sample of data filling Strickler table - HYDROGUI_StricklerTableDlg::StricklerCoefficientList aData; - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef1( "Zones de champs, prairies, sans cultures", 20.0 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef2( "Zones de champs cultivé à végétation basse", 17.5 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef3( "Zones de champs cultivé à végétation haute", 12.5 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef4( "Zones d'arbustes, de sous-bois", 10.0 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef5( "Zones à faible urbanization (bourg)", 9.0 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef6( "Zones à forte urbanization (agglomération)", 9.0 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef7( "Canaux naturels", 35.0 ); - HYDROGUI_StricklerTableDlg::StricklerCoefficient aStricklerCoef8( "Canaux artificiels en béton", 65.0 ); - aData.append( aStricklerCoef1 ); - aData.append( aStricklerCoef2 ); - aData.append( aStricklerCoef3 ); - aData.append( aStricklerCoef4 ); - aData.append( aStricklerCoef5 ); - aData.append( aStricklerCoef6 ); - aData.append( aStricklerCoef7 ); - aData.append( aStricklerCoef8 ); - aPanel->setData(aData); + if ( !myObject.IsNull() ) + { + // Edit selected Strickler table + aPanel->setTableName( myObject->GetName() ); + aPanel->setGuiData( myObject ); + } } - else + else if ( isExport() ) { - // Import Strickler table from file + if ( !myObject.IsNull() ) + aPanel->setTableName( myObject->GetName() ); } - } + aPanel->setTableNameReadOnly( isExport() ); } void HYDROGUI_StricklerTableOp::abortOperation() { - //... - - HYDROGUI_Operation::abortOperation(); + HYDROGUI_Operation::abortOperation(); } void HYDROGUI_StricklerTableOp::commitOperation() { - //... - - HYDROGUI_Operation::commitOperation(); + HYDROGUI_Operation::commitOperation(); } HYDROGUI_InputPanel* HYDROGUI_StricklerTableOp::createInputPanel() const { - HYDROGUI_StricklerTableDlg* aPanel = new HYDROGUI_StricklerTableDlg( module(), getName() ); - connect( aPanel, SIGNAL( fileSelected( const QString& ) ), SLOT( onFileSelected() ) ); - return aPanel; + int type = isEdit() ? HYDROGUI_StricklerTableDlg::Edit : ( isImport() ? HYDROGUI_StricklerTableDlg::Import : HYDROGUI_StricklerTableDlg::Export ); + HYDROGUI_StricklerTableDlg* aPanel = new HYDROGUI_StricklerTableDlg( module(), getName(), type ); + connect( aPanel, SIGNAL( fileSelected( const QString& ) ), SLOT( onFileSelected() ) ); + return aPanel; } bool HYDROGUI_StricklerTableOp::processApply( int& theUpdateFlags, QString& theErrorMsg, - QStringList& theBrowseObjectsEntries ) + QStringList& theBrowseObjectsEntries ) { - HYDROGUI_StricklerTableDlg* aPanel = ::qobject_cast( inputPanel() ); - if ( !aPanel ) - return false; - - QString aFilePath; - if( !myIsEdit ) - { - aFilePath = aPanel->getFileName(); - if ( aFilePath.isEmpty() ) + HYDROGUI_StricklerTableDlg* aPanel = ::qobject_cast( inputPanel() ); + if ( !aPanel ) + return false; + + QString aFilePath; + if( !isEdit() ) + { + aFilePath = aPanel->getFileName(); + if ( aFilePath.isEmpty() ) + { + theErrorMsg = tr( "SELECT_STRICKLER_TABLE_FILE" ).arg( aFilePath ); + return false; + } + } + + QString aStricklerTableName = aPanel->getTableName().simplified(); + if ( aStricklerTableName.isEmpty() ) + { + theErrorMsg = tr( "INCORRECT_OBJECT_NAME" ); + return false; + } + + if ( isImport() || ( isEdit() && !myObject.IsNull() && myObject->GetName() != aStricklerTableName ) ) + { + // check that there are no other objects with the same name in the document + Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), aStricklerTableName ); + if( !anObject.IsNull() ) + { + theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( aStricklerTableName ); + return false; + } + } + + Handle(HYDROData_StricklerTable) aStricklerTableObj; + if ( isImport() ) + { + aStricklerTableObj = Handle(HYDROData_StricklerTable)::DownCast( doc()->CreateObject( KIND_STRICKLER_TABLE ) ); + QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aStricklerTableObj ); + theBrowseObjectsEntries.append( anEntry ); + } + else + aStricklerTableObj = myObject; + + if ( aStricklerTableObj.IsNull() ) + return false; + + if ( isExport() ) + { + bool res = false; + QString aFilePath = aPanel->getFileName().simplified(); + if ( !aFilePath.isEmpty() ) + res = aStricklerTableObj->Export( aFilePath ); + return res; + } + + startDocOperation(); + + aStricklerTableObj->SetName( aStricklerTableName ); + + if( isEdit() ) + { + // Get data from input panel's table and save it into data model object + aPanel->getGuiData( aStricklerTableObj ); + } + else { - theErrorMsg = tr( "SELECT_STRICKLER_TABLE_FILE" ).arg( aFilePath ); - return false; + // Import data from Strickler table file into data model object + aStricklerTableObj->Import( aFilePath ); } - } - - QString aStricklerTableName = aPanel->getStricklerTableName().simplified(); - if ( aStricklerTableName.isEmpty() ) - { - theErrorMsg = tr( "INCORRECT_OBJECT_NAME" ); - return false; - } - - if( !myIsEdit || ( !myEditedObject.IsNull() && myEditedObject->GetName() != aStricklerTableName ) ) - { - // check that there are no other objects with the same name in the document - Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), aStricklerTableName ); - if( !anObject.IsNull() ) + + aStricklerTableObj->Update(); + + commitDocOperation(); + + if( !isEdit() ) { - theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( aStricklerTableName ); - return false; + QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aStricklerTableObj ); + theBrowseObjectsEntries.append( anEntry ); + } else { + module()->getOCCDisplayer()->SetToUpdateColorScale(); } - } - - Handle(HYDROData_StricklerTable) aStricklerTableObj; - if( myIsEdit ) - aStricklerTableObj = myEditedObject; - else - { - aStricklerTableObj = Handle(HYDROData_StricklerTable)::DownCast( doc()->CreateObject( KIND_STRICKLER_TABLE ) ); - QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aStricklerTableObj ); - theBrowseObjectsEntries.append( anEntry ); - } - - if( aStricklerTableObj.IsNull() ) - return false; - - aStricklerTableObj->SetName( aStricklerTableName ); - - if( myIsEdit ) - { - // Get data from input panel's table and save it into data model object - - // Check, that type names are unique within the current - // Strickler table and show error message, if needed - - //... - } - else - { - // Import data from Strickler table file into data model object - aStricklerTableObj->Import( HYDROGUI_Tool::ToAsciiString( aFilePath ) ); - } - - aStricklerTableObj->Update(); - - if( !myIsEdit ) - { - QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aStricklerTableObj ); - theBrowseObjectsEntries.append( anEntry ); - } - - theUpdateFlags |= UF_ObjBrowser; - - return true; + + theUpdateFlags |= UF_ObjBrowser | UF_OCCViewer; + + return true; } void HYDROGUI_StricklerTableOp::onFileSelected() { - HYDROGUI_StricklerTableDlg* aPanel = - ::qobject_cast( inputPanel() ); - if ( !aPanel ) - return; - - QString anStricklerTableName = aPanel->getStricklerTableName().simplified(); - if ( anStricklerTableName.isEmpty() ) - { - anStricklerTableName = aPanel->getFileName(); - if ( !anStricklerTableName.isEmpty() ) { - anStricklerTableName = QFileInfo( anStricklerTableName ).baseName(); - } + HYDROGUI_StricklerTableDlg* aPanel = + ::qobject_cast( inputPanel() ); + if ( !aPanel ) + return; - if ( anStricklerTableName.isEmpty() ) { - anStricklerTableName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_STRICKLER_TABLE_NAME" ) ); + QString anStricklerTableName = aPanel->getTableName().simplified(); + if ( anStricklerTableName.isEmpty() ) + { + anStricklerTableName = aPanel->getFileName(); + if ( !anStricklerTableName.isEmpty() ) { + anStricklerTableName = QFileInfo( anStricklerTableName ).baseName(); + } + + if ( anStricklerTableName.isEmpty() ) { + anStricklerTableName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_STRICKLER_TABLE_NAME" ) ); + } + aPanel->setTableName( anStricklerTableName ); } - aPanel->setStricklerTableName( anStricklerTableName ); - } +} + +bool HYDROGUI_StricklerTableOp::isEdit() const +{ + return myType == EditStricklerTableId; +} + +bool HYDROGUI_StricklerTableOp::isImport() const +{ + return myType == ImportStricklerTableFromFileId; +} + +bool HYDROGUI_StricklerTableOp::isExport() const +{ + return myType == ExportStricklerTableFromFileId; }