X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Module.cxx;h=cbed2b66dc1943b3c443b75712ee31a944c3078e;hb=a53349567d67f4df0ef737798a25c24d9dc8f08e;hp=a9690cdb396f1195c7c6646afcf839c207c3f82a;hpb=125ff943c035d5e5fd7bd2b55f6e1e5d04ea3d19;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Module.cxx b/src/HYDROGUI/HYDROGUI_Module.cxx index a9690cdb..cbed2b66 100644 --- a/src/HYDROGUI/HYDROGUI_Module.cxx +++ b/src/HYDROGUI/HYDROGUI_Module.cxx @@ -1,8 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -79,10 +75,11 @@ #include #include -#include -#include +#include #include #include +#include +#include #include #include @@ -236,6 +233,10 @@ bool HYDROGUI_Module::activateModule( SUIT_Study* theStudy ) } } +// SUIT_DataBrowser* ob = getApp()->objectBrowser(); +// SUIT_AbstractModel* treeModel = dynamic_cast( ob->model() ); +// treeModel->setAppropriate( SUIT_DataObject::VisibilityId, Qtx::Toggled ); + return aRes; } @@ -572,6 +573,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, theMenu->addAction( action( CutImagesId ) ); theMenu->addAction( action( SplitImageId ) ); theMenu->addSeparator(); + theMenu->addAction( action( RecognizeContoursId ) ); + theMenu->addSeparator(); } else if( anIsBathymetry ) { @@ -705,6 +708,21 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, if( isRoot ) theMenu->addAction( action( EditLocalCSId ) ); + + if( anIsObjectBrowser && anOwners.size()==1 ) + { + if( aSeq.Size() > 0 ) + { + Handle( HYDROData_Object ) anObject = Handle( HYDROData_Object )::DownCast( aSeq.First() ); + if( !anObject.IsNull() ) + { + theMenu->addSeparator(); + theMenu->addAction( action( SubmersibleId ) ); + action( SubmersibleId )->setCheckable( true ); + action( SubmersibleId )->setChecked( anObject->IsSubmersible() ); + } + } + } } void HYDROGUI_Module::createPreferences() @@ -729,11 +747,24 @@ void HYDROGUI_Module::createPreferences() setPreferenceProperty( typeOfCursor, "indexes", aCursorTypeIndicesList ); setPreferenceProperty( typeOfCursor, "icons", aCursorTypeIconsList ); + + int viewerGroup = addPreference( tr( "PREF_GROUP_VIEWER" ), genTab ); + addPreference( tr( "PREF_VIEWER_AUTO_FITALL" ), viewerGroup, + LightApp_Preferences::Bool, "HYDRO", "auto_fit_all" ); +} + +QCursor HYDROGUI_Module::getPrefEditCursor() const +{ + int aCursorType = SUIT_Session::session()->resourceMgr()->integerValue("preferences", "type_of_cursor", (int)CT_CrossCursor ); + if ( aCursorType >= Qt::BlankCursor) + aCursorType++; + QCursor aCursor = QCursor( Qt::CursorShape(aCursorType) ); + return aCursor; } void HYDROGUI_Module::update( const int flags ) { - if( !isUpdateEnabled() ) + if ( !isUpdateEnabled() ) return; QApplication::setOverrideCursor( Qt::WaitCursor ); @@ -746,6 +777,12 @@ void HYDROGUI_Module::update( const int flags ) QStringList aSelectedEntries = storeSelection(); bool aDoFitAll = flags & UF_FitAll; + if ( aDoFitAll ) + { + SUIT_ResourceMgr* aResMgr = getApp()->resourceMgr(); + aDoFitAll = aResMgr->booleanValue( "HYDRO", "auto_fit_all", false ); + } + if( ( flags & UF_Viewer ) ) updateViewer( getDisplayer(), flags & UF_GV_Init, flags & UF_GV_Forced, aDoFitAll ); @@ -943,6 +980,16 @@ void HYDROGUI_Module::setObjectVisible( const int theViewId, ObjectState& anObjectState = aEntry2ObjectStateMap[ anEntry ]; anObjectState.Visibility = theState; + + HYDROGUI_DataObject* hydroObject = getDataModel()->getDataObject( theObject ); + if ( hydroObject ) + { + SUIT_AbstractModel* treeModel = dynamic_cast( getApp()->objectBrowser()->model() ); + QString id = hydroObject->text( hydroObject->customData( Qtx::IdType ).toInt() ); + Qtx::VisibilityState visState = treeModel->visibilityState( id ); + if ( visState != Qtx::UnpresentableState ) + treeModel->setVisibilityState( id, theState ? Qtx::ShownState : Qtx::HiddenState ); + } } } @@ -1619,3 +1666,39 @@ HYDROGUI_Operation* HYDROGUI_Module::activeOperation() return anOp; } + +/*! + * \brief Virtual public slot + * + * This method is called after the object inserted into data view to update their visibility state + * This is default implementation + */ +void HYDROGUI_Module::onObjectClicked( SUIT_DataObject* theObject, int theColumn ) +{ + if ( !isActiveModule() ) + return; + + HYDROGUI_DataObject* hydroObject = dynamic_cast( theObject ); + + // change visibility of object + if ( !hydroObject || theColumn != SUIT_DataObject::VisibilityId ) + return; + + SUIT_AbstractModel* treeModel = dynamic_cast( getApp()->objectBrowser()->model() ); + + QString id = theObject->text( theObject->customData( Qtx::IdType ).toInt() ); + Qtx::VisibilityState visState = treeModel->visibilityState( id ); + if ( visState == Qtx::UnpresentableState ) + return; + + visState = visState == Qtx::ShownState ? Qtx::HiddenState : Qtx::ShownState; + treeModel->setVisibilityState( id, visState ); + + bool vis = visState == Qtx::ShownState; + if ( vis == isObjectVisible( HYDROGUI_Tool::GetActiveViewId( this ), hydroObject->modelObject() ) ) + return; + + setObjectVisible( HYDROGUI_Tool::GetActiveViewId( this ), hydroObject->modelObject(), vis ); + + update( UF_OCCViewer | ( visState == Qtx::ShownState ? UF_FitAll : 0 ) ); +}