-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// File : GEOMBase_Helper.cxx
// Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com)
+#include <QRegExp>
+
#include "GEOMBase_Helper.h"
#include "GEOMBase.h"
#include "GEOM_Operation.h"
// Function : GEOMBase_Helper
// Purpose :
//================================================================
-GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop )
- : myDisplayer( 0 ), myCommand( 0 ), myViewWindow( 0 ), isPreview( false ), myDesktop( desktop ),
+GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop, SUIT_ViewWindow* aVW )
+ : myDisplayer( 0 ), myCommand( 0 ), myViewWindow( aVW ), isPreview( false ), myDesktop( desktop ),
myIsApplyAndClose( false ), myIsOptimizedBrowsing( false ), myIsWaitCursorEnabled( true ),
myIsDisableBrowsing(false), myIsDisplayResult(true)
{
if ( !object->_is_nil() ) {
QString entry = getEntry( object );
QString name = GEOMBase::GetName( object );
- getDisplayer()->Erase ( new SALOME_InteractiveObject(entry.toLatin1().constData(),
+ getDisplayer()->Erase ( new SALOME_InteractiveObject(entry.toUtf8().constData(),
"GEOM",
- name.toLatin1().constData() ),
+ name.toUtf8().constData() ),
true, updateView );
}
}
QString entry = getEntry( object );
QString name = GEOMBase::GetName( object );
getDisplayer()->Redisplay
- (new SALOME_InteractiveObject (entry.toLatin1().constData(),
+ (new SALOME_InteractiveObject (entry.toUtf8().constData(),
"GEOM",
- name.toLatin1().constData()),
+ name.toUtf8().constData()),
false);
}
QString entry = getEntry( aChild );
QString name = GEOMBase::GetName( aChild );
getDisplayer()->Redisplay
- ( new SALOME_InteractiveObject( entry.toLatin1().constData(),
+ ( new SALOME_InteractiveObject( entry.toUtf8().constData(),
"GEOM",
- name.toLatin1().constData() ),
+ name.toUtf8().constData() ),
false );
}
}
QString anEntry = getEntry( anObj );
if ( anEntry != "" )
{
+ //MESSAGE("anEntry: "<< anEntry.toStdString().c_str());
QString aName = GEOMBase::GetName( anObj );
- aListOfIO.Append( new SALOME_InteractiveObject( anEntry.toLatin1().constData(),
- "GEOM", aName.toLatin1().constData() ));
+ aListOfIO.Append( new SALOME_InteractiveObject( anEntry.toUtf8().constData(),
+ "GEOM", aName.toUtf8().constData() ));
}
}
localSelection( obj, modes );
}
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// mode is from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( const std::string& entry, const std::string& name, const std::list<int> modes)
+{
+ SALOME_ListIO aListOfIO;
+ QString aName = name.c_str();
+ aListOfIO.Append( new SALOME_InteractiveObject( entry.c_str(),
+ "GEOM", aName.toUtf8().constData() ));
+ getDisplayer()->LocalSelection( aListOfIO, modes );
+}
+
//================================================================
// Function : localSelection
// Purpose : Activate selection of sub-shapes in accordance with mode
if ( !aStudy || theObj->_is_nil() )
return QString();
- SALOMEDS::Study_var aStudyDS = GeometryGUI::ClientStudyToStudy(aStudy);
-
GEOM::GEOM_Object_ptr aFatherObj = getFather( theObj );
SALOMEDS::SObject_var aSO =
- getGeomEngine()->AddInStudy(aStudyDS, theObj, theName, aFatherObj);
+ getGeomEngine()->AddInStudy(theObj, theName, aFatherObj);
QString anEntry;
if ( !aSO->_is_nil() ) {
}
// Each dialog is responsible for this method implementation,
// default implementation does nothing
- restoreSubShapes(aStudyDS, aSO);
+ restoreSubShapes(aSO);
aSO->UnRegister();
return anEntry;
// Function : restoreSubShapes
// Purpose : restore tree of argument's sub-shapes under the resulting shape
//================================================================
-void GEOMBase_Helper::restoreSubShapes (SALOMEDS::Study_ptr /*theStudy*/,
- SALOMEDS::SObject_ptr /*theSObject*/)
+void GEOMBase_Helper::restoreSubShapes (SALOMEDS::SObject_ptr /*theSObject*/)
{
// do nothing by default
// example of implementation in particular dialog:
// GEOM::ListOfGO anArgs;
// anArgs.length(0); // empty list means that all arguments should be restored
- // getGeomEngine()->RestoreSubShapesSO(theStudy, theSObject, anArgs,
+ // getGeomEngine()->RestoreSubShapesSO(theSObject, anArgs,
// /*theFindMethod=*/GEOM::FSM_GetInPlace,
// /*theInheritFirstArg=*/false);
}
CAM_Module* module = app->module( "Geometry" );
SalomeApp_Module* appMod = dynamic_cast<SalomeApp_Module*>( module );
if ( appMod ) {
- appMod->updateObjBrowser( true );
+ appMod->updateObjBrowser();
}
}
}
getDisplayer()->UpdateViewer();
}
-//================================================================
-// Function : getStudyId
-// Purpose : Get study Id
-//================================================================
-int GEOMBase_Helper::getStudyId() const
-{
- int anId = -1;
- if ( getStudy() )
- anId = getStudy()->id();
- return anId;
-}
-
//================================================================
// Function : getStudy
// Purpose : Returns the active study. It is recommended to use
if ( study ) {
QString objIOR = GEOMBase::GetIORFromObject( object );
if ( objIOR != "" ) {
- _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( objIOR.toLatin1().constData() ) );
+ _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( objIOR.toUtf8().constData() ) );
if ( SO )
return QString::fromStdString(SO->GetID());
}
GEOM_Displayer* GEOMBase_Helper::getDisplayer()
{
if ( !myDisplayer )
- myDisplayer = new GEOM_Displayer( getStudy() );
+ myDisplayer = new GEOM_Displayer();
return myDisplayer;
}
bool res = false;
if ( !getStudy() || hasCommand() )
{
- MESSAGE("Getting out from openCommand()")
+ MESSAGE("Getting out from openCommand()");
return res;
}
}
else
{
- MESSAGE("anOp->_is_nil() = true")
- }
+ MESSAGE("anOp->_is_nil() = true");
+ }
return res;
}
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
if ( !appStudy )
{
- MESSAGE("appStudy is empty")
+ MESSAGE("appStudy is empty");
return false;
}
_PTR(Study) aStudy = appStudy->studyDS();
aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
}
}
- anEntryList << addInStudy( obj, aName.toLatin1().constData() );
+ anEntryList << addInStudy( obj, aName.toUtf8().constData() );
// updateView=false
if( isDisplayResult() )
display( obj, false );
}
if ( nbObjs ) {
+ const QString anOpName( typeid(*this).name() );
+ // The operator name may have the following format: 24PrimitiveGUI_CylinderDlg
+ // clean it up to get the simple operator (here Cylinder) name into the log.
+ const QRegExp rx("^[^\w]*_(.*)Dlg$");
+ const int pos = rx.indexIn(anOpName);
+ SalomeApp_Application::logStructuredUserEvent( "Geom",
+ "geometry",
+ pos == -1 ? anOpName : rx.cap(1),
+ "applied" );
commitCommand();
updateObjBrowser();
if( SUIT_Application* anApp = SUIT_Session::session()->activeApplication() ) {
LightApp_Application* aLightApp = dynamic_cast<LightApp_Application*>( anApp );
if(aLightApp) {
- QString anOpName( typeid(*this).name() );
aLightApp->emitOperationFinished( "Geometry", anOpName, anEntryList );
if ( !isDisableBrowsing() )
catch( const SALOME::SALOME_Exception& e ) {
SalomeApp_Tools::QtCatchCorbaException( e );
abortCommand();
- MESSAGE("Exception caught")
- }
+ MESSAGE("Exception caught");
+ }
updateViewer();
- MESSAGE("result ="<<result)
- return result;
+ MESSAGE("result ="<<result);
+ return result;
}
// It should perform the required operation and put all new or modified objects into
// <objects> argument.Should return <false> if some error occurs during its execution.
//================================================================
-bool GEOMBase_Helper::execute( ObjectList& objects )
+bool GEOMBase_Helper::execute( ObjectList& )
{
return false;
}
// for <theObj> or a nil reference if <theObj> should be published
// as a top-level object.
//================================================================
-GEOM::GEOM_Object_ptr GEOMBase_Helper::getFather( GEOM::GEOM_Object_ptr theObj )
+GEOM::GEOM_Object_ptr GEOMBase_Helper::getFather( GEOM::GEOM_Object_ptr )
{
return GEOM::GEOM_Object::_nil();
}
// Function : getObjectName
// Purpose : Redefine this method to return proper name for the given object
//================================================================
-QString GEOMBase_Helper::getObjectName(GEOM::GEOM_Object_ptr object) const
+QString GEOMBase_Helper::getObjectName( GEOM::GEOM_Object_ptr ) const
{
return QString();
}
// Function : getNewObjectName
// Purpose : Redefine this method to return proper name for a new object
//================================================================
-QString GEOMBase_Helper::getNewObjectName (int) const
+QString GEOMBase_Helper::getNewObjectName( int ) const
{
return QString();
}
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
_PTR(Study) aDStudy = appStudy->studyDS();
QString IOR = GEOMBase::GetIORFromObject( theFather );
- _PTR(SObject) SObj ( aDStudy->FindObjectIOR( IOR.toLatin1().constData() ) );
+ _PTR(SObject) SObj ( aDStudy->FindObjectIOR( IOR.toUtf8().constData() ) );
bool inStudy = false;
GEOM::GEOM_Object_var aReturnObject;
//================================================================
void GEOMBase_Helper::addSubshapesToStudy()
{
- //Impemented in Dialogs, called from Accept method
+ //Implemented in Dialogs, called from Accept method
}
//================================================================
//================================================================
QList<GEOM::GeomObjPtr> GEOMBase_Helper::getSourceObjects()
{
- //Impemented in Dialogs, called from Accept method
+ //Implemented in Dialogs, called from Accept method
QList<GEOM::GeomObjPtr> res;
return res;
}
GEOM::GeomObjPtr subShape = findObjectInFather( object.get(), idx );
if ( !subShape ) {
// sub-shape is not yet published in the study
- GEOM::ShapesOpPtr shapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ GEOM::ShapesOpPtr shapesOp = getGeomEngine()->GetIShapesOperations();
subShape.take( shapesOp->GetSubShape( object.get(), idx ) ); // take ownership!
}
if ( typeInList( (TopAbs_ShapeEnum)(subShape->GetShapeType()), types ) ) {