return false; /* aborted */
}
}
-
- bool isOk = onAccept();
+
+ setIsDisableBrowsing( true );
+ bool isOk = onAccept( true, true, false );
+ setIsDisableBrowsing( false );
// restore selection, corresponding to current selection mode
SubShapeToggled();
//=================================================================================
void EntityGUI_SubShapeDlg::activateSelection()
{
- erasePreview(false);
+ bool isApply = ((QPushButton*)sender() == buttonApply());
+
+ if(!isApply)
+ erasePreview(false);
// local selection
if (!myObject->_is_nil() && !isAllSubShapes())
}
}
- int prevDisplayMode = aDisplayer->SetDisplayMode(0);
+ if(!isApply) {
+ int prevDisplayMode = aDisplayer->SetDisplayMode(0);
- SUIT_ViewWindow* aViewWindow = 0;
- SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy();
- if (activeStudy)
- aViewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
- if (aViewWindow == 0) return;
+ SUIT_ViewWindow* aViewWindow = 0;
+ SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy();
+ if (activeStudy)
+ aViewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+ if (aViewWindow == 0) return;
- SUIT_ViewManager* aViewManager = aViewWindow->getViewManager();
- if (aViewManager->getType() != OCCViewer_Viewer::Type() &&
- aViewManager->getType() != SVTK_Viewer::Type())
- return;
+ SUIT_ViewManager* aViewManager = aViewWindow->getViewManager();
+ if (aViewManager->getType() != OCCViewer_Viewer::Type() &&
+ aViewManager->getType() != SVTK_Viewer::Type())
+ return;
- SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
- SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
- if (aView == 0) return;
+ SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
+ SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
+ if (aView == 0) return;
- //TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myObject);
+ //TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myObject);
- TopTools_IndexedMapOfShape aSubShapesMap;
- TopExp::MapShapes(myShape, aSubShapesMap);
- CORBA::String_var aMainEntry = myObject->GetStudyEntry();
- QString anEntryBase = aMainEntry.in();
+ TopTools_IndexedMapOfShape aSubShapesMap;
+ TopExp::MapShapes(myShape, aSubShapesMap);
+ CORBA::String_var aMainEntry = myObject->GetStudyEntry();
+ QString anEntryBase = aMainEntry.in();
- TopExp_Explorer anExp (myShape, (TopAbs_ShapeEnum)shapeType());
- for (; anExp.More(); anExp.Next())
- {
- TopoDS_Shape aSubShape = anExp.Current();
- int index = aSubShapesMap.FindIndex(aSubShape);
- QString anEntry = anEntryBase + QString("_%1").arg(index);
+ TopExp_Explorer anExp (myShape, (TopAbs_ShapeEnum)shapeType());
+ for (; anExp.More(); anExp.Next())
+ {
+ TopoDS_Shape aSubShape = anExp.Current();
+ int index = aSubShapesMap.FindIndex(aSubShape);
+ QString anEntry = anEntryBase + QString("_%1").arg(index);
- SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, aView);
- if (aPrs) {
- displayPreview(aPrs, true, false); // append, do not update
+ SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, aView);
+ if (aPrs) {
+ displayPreview(aPrs, true, false); // append, do not update
+ }
}
+ aDisplayer->UpdateViewer();
+ aDisplayer->SetDisplayMode(prevDisplayMode);
}
- aDisplayer->UpdateViewer();
- aDisplayer->SetDisplayMode(prevDisplayMode);
}
globalSelection(GEOM_ALLSHAPES);
//================================================================
GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop )
: myDesktop( desktop ), myViewWindow( 0 ), myDisplayer( 0 ), myCommand( 0 ), isPreview( false ),
- myIsApplyAndClose( false ), myIsOptimizedBrowsing( false ), myIsWaitCursorEnabled( true )
+ myIsApplyAndClose( false ), myIsOptimizedBrowsing( false ), myIsWaitCursorEnabled( true ),
+ myIsDisableBrowsing(false)
{
}
// It perfroms user input validation, then it
// performs a proper operation and manages transactions, etc.
//================================================================
-bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction )
+bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, bool erasePreviewFlag )
{
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
if ( !appStudy )
showError( msg );
return false;
}
-
- erasePreview( false );
+
+ if(erasePreviewFlag)
+ erasePreview( false );
bool result = false;
commitCommand();
updateObjBrowser();
if( SUIT_Application* anApp = SUIT_Session::session()->activeApplication() ) {
- if( LightApp_Application* aLightApp = dynamic_cast<LightApp_Application*>( anApp ) )
+ LightApp_Application* aLightApp = dynamic_cast<LightApp_Application*>( anApp );
+ if(aLightApp && !isDisableBrowsing() )
aLightApp->browseObjects( anEntryList, isApplyAndClose(), isOptimizedBrowsing() );
anApp->putInfo( QObject::tr("GEOM_PRP_DONE") );
}
SalomeApp_Study* getStudy () const;
bool checkViewWindow ();
- bool onAccept( const bool publish = true, const bool useTransaction = true );
+ bool onAccept( const bool publish = true, const bool useTransaction = true, bool erasePreviewFlag = true);
// This method should be called from "OK" button handler.
// <publish> == true means that objects returned by execute()
// should be published in a study.
virtual void setIsWaitCursorEnabled( const bool theFlag ) {myIsWaitCursorEnabled = theFlag;}
virtual bool isWaitCursorEnabled() const {return myIsWaitCursorEnabled ;}
+ virtual void setIsDisableBrowsing( const bool theFlag ) { myIsDisableBrowsing = theFlag; }
+ virtual bool isDisableBrowsing() const { return myIsDisableBrowsing; }
+
private:
QString getEntry( GEOM::GEOM_Object_ptr ) const;
bool myIsApplyAndClose;
bool myIsOptimizedBrowsing;
bool myIsWaitCursorEnabled;
+ bool myIsDisableBrowsing; //This flag enable/disable selection
+ //in the Object Browser newly created objects.
};