-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 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
#include <LightApp_DataOwner.h>
#include <SalomeApp_Tools.h>
#include <SALOME_ListIO.hxx>
+#include "utilities.h"
#include <SALOME_Prs.h>
#include "utilities.h"
#include <OCCViewer_ViewModel.h>
#include <SVTK_ViewModel.h>
-#include <TColStd_MapOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
// Purpose :
//================================================================
GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop )
- : myDesktop( desktop ), myViewWindow( 0 ), myDisplayer( 0 ), myCommand( 0 ), isPreview( false ),
+ : myDisplayer( 0 ), myCommand( 0 ), myViewWindow( 0 ), isPreview( false ), myDesktop( desktop ),
myIsApplyAndClose( false ), myIsOptimizedBrowsing( false ), myIsWaitCursorEnabled( true ),
myIsDisableBrowsing(false), myIsDisplayResult(true)
{
const bool toRemoveFromEngine,
const double lineWidth,
const int displayMode,
- const int color )
+ const int color,
+ const bool append )
{
if(!display) {
erasePreview( update );
return;
}
- erasePreview( false );
+ if( !append )
+ erasePreview( false );
try {
SUIT_OverrideCursor wc;
{
SUIT_ViewManager* aViewManager = myViewWindow->getViewManager();
if ( aViewManager->getType() == OCCViewer_Viewer::Type() ||
- aViewManager->getType() == SVTK_Viewer::Type() )
+ aViewManager->getType() == SVTK_Viewer::Type() )
{
- SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
- SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
- if (aView)
- aView->Erase( getDisplayer(), *anIter, true );
+ SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
+ SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
+ if (aView)
+ aView->Erase( getDisplayer(), *anIter, true );
}
}
delete *anIter;
//================================================================
// Function : localSelection
// Purpose : Activate selection of sub-shapes in accordance with mode
-// theMode is from TopAbs_ShapeEnum
+// modes are from TopAbs_ShapeEnum
//================================================================
-void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const std::list<int> modes )
{
SALOME_ListIO aListOfIO;
anEntry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( anObj ).toLatin1().constData() ) ) );
}
- getDisplayer()->LocalSelection( aListOfIO, theMode );
+ getDisplayer()->LocalSelection( aListOfIO, modes );
}
//================================================================
// Purpose : Activate selection of sub-shapes in accordance with mode
// theMode is from TopAbs_ShapeEnum
//================================================================
-void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+{
+ std::list<int> modes;
+ modes.push_back( theMode );
+ localSelection( theObjs, modes );
+}
+
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// modes are from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const std::list<int> modes )
{
// If object is null local selection for all objects is activated
if ( obj->_is_nil() ) {
- getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), mode );
+ getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), modes );
return;
}
ObjectList objList;
objList.push_back( obj );
- localSelection( objList, mode );
+ localSelection( objList, modes );
}
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// mode is from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+{
+ std::list<int> modes;
+ modes.push_back( mode );
+ localSelection( obj, modes );
+}
+
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// modes are from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( const std::list<int> modes )
+{
+ localSelection( GEOM::GEOM_Object::_nil(), modes );
+}
+
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// mode is from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( const int mode )
+{
+ std::list<int> modes;
+ modes.push_back( mode );
+ localSelection( modes );
+}
//================================================================
// Function : globalSelection
//================================================================
// Function : onAccept
// Purpose : This method should be called from dialog's slots onOk() and onApply()
-// It perfroms user input validation, then it
+// It performs user input validation, then it
// performs a proper operation and manages transactions, etc.
//================================================================
bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, bool erasePreviewFlag )
showError();
}
else {
+ QList<GEOM::GeomObjPtr> anObjectList = getSourceObjects( );
addSubshapesToStudy(); // add Sub-shapes if local selection
const int nbObjs = objects.size();
QStringList anEntryList;
QString aName = getObjectName(obj);
if (aName.isEmpty()) {
aName = getNewObjectName(currObj);
- if ( nbObjs > 1 ) {
- if (aName.isEmpty())
- aName = getPrefix(obj);
- if (nbObjs <= 30) {
- // Try to find a unique name
- aName = GEOMBase::GetDefaultName(aName, extractPrefix());
- } else {
- // Don't check name uniqueness in case of numerous objects
- aName = aName + "_" + QString::number(aNumber++);
- }
- } else {
- // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
- if ( aName.isEmpty() )
- aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
- }
+ if ( nbObjs > 1 ) {
+ if (aName.isEmpty())
+ aName = getPrefix(obj);
+ if (nbObjs <= 30) {
+ // Try to find a unique name
+ aName = GEOMBase::GetDefaultName(aName, extractPrefix());
+ } else {
+ // Don't check name uniqueness in case of numerous objects
+ aName = aName + "_" + QString::number(aNumber++);
+ }
+ } else {
+ // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
+ if ( aName.isEmpty() )
+ aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
+ }
}
anEntryList << addInStudy( obj, aName.toLatin1().constData() );
// updateView=false
}
anApp->putInfo( QObject::tr("GEOM_PRP_DONE") );
}
+ if ( anObjectList.count() > 0 )
+ hideSourceObjects( anObjectList );
result = true;
}
else
catch( const SALOME::SALOME_Exception& e ) {
SalomeApp_Tools::QtCatchCorbaException( e );
abortCommand();
- MESSAGE("Exception catched")
+ MESSAGE("Exception caught")
}
updateViewer();
if ( !CORBA::is_nil( cobject ) ) {
GEOM::ListOfLong_var indices = cobject->GetSubShapeIndices();
int length = indices->length();
- // VSR 18/03/2014: we need only sub-shapes with single sub-shape index (to exclude groups, etc)
- if ( length == 1 && indices[0] == theIndex ) {
- object = cobject;
- break;
+ // VSR 18/03/2014: we need only sub-shapes with single sub-shape index (to exclude groups, etc)
+ if ( length == 1 && indices[0] == theIndex ) {
+ object = cobject;
+ break;
}
}
}
//Impemented in Dialogs, called from Accept method
}
+//================================================================
+// Function : getSourceObjects
+// Purpose : Virtual method to get source objects
+//================================================================
+QList<GEOM::GeomObjPtr> GEOMBase_Helper::getSourceObjects()
+{
+ //Impemented in Dialogs, called from Accept method
+ QList<GEOM::GeomObjPtr> res;
+ return res;
+}
+
//================================================================
// Function : getSelected
// Purpose : Get selected object by specified type
}
return result;
}
+//================================================================
+// Function : hideSourceObject
+// Purpose :
+//================================================================
+void GEOMBase_Helper::hideSourceObjects( QList<GEOM::GeomObjPtr> theObject )
+{
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ if ( resMgr->booleanValue( "Geometry", "hide_input_object", true) ) {
+ GEOM_Displayer* aDisplayer = getDisplayer();
+ for ( int i = 0; i < theObject.count(); i++ )
+ aDisplayer->Erase( theObject[i].get() );
+ }
+}
//================================================================
// Function : setIsApplyAndClose