From f3e5b525fd0ac3e1c08a321e1b78060ce627f194 Mon Sep 17 00:00:00 2001 From: asl Date: Wed, 18 Nov 2015 09:05:16 +0300 Subject: [PATCH] refs #717: automatic test on crash after add Strickler coefficient in GUI --- src/HYDROGUI/HYDROGUI_InputPanel.cxx | 18 +- src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx | 38 +- src/HYDROGUI/HYDROGUI_StricklerTableDlg.h | 19 +- src/HYDROGUI/HYDROGUI_Tool.cxx | 503 +----------------- src/HYDROGUI/HYDROGUI_Tool.h | 373 ++----------- src/HYDRO_tests/CMakeLists.txt | 3 +- src/HYDRO_tests/ExternalFiles.cmake | 13 + .../test_HYDROData_StricklerTable.cxx | 23 +- .../test_HYDROData_StricklerTable.h | 2 + 9 files changed, 131 insertions(+), 861 deletions(-) diff --git a/src/HYDROGUI/HYDROGUI_InputPanel.cxx b/src/HYDROGUI/HYDROGUI_InputPanel.cxx index f89653db..3ece51e8 100644 --- a/src/HYDROGUI/HYDROGUI_InputPanel.cxx +++ b/src/HYDROGUI/HYDROGUI_InputPanel.cxx @@ -16,18 +16,24 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HYDROGUI_InputPanel.h" -#include "HYDROGUI_Module.h" - -#include -#include - +#include +#ifndef LIGHT_MODE + #include + #include + #include +#endif + +#include #include #include #include HYDROGUI_InputPanel::HYDROGUI_InputPanel( HYDROGUI_Module* theModule, const QString& theTitle, bool doInitLayout ) +#ifdef LIGHT_MODE +: QDockWidget( 0 ), +#else : QDockWidget( theModule->application()->desktop() ), +#endif myModule( theModule ) { setFloating( false ); diff --git a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx index f98053b3..6b861056 100644 --- a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx @@ -16,29 +16,24 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HYDROGUI_StricklerTableDlg.h" - -#include "HYDROGUI_Module.h" -#include "HYDROGUI_Tool.h" -#include "HYDROGUI_LineEditDoubleValidator.h" -#include "HYDROData_StricklerTable.h" - -#include - -#include -#include +#include +#include +#include +#include #include -#include -#include - +#ifndef LIGHT_MODE +#include +#include +#endif +#include +#include #include -#include -#include -#include +#include #include +#include +#include #include -#include -#include +#include HYDROGUI_ColorDelegate::HYDROGUI_ColorDelegate( QWidget* theParent ) { @@ -93,8 +88,6 @@ HYDROGUI_StricklerTableDlg::HYDROGUI_StricklerTableDlg( HYDROGUI_Module* theModu : HYDROGUI_InputPanel( theModule, theTitle ), myType( theType ) { - SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - QString fileGroupTitle = theType == Export ? tr( "EXPORT_STRICKLER_TABLE_FILE" ) : tr( "IMPORT_STRICKLER_TABLE_FILE" ); // Import Strickler table from file @@ -107,7 +100,10 @@ HYDROGUI_StricklerTableDlg::HYDROGUI_StricklerTableDlg( HYDROGUI_Module* theModu myFileName->setReadOnly( true ); QToolButton* aBrowseBtn = new QToolButton( aFileNameGroup ); +#ifndef LIGHT_MODE + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); aBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) ); +#endif QBoxLayout* aFileNameLayout = new QHBoxLayout( aFileNameGroup ); aFileNameLayout->setMargin( 5 ); diff --git a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.h b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.h index 70eb3505..6801b55d 100644 --- a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.h +++ b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.h @@ -72,14 +72,17 @@ Q_SIGNALS: void fileSelected( const QString& theFileName ); private: - int myType; - QLineEdit* myFileName; //!< Source Strickler table file name input field - QLineEdit* myName; //!< The Strickler table name input field - QLineEdit* myAttrName; //!< The Strickler table attribute's name input field - QTableWidget* myTable; //!< The table of Strickler coefficients - QToolButton* myAddBtn; //!< The add Strickler coefficient button - QToolButton* myRemoveBtn; //!< The remove Strickler coefficient button - QToolButton* myClearBtn; //!< The clear all Strickler coefficients button + friend class test_HYDROData_StricklerTable; + +private: + int myType; + QLineEdit* myFileName; //!< Source Strickler table file name input field + QLineEdit* myName; //!< The Strickler table name input field + QLineEdit* myAttrName; //!< The Strickler table attribute's name input field + QTableWidget* myTable; //!< The table of Strickler coefficients + QToolButton* myAddBtn; //!< The add Strickler coefficient button + QToolButton* myRemoveBtn; //!< The remove Strickler coefficient button + QToolButton* myClearBtn; //!< The clear all Strickler coefficients button }; class HYDROGUI_ColorDelegate : public QAbstractItemDelegate diff --git a/src/HYDROGUI/HYDROGUI_Tool.cxx b/src/HYDROGUI/HYDROGUI_Tool.cxx index 6cc4ae17..f86499f2 100644 --- a/src/HYDROGUI/HYDROGUI_Tool.cxx +++ b/src/HYDROGUI/HYDROGUI_Tool.cxx @@ -16,51 +16,22 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HYDROGUI_Tool.h" - -#include "HYDROGUI_DataModel.h" -#include "HYDROGUI_DataObject.h" -#include "HYDROGUI_Module.h" -#include "HYDROGUI_Prs.h" - +#include #include #include -#include -#include #include - -#include -#include - -#include - -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include - +#include +#include +#include +#include #include -#include #include +#include +#include +#include +#include #include +#include // Definition of this id allows to use 'latin1' (Qt alias for 'ISO-8859-1') // encoding instead of default 'System' @@ -148,15 +119,6 @@ Handle(TCollection_HExtendedString) HYDROGUI_Tool::ToHExtString( const QString& return new TCollection_HExtendedString( ToExtString( src ) ); } -int HYDROGUI_Tool::GetActiveStudyId() -{ - if( SUIT_Session* aSession = SUIT_Session::session() ) - if( SUIT_Application* anApp = aSession->activeApplication() ) - if( SUIT_Study* aStudy = anApp->activeStudy() ) - return aStudy->id(); - return 0; -} - QString HYDROGUI_Tool::GetTempDir( const bool theToCreate ) { QString aRes; @@ -196,364 +158,6 @@ QString HYDROGUI_Tool::GetTempDir( const bool theToCreate ) return aRes; } -void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule, - SUIT_ViewManager* theViewManager ) -{ - if( theViewManager ) - if( SUIT_ViewWindow* aViewWindow = theViewManager->getActiveView() ) - if( STD_TabDesktop* aTabDesktop = dynamic_cast( theModule->getApp()->desktop() ) ) - if( QtxWorkstack* aWorkstack = aTabDesktop->workstack() ) - aWorkstack->setActiveWindow( aViewWindow ); -} - -bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject, - const QString& theViewerType ) -{ - if ( theObject.IsNull() ) - return false; - - ObjectKind anObjectKind = theObject->GetKind(); - if ( theViewerType.isEmpty() || theViewerType == OCCViewer_Viewer::Type() ) - { - if ( anObjectKind == KIND_IMAGE || - anObjectKind == KIND_POLYLINEXY || - anObjectKind == KIND_POLYLINE || - anObjectKind == KIND_IMMERSIBLE_ZONE || - anObjectKind == KIND_REGION || - anObjectKind == KIND_ZONE || - anObjectKind == KIND_OBSTACLE || - anObjectKind == KIND_PROFILE || - anObjectKind == KIND_STREAM || - anObjectKind == KIND_CHANNEL || - anObjectKind == KIND_DIGUE || - anObjectKind == KIND_DUMMY_3D || - anObjectKind == KIND_BATHYMETRY || - anObjectKind == KIND_LAND_COVER_MAP -#ifdef DEB_GROUPS - || anObjectKind == KIND_SHAPES_GROUP || - anObjectKind == KIND_SPLITTED_GROUP -#endif - ) - { - return true; - } - } - - if ( theViewerType.isEmpty() || theViewerType == SVTK_Viewer::Type() ) - { - if ( anObjectKind == KIND_BATHYMETRY ) - return true; - } - - if ( theViewerType.isEmpty() || theViewerType == GraphicsView_Viewer::Type() ) - { - if ( anObjectKind == KIND_IMAGE || - anObjectKind == KIND_POLYLINEXY ) - return true; - } - - return false; -} - -void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule, - HYDROData_SequenceOfObjects& theSeq ) -{ - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - if( !aDocument.IsNull() ) - { - HYDROData_Iterator anIterator( aDocument ); - for( ; anIterator.More(); anIterator.Next() ) - { - Handle(HYDROData_Entity) anObject = anIterator.Current(); - if ( !IsObjectHasPresentation( anObject ) ) - continue; - - theSeq.Append( anObject ); - } - } -} - -HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Entity)& theObj, - const GraphicsView_ObjectList& theObjects ) -{ - if( !theObj.IsNull() ) - { - GraphicsView_ObjectListIterator anIter( theObjects ); - while( anIter.hasNext() ) - { - if( HYDROGUI_Prs* aPrs = dynamic_cast( anIter.next() ) ) - { - Handle(HYDROData_Entity) anObj = aPrs->getObject(); - if( IsEqual( anObj, theObj ) ) - return aPrs; - } - } - } - return NULL; -} - -GraphicsView_ObjectList HYDROGUI_Tool::GetPrsList( GraphicsView_ViewPort* theViewPort ) -{ - GraphicsView_ObjectList aList; - if( theViewPort ) - { - GraphicsView_ObjectListIterator anIter( theViewPort->getObjects() ); - while( anIter.hasNext() ) - if( HYDROGUI_Prs* aPrs = dynamic_cast( anIter.next() ) ) - aList.append( aPrs ); - } - return aList; -} - -HYDROData_SequenceOfObjects HYDROGUI_Tool::GetSelectedObjects( HYDROGUI_Module* theModule ) -{ - HYDROData_SequenceOfObjects aSeq; - - HYDROGUI_DataModel* aModel = theModule->getDataModel(); - - SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr(); - SUIT_DataOwnerPtrList anOwners; - aSelectionMgr->selected( anOwners ); - - QStringList aCollectedNameList; // to avoid duplication - foreach( SUIT_DataOwner* aSUITOwner, anOwners ) - { - if( LightApp_DataOwner* anOwner = dynamic_cast( aSUITOwner ) ) - { - Handle(HYDROData_Entity) anObject = aModel->objectByEntry( anOwner->entry() ); - if( !anObject.IsNull() ) - { - QString aName = anObject->GetName(); - if( !aCollectedNameList.contains( aName ) ) - { - aSeq.Append( anObject ); - aCollectedNameList.append( aName ); - } - } - } - } - return aSeq; -} - -Handle(HYDROData_Entity) HYDROGUI_Tool::GetSelectedObject( HYDROGUI_Module* theModule ) -{ - HYDROData_SequenceOfObjects aSeq = GetSelectedObjects( theModule ); - if( !aSeq.IsEmpty() ) - return aSeq.First(); - return NULL; -} - -HYDROData_SequenceOfObjects HYDROGUI_Tool::GetGeometryObjects( - HYDROGUI_Module* theModule ) -{ - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - - HYDROData_SequenceOfObjects aResSeq; - - HYDROData_Iterator anIter( aDocument ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(HYDROData_Entity) anObj = anIter.Current(); - if ( !HYDROData_Tool::IsGeometryObject( anObj ) ) - continue; - - aResSeq.Append( anObj ); - } - - return aResSeq; -} - -ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule ) -{ - HYDROGUI_DataModel* aModel = theModule->getDataModel(); - - SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr(); - SUIT_DataOwnerPtrList anOwners; - aSelectionMgr->selected( anOwners ); - - if( anOwners.size() != 1 ) - return KIND_UNKNOWN; - - if( LightApp_DataOwner* anOwner = dynamic_cast( anOwners.first().operator->() ) ) - { - QString anEntry = anOwner->entry(); - QString aPrefix = HYDROGUI_DataObject::entryPrefix(); - if( anEntry.left( aPrefix.length() ) == aPrefix ) - { - anEntry.remove( aPrefix ); - for( ObjectKind anObjectKind = KIND_UNKNOWN + 1; anObjectKind <= KIND_LAST; anObjectKind++ ) - if( HYDROGUI_DataModel::tr( HYDROGUI_DataModel::partitionName( anObjectKind ).toAscii() ) == anEntry ) - return anObjectKind; - } - } - return KIND_UNKNOWN; -} - -QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule, - QList theTypes ) -{ - QStringList anEntryList; - - // Get active SalomeApp_Study - SalomeApp_Study* aStudy = NULL; - if ( theModule && theModule->getApp() ) { - aStudy = dynamic_cast( theModule->getApp()->activeStudy() ); - } - if ( !aStudy ) { - return anEntryList; - } - - // Get selection - SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr(); - SUIT_DataOwnerPtrList anOwners; - aSelectionMgr->selected( anOwners ); - - // Check if the selected objects belong to GEOM and have a shape - foreach( SUIT_DataOwner* aSUITOwner, anOwners ) - { - if( LightApp_DataOwner* anOwner = dynamic_cast( aSUITOwner ) ) - { - QString anEntry = anOwner->entry(); - _PTR(SObject) aSObject( aStudy->studyDS()->FindObjectID(qPrintable(anEntry)) ); - if (aSObject) { - _PTR(SComponent) aSComponent = aSObject->GetFatherComponent(); - if ( aSComponent && aSComponent->ComponentDataType() == "GEOM" ) { - GEOM::GEOM_Object_var aGeomObj = - GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() ); - - if ( !aGeomObj->_is_nil() && aGeomObj->IsShape() && - theTypes.contains( aGeomObj->GetShapeType() ) ) { - anEntryList << anEntry; - } - } - } - } - } - - return anEntryList; -} - -Handle(HYDROData_Entity) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule, - const QString& theName, - const ObjectKind theObjectKind ) -{ - Handle(HYDROData_Entity) aResObj; - - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - if ( !aDocument.IsNull() ) - aResObj = aDocument->FindObjectByName( theName, theObjectKind ); - - return aResObj; -} - -HYDROData_SequenceOfObjects HYDROGUI_Tool::FindObjectsByNames( HYDROGUI_Module* theModule, - const QStringList& theNames, - const ObjectKind theObjectKind ) -{ - HYDROData_SequenceOfObjects aResSeq; - - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - if ( !aDocument.IsNull() ) - aResSeq = aDocument->FindObjectsByNames( theNames, theObjectKind ); - - return aResSeq; -} - -QString HYDROGUI_Tool::GenerateObjectName( HYDROGUI_Module* theModule, - const QString& thePrefix, - const QStringList& theUsedNames, - const bool theIsTryToUsePurePrefix) -{ - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - return HYDROData_Tool::GenerateObjectName( aDocument, thePrefix, theUsedNames, theIsTryToUsePurePrefix ); -} - -size_t HYDROGUI_Tool::GetActiveViewId( HYDROGUI_Module* theModule, - const QString& theViewId ) -{ - size_t aViewId = 0; - SUIT_ViewManager* aViewMgr = theModule->getApp()->activeViewManager(); - if( !aViewMgr || ( !theViewId.isEmpty() && aViewMgr->getType() != theViewId ) ) - return aViewId; - - if( SUIT_ViewModel* aViewer = aViewMgr->getViewModel() ) - aViewId = (size_t)aViewer; - return aViewId; -} - -size_t HYDROGUI_Tool::GetActiveGraphicsViewId( HYDROGUI_Module* theModule ) -{ - return GetActiveViewId( theModule, GraphicsView_Viewer::Type() ); -} - -size_t HYDROGUI_Tool::GetActiveOCCViewId( HYDROGUI_Module* theModule ) -{ - return GetActiveViewId( theModule, OCCViewer_Viewer::Type() ); -} - -QList getViewIdList( HYDROGUI_Module* theModule, - const QString& theViewId ) -{ - QList aList; - ViewManagerList aViewMgrs; - theModule->getApp()->viewManagers( theViewId, aViewMgrs ); - QListIterator anIter( aViewMgrs ); - while( anIter.hasNext() ) - { - if( SUIT_ViewManager* aViewMgr = anIter.next() ) - { - if( SUIT_ViewModel* aViewer = aViewMgr->getViewModel() ) - aList.append( (size_t)aViewer ); - } - } - return aList; -} - -QList HYDROGUI_Tool::GetGraphicsViewIdList( HYDROGUI_Module* theModule ) -{ - return getViewIdList( theModule, GraphicsView_Viewer::Type() ); -} - -QList HYDROGUI_Tool::GetOCCViewIdList( HYDROGUI_Module* theModule ) -{ - return getViewIdList( theModule, OCCViewer_Viewer::Type() ); -} - -void HYDROGUI_Tool::setOCCActionShown( OCCViewer_ViewFrame* theViewFrame, - const int theActionId, - const bool isShown ) -{ - if ( !theViewFrame ) - return; - - OCCViewer_ViewWindow* aView = theViewFrame->getView( OCCViewer_ViewFrame::MAIN_VIEW ); - if ( aView ) { - aView->toolMgr()->setShown( theActionId, isShown ); - if ( theActionId == OCCViewer_ViewWindow::MaximizedId ) - theViewFrame->onMaximizedView( aView, true ); - } -} - -void HYDROGUI_Tool::setOCCActionShown( HYDROGUI_Module* theModule, - const int theActionId, - const bool isShown ) -{ - QList aList; - ViewManagerList aViewMgrs; - theModule->getApp()->viewManagers( OCCViewer_Viewer::Type(), aViewMgrs ); - QListIterator anIter( aViewMgrs ); - while( anIter.hasNext() ) - { - if( SUIT_ViewManager* aViewMgr = anIter.next() ) - { - OCCViewer_ViewFrame* aViewFrame = dynamic_cast - ( aViewMgr->getActiveView() ); - if ( aViewFrame ) - setOCCActionShown( aViewFrame, theActionId, isShown ); - } - } -} - void HYDROGUI_Tool::GetObjectReferences( const Handle(HYDROData_Entity)& theObj, HYDROData_SequenceOfObjects& theRefObjects, QStringList& theRefNames ) @@ -581,34 +185,32 @@ void HYDROGUI_Tool::GetObjectReferences( const Handle(HYDROData_Entity)& theObj, } } -HYDROData_SequenceOfObjects HYDROGUI_Tool::GetObjectBackReferences( - HYDROGUI_Module* theModule, - const Handle(HYDROData_Entity)& theObj ) +HYDROData_SequenceOfObjects HYDROGUI_Tool::GetObjectBackReferences( const Handle(HYDROData_Entity)& theObj ) { if( theObj.IsNull() ) return HYDROData_SequenceOfObjects(); QString anObjName = theObj->GetName(); + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( theObj->Label() ); QMap aMapOfBackRefs = - GetObjectsBackReferences( theModule, QStringList() << anObjName ); + GetObjectsBackReferences( aDoc, QStringList() << anObjName ); return aMapOfBackRefs[ anObjName ]; } QMap HYDROGUI_Tool::GetObjectsBackReferences( - HYDROGUI_Module* theModule, const QStringList& theObjectNames ) + const Handle_HYDROData_Document& theDocument, const QStringList& theObjectNames ) { QMap aResMap; if( theObjectNames.isEmpty() ) return aResMap; - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - if( aDocument.IsNull() ) + if( theDocument.IsNull() ) return aResMap; - HYDROData_Iterator anIterator( aDocument ); + HYDROData_Iterator anIterator( theDocument ); for( ; anIterator.More(); anIterator.Next() ) { Handle(HYDROData_Entity) anObject = anIterator.Current(); @@ -652,44 +254,6 @@ QDockWidget* HYDROGUI_Tool::WindowDock( QWidget* wid ) return dock; } -QColor HYDROGUI_Tool::GenerateFillingColor( HYDROGUI_Module* theModule, - const QStringList& theZoneNames ) -{ - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - return GenerateFillingColor( aDocument, theZoneNames ); -} - -QColor HYDROGUI_Tool::GenerateFillingColor( const Handle(HYDROData_Document)& theDoc, - const QStringList& theZoneNames ) -{ - QColor aFillingColor( Qt::darkBlue ); - - int aCounter = 0; - int aR = 0, aG = 0, aB = 0; - QStringListIterator aZoneNameIter( theZoneNames ); - while( aZoneNameIter.hasNext() ) - { - const QString& aZoneName = aZoneNameIter.next(); - Handle(HYDROData_ImmersibleZone) aRefZone = - Handle(HYDROData_ImmersibleZone)::DownCast( theDoc->FindObjectByName( aZoneName, KIND_IMMERSIBLE_ZONE ) ); - if( !aRefZone.IsNull() ) - { - QColor aRefColor = aRefZone->GetFillingColor(); - aR += aRefColor.red(); - aG += aRefColor.green(); - aB += aRefColor.blue(); - aCounter++; - } - } - - if( aCounter > 0 ) - { - aFillingColor = QColor( aR / aCounter, aG / aCounter, aB / aCounter ); - } - - return aFillingColor; -} - QStringList HYDROGUI_Tool::FindExistingObjectsNames( const Handle(HYDROData_Document)& theDoc, const ObjectKind theObjectKind, bool isCheckValidProfile ) @@ -775,38 +339,3 @@ Handle(Image_PixMap) HYDROGUI_Tool::Pixmap( const QImage& theImage ) return pix; } -void HYDROGUI_Tool::DeleteGeomObjects( HYDROGUI_Module* theModule, const QStringList& theEntries ) -{ - QStringList anEntryList; - - // Get active SalomeApp_Study - SalomeApp_Study* aStudy = NULL; - if ( theModule && theModule->getApp() ) { - aStudy = dynamic_cast( theModule->getApp()->activeStudy() ); - } - if ( !aStudy ) { - return; - } - - // Get GEOM engine - GEOM::GEOM_Gen_var aGeomEngine = GeometryGUI::GetGeomGen(); - if ( aGeomEngine->_is_nil() ) { - return; - } - - // Delete GEOM objects - _PTR(StudyBuilder) aStudyBuilder( aStudy->studyDS()->NewBuilder() ); - foreach ( const QString anEntry, theEntries ) { - _PTR(SObject) aSObject( aStudy->studyDS()->FindObjectID( qPrintable(anEntry) ) ); - if ( aSObject ) { - GEOM::GEOM_Object_var aGeomObj = - GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() ); - - if ( !aGeomObj->_is_nil() ) { - aGeomEngine->RemoveObject( aGeomObj ); - } - - aStudyBuilder->RemoveObject( aSObject ); - } - } -} diff --git a/src/HYDROGUI/HYDROGUI_Tool.h b/src/HYDROGUI/HYDROGUI_Tool.h index 24563aa1..99aa175c 100644 --- a/src/HYDROGUI/HYDROGUI_Tool.h +++ b/src/HYDROGUI/HYDROGUI_Tool.h @@ -19,347 +19,46 @@ #ifndef HYDROGUI_TOOL_H #define HYDROGUI_TOOL_H -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#ifndef LIGHT_MODE -// IDL includes -#include -#include CORBA_SERVER_HEADER(GEOM_Gen) -#endif - -class SUIT_ViewManager; -class OCCViewer_ViewFrame; - -class HYDROGUI_DataModel; -class HYDROGUI_Module; -class HYDROGUI_Prs; - +#include +#include + +class TCollection_AsciiString; +class Handle_HYDROData_Document; +class Handle_Image_PixMap; +class Handle_TCollection_HAsciiString; +class Handle_TCollection_HExtendedString; class QDockWidget; -class Handle(HYDROData_Document); +class QImage; +class QWidget; -/** - * \class HYDROGUI_Tool - * \brief This class contains several useful methods. - */ -class HYDROGUI_Tool +namespace HYDROGUI_Tool { -public: - /** - * \brief Convert \a TCollection_AsciiString to \a QString - */ - static QString ToQString( const TCollection_AsciiString& ); - - /** - * \brief Convert \a TCollection_ExtendedString to \a QString - */ - static QString ToQString( const TCollection_ExtendedString& ); - - /** - * \brief Convert \a Handle_TCollection_HAsciiString to \a QString - */ - static QString ToQString( const Handle(TCollection_HAsciiString)& ); - - /** - * \brief Convert \a Handle_TCollection_HExtendedString to \a QString - */ - static QString ToQString( const Handle(TCollection_HExtendedString)& ); - - /** - * \brief Convert \a QString to \a TCollection_AsciiString - */ - static TCollection_AsciiString ToAsciiString( const QString& ); - - /** - * \brief Convert \a QString to \a TCollection_ExtendedString - */ - static TCollection_ExtendedString ToExtString( const QString& ); - - /** - * \brief Convert \a QString to \a Handle_TCollection_HAsciiString - */ - static Handle(TCollection_HAsciiString) ToHAsciiString( const QString& ); - - /** - * \brief Convert \a QString to \a Handle_TCollection_HExtendedString - */ - static Handle(TCollection_HExtendedString) ToHExtString( const QString& ); - - /** - * \brief Get the active study id. - * \return active study id - */ - static int GetActiveStudyId(); - - /** - * \brief Get path to the temporary directory. - * \param theToCreate flag used to create a directory if it doesn't exist - * \return path - */ - static QString GetTempDir( const bool theToCreate ); - - /** - * \brief Set the specified view manager to be active on the desktop. - * \param theModule module - * \param theViewManager view manager - */ - static void SetActiveViewManager( HYDROGUI_Module* theModule, - SUIT_ViewManager* theViewManager ); - - /** - * \brief Returns TRUE if object can be shown on the viewer. - * \param theObject data model object to check - * \param theViewerType viewer type - */ - static bool IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject, - const QString& theViewerType = "" ); - -/** - * \brief Get sub-objects to build presentations. - * \param theModule module - * \param theSeq sequence of sub-objects - */ - static void GetPrsSubObjects( HYDROGUI_Module* theModule, - HYDROData_SequenceOfObjects& theSeq ); - - /** - * \brief Get presentation built for specified data object. - * \param theObj data object - * \param theObjects list of existing presentations - * \return presentation - */ - static HYDROGUI_Prs* GetPresentation( const Handle(HYDROData_Entity)& theObj, - const GraphicsView_ObjectList& theObjects ); - - /** - * \brief Get list of HYDRO presentations from the specified viewport. - * \param theViewPort viewport - * \return list of HYDRO presentations - */ - static GraphicsView_ObjectList GetPrsList( GraphicsView_ViewPort* theViewPort ); - - /** - * \brief Get list of the selected data objects. - * \param theModule module - * \return list of the selected data objects - */ - static HYDROData_SequenceOfObjects GetSelectedObjects( HYDROGUI_Module* theModule ); - - /** - * \brief Get the selected data object (first in the selected list). - * \param theModule module - * \return selected data object - */ - static Handle(HYDROData_Entity) GetSelectedObject( HYDROGUI_Module* theModule ); - - /** - * \brief Get the geometry data objects from document. - * \param theModule module - * \return sequence of data objects - */ - static HYDROData_SequenceOfObjects GetGeometryObjects( HYDROGUI_Module* theModule ); - - /** - * \brief Get kind of objects the selected partition contains. - * \param theModule module - * \return object kind - */ - static ObjectKind GetSelectedPartition( HYDROGUI_Module* theModule ); + QString ToQString( const TCollection_AsciiString& ); + QString ToQString( const TCollection_ExtendedString& ); + QString ToQString( const Handle_TCollection_HAsciiString& ); + QString ToQString( const Handle_TCollection_HExtendedString& ); + TCollection_AsciiString ToAsciiString( const QString& ); + TCollection_ExtendedString ToExtString( const QString& ); + Handle(TCollection_HAsciiString) ToHAsciiString( const QString& ); + Handle(TCollection_HExtendedString) ToHExtString( const QString& ); + + QString GetTempDir( const bool theToCreate ); + + QDockWidget* WindowDock( QWidget* wid ); + + QStringList FindExistingObjectsNames( const Handle_HYDROData_Document& theDoc, + const ObjectKind theObjectKind, + bool isCheckValidProfile = false ); + QString GetCoordinateString( const double theNumber, bool isInLocale ); - /** - * \brief Find the data object with the specified name. - * \param theModule module - * \param theName name - * \param theObjectKind kind of object - * \return data object - */ - static Handle(HYDROData_Entity) FindObjectByName( HYDROGUI_Module* theModule, - const QString& theName, - const ObjectKind theObjectKind = KIND_UNKNOWN ); - - /** - * \brief Find the data objects with the specified names. - * \param theModule module - * \param theNames list of names - * \param theObjectKind kind of object - * \return list of data objects - */ - static HYDROData_SequenceOfObjects FindObjectsByNames( HYDROGUI_Module* theModule, - const QStringList& theNames, - const ObjectKind theObjectKind = KIND_UNKNOWN ); - - /** - * \brief Generate name for new object. - * \param theModule module - * \param thePrefix name prefix - * \param theUsedNames list of already used names - * \param theIsTryToUsePurePrefix if true - the prefix will be returned if the name equal to the prefix is not busy - * \return generated name - */ - static QString GenerateObjectName( HYDROGUI_Module* theModule, - const QString& thePrefix, - const QStringList& theUsedNames = QStringList(), - const bool theIsTryToUsePurePrefix = false ); - - /** - * \brief Get id of the active view. - * \param theModule module - * \return view id - */ - static size_t GetActiveViewId( HYDROGUI_Module* theModule, - const QString& theViewId = QString() ); - - /** - * \brief Get id of the active GraphicsView view. - * \param theModule module - * \return view id - */ - static size_t GetActiveGraphicsViewId( HYDROGUI_Module* theModule ); - - /** - * \brief Get id of the active OCC view. - * \param theModule module - * \return view id - */ - static size_t GetActiveOCCViewId( HYDROGUI_Module* theModule ); - - /** - * \brief Get list of ids of existing GraphicsView views. - * \param theModule module - * \return list of view ids - */ - static QList GetGraphicsViewIdList( HYDROGUI_Module* theModule ); - - /** - * \brief Get list of ids of existing OCC views. - * \param theModule module - * \return list of view ids - */ - static QList GetOCCViewIdList( HYDROGUI_Module* theModule ); - - - /** - * \brief Change OCC viewer action visibility. - * \param theViewFrame OCC viewer frame - * \param theActionId an action index, which state should be changed - * \param isShown the action visibility state - */ - static void setOCCActionShown( OCCViewer_ViewFrame* theViewFrame, - const int theActionId, - const bool isShown ); - - /** - * \brief Change OCC viewer action visibility for all opened views. - * \param theActionId an action index, which state should be changed - * \param isShown the action visibility state - */ - static void setOCCActionShown( HYDROGUI_Module* theModule, - const int theActionId, - const bool isShown ); - - /** - * \brief Get the list of references (recursively) for the specified data object - * \param theObj data object - * \param theRefObjects list of reference objects - * \param theRefNames list of reference object names - */ - static void GetObjectReferences( const Handle(HYDROData_Entity)& theObj, - HYDROData_SequenceOfObjects& theRefObjects, - QStringList& theRefNames ); - - /** - * \brief Get the list of back-references for the specified object - * \param theModule module - * \param theObj data object - * \return list of back-reference objects - */ - static HYDROData_SequenceOfObjects GetObjectBackReferences( HYDROGUI_Module* theModule, - const Handle(HYDROData_Entity)& theObj ); - - /** - * \brief Get the map of back-references for the specified list of objects - * \param theModule module - * \param theObjectNames names of objects - * \return map of back-reference objects - */ - static QMap GetObjectsBackReferences( HYDROGUI_Module* theModule, - const QStringList& theObjectNames ); - - /** - * \brief Get father dock window for widget - * \param wid widget - * \return dock window - */ - static QDockWidget* WindowDock( QWidget* wid ); - - /** - * \brief Generates the filling color for intersected zone - * \param theModule module - * \param theZoneNames list of intersected zones - * \return result color - */ - static QColor GenerateFillingColor( HYDROGUI_Module* theModule, - const QStringList& theZoneNames ); - - /** - * \brief Generates the filling color for intersected zone - * \param theDoc model document - * \param theZoneNames list of intersected zones - * \return result color - */ - static QColor GenerateFillingColor( const Handle(HYDROData_Document)& theDoc, - const QStringList& theZoneNames ); - - /** - * \brief Find names of existing objects of the given kind. - * \param theDoc model document - * \param theObjectKind kind of object - * \return list of names - */ - static QStringList FindExistingObjectsNames( const Handle(HYDROData_Document)& theDoc, - const ObjectKind theObjectKind, - bool isCheckValidProfile = false ); - - /** - * \brief Converts coordinate value to string. - * \param theNumber coordinate as a number - * \return coordinate as a string - */ - static QString GetCoordinateString( const double theNumber, bool isInLocale ); - - /** - * \brief Converts Qt QImage object to OCCT Image_PixMap object. - * \param theImage QImage object - * \return Image_PixMap object - */ - static Handle(Image_PixMap) Pixmap( const QImage& theImage ); - -#ifndef LIGHT_MODE - /** - * \brief Get the selected GEOM objects. - * \param theModule the module - * \param theTypes the acceptable GEOM object types - * \return list of GEOM objects entries - */ - static QStringList GetSelectedGeomObjects( HYDROGUI_Module* theModule, - QList theTypes ); -#endif - - /** - * \brief Delete the GEOM objects. - * \param theModule the module - * \param theEntries the GEOM objects entries - */ - static void DeleteGeomObjects( HYDROGUI_Module* theModule, const QStringList& theEntries ); + Handle_Image_PixMap Pixmap( const QImage& theImage ); + + void GetObjectReferences( const Handle(HYDROData_Entity)& theObj, + HYDROData_SequenceOfObjects& theRefObjects, + QStringList& theRefNames ); + HYDROData_SequenceOfObjects GetObjectBackReferences( const Handle(HYDROData_Entity)& theObj ); + QMap GetObjectsBackReferences + ( const Handle_HYDROData_Document& theDocument, const QStringList& theObjectNames ); }; #endif diff --git a/src/HYDRO_tests/CMakeLists.txt b/src/HYDRO_tests/CMakeLists.txt index f9fb4518..f41a9c59 100644 --- a/src/HYDRO_tests/CMakeLists.txt +++ b/src/HYDRO_tests/CMakeLists.txt @@ -1,3 +1,4 @@ + include(../../CMake/Common.cmake) include(ExternalFiles.cmake) @@ -104,7 +105,7 @@ include_directories( source_group( "External files" FILES ${EXTERNAL_FILES} ) -add_executable( HYDROData_tests ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${EXTERNAL_FILES} ) +add_executable( HYDROData_tests ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${EXTERNAL_FILES} ${PROJECT_MOC_HEADERS} ) target_link_libraries( HYDROData_tests ${GUI_LIBRARIES} ${GEOM_LIBRARIES} ${CAS_LIBRARIES} ${QT_LIBRARIES} ${CPPUNIT_LIBRARIES} shapelib ) IF( ${WIN32} ) diff --git a/src/HYDRO_tests/ExternalFiles.cmake b/src/HYDRO_tests/ExternalFiles.cmake index 96fb4c6e..da960034 100644 --- a/src/HYDRO_tests/ExternalFiles.cmake +++ b/src/HYDRO_tests/ExternalFiles.cmake @@ -1,4 +1,6 @@ +find_package(Qt4 4.8.4 REQUIRED QtCore QtGui ) + set( EXTERNAL_FILES ../HYDROData/HYDROData_AltitudeObject.cxx ../HYDROData/HYDROData_Application.cxx @@ -60,4 +62,15 @@ set( EXTERNAL_FILES ../HYDROGUI/HYDROGUI_Polyline.cxx ../HYDROGUI/HYDROGUI_AISShape.cxx ../HYDROGUI/HYDROGUI_Shape.cxx + ../HYDROGUI/HYDROGUI_InputPanel.cxx + ../HYDROGUI/HYDROGUI_StricklerTableDlg.cxx + ../HYDROGUI/HYDROGUI_LineEditDoubleValidator.cxx + ../HYDROGUI/HYDROGUI_Tool.cxx +) + +set( MOC_HEADERS + ../HYDROGUI/HYDROGUI_InputPanel.h + ../HYDROGUI/HYDROGUI_StricklerTableDlg.h ) + +QT4_WRAP_CPP( PROJECT_MOC_HEADERS ${MOC_HEADERS} ) diff --git a/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx b/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx index 184360d3..928018bc 100644 --- a/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx +++ b/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx @@ -21,10 +21,12 @@ #include #include #include +#include #include -#include #include #include +#include +#include const QString DEF_STR_PATH = qgetenv( "HYDRO_SRC_DIR" ) + "/src/HYDROGUI/resources/def_strickler_table.txt"; @@ -215,3 +217,22 @@ void test_HYDROData_StricklerTable::test_dump_python() aDoc->Close(); } + +void test_HYDROData_StricklerTable::test_add_row_in_gui_refs_717() +{ + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + + Handle(HYDROData_StricklerTable) aTable = + Handle(HYDROData_StricklerTable)::DownCast( aDoc->CreateObject( KIND_STRICKLER_TABLE ) ); + + CPPUNIT_ASSERT_EQUAL( true, aTable->Import( DEF_STR_PATH ) ); + + HYDROGUI_StricklerTableDlg* aDlg = new HYDROGUI_StricklerTableDlg( 0, "", 0 ); + aDlg->setGuiData( aTable ); + CPPUNIT_ASSERT_EQUAL( 8, aDlg->myTable->rowCount() ); + aDlg->onAddCoefficient(); + aDlg->getGuiData( aTable ); + + aDlg->deleteLater(); + aDoc->Close(); +} diff --git a/src/HYDRO_tests/test_HYDROData_StricklerTable.h b/src/HYDRO_tests/test_HYDROData_StricklerTable.h index a24e2b82..58c03449 100644 --- a/src/HYDRO_tests/test_HYDROData_StricklerTable.h +++ b/src/HYDRO_tests/test_HYDROData_StricklerTable.h @@ -32,6 +32,7 @@ class test_HYDROData_StricklerTable : public CppUnit::TestFixture CPPUNIT_TEST( test_colors_sync ); CPPUNIT_TEST( test_duplication_refs_613 ); CPPUNIT_TEST( test_dump_python ); + CPPUNIT_TEST( test_add_row_in_gui_refs_717 ); CPPUNIT_TEST_SUITE_END(); public: @@ -42,6 +43,7 @@ public: void test_colors_sync(); void test_duplication_refs_613(); void test_dump_python(); + void test_add_row_in_gui_refs_717(); }; CPPUNIT_TEST_SUITE_REGISTRATION( test_HYDROData_StricklerTable ); -- 2.39.2