X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMBase%2FGEOMBase_Helper.cxx;h=d7fa50169943083c59382e1e8e36b49811bb445e;hb=efb533a09c6c5f38d840c71cb4e73355d13af530;hp=fa682ffc516c2a2a21fd6ab52fe69bdc3f762d74;hpb=b9104d97c5893c00247c9ad7249cf2443ab15178;p=modules%2Fgeom.git diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx old mode 100755 new mode 100644 index fa682ffc5..d7fa50169 --- a/src/GEOMBase/GEOMBase_Helper.cxx +++ b/src/GEOMBase/GEOMBase_Helper.cxx @@ -1,4 +1,4 @@ -// 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 @@ -24,6 +24,8 @@ // File : GEOMBase_Helper.cxx // Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) +#include + #include "GEOMBase_Helper.h" #include "GEOMBase.h" #include "GEOM_Operation.h" @@ -88,8 +90,8 @@ GEOM::GEOM_Gen_ptr GEOMBase_Helper::getGeomEngine() // 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) { @@ -180,9 +182,9 @@ void GEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateView 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 ); } } @@ -223,9 +225,9 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, 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); } @@ -245,9 +247,9 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, 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 ); } } @@ -489,9 +491,10 @@ void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const std::list 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() )); } } @@ -540,6 +543,20 @@ void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode 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 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 @@ -608,12 +625,10 @@ QString GEOMBase_Helper::addInStudy( GEOM::GEOM_Object_ptr theObj, const char* t 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() ) { @@ -622,7 +637,7 @@ QString GEOMBase_Helper::addInStudy( GEOM::GEOM_Object_ptr theObj, const char* t } // Each dialog is responsible for this method implementation, // default implementation does nothing - restoreSubShapes(aStudyDS, aSO); + restoreSubShapes(aSO); aSO->UnRegister(); return anEntry; @@ -632,15 +647,14 @@ QString GEOMBase_Helper::addInStudy( GEOM::GEOM_Object_ptr theObj, const char* t // 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); } @@ -656,7 +670,7 @@ void GEOMBase_Helper::updateObjBrowser() const CAM_Module* module = app->module( "Geometry" ); SalomeApp_Module* appMod = dynamic_cast( module ); if ( appMod ) { - appMod->updateObjBrowser( true ); + appMod->updateObjBrowser(); } } } @@ -670,18 +684,6 @@ void GEOMBase_Helper::updateViewer() 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 @@ -717,7 +719,7 @@ QString GEOMBase_Helper::getEntry( GEOM::GEOM_Object_ptr object ) const 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()); } @@ -732,7 +734,7 @@ QString GEOMBase_Helper::getEntry( GEOM::GEOM_Object_ptr object ) const GEOM_Displayer* GEOMBase_Helper::getDisplayer() { if ( !myDisplayer ) - myDisplayer = new GEOM_Displayer( getStudy() ); + myDisplayer = new GEOM_Displayer(); return myDisplayer; } @@ -754,7 +756,7 @@ bool GEOMBase_Helper::openCommand() bool res = false; if ( !getStudy() || hasCommand() ) { - MESSAGE("Getting out from openCommand()") + MESSAGE("Getting out from openCommand()"); return res; } @@ -766,8 +768,8 @@ bool GEOMBase_Helper::openCommand() } else { - MESSAGE("anOp->_is_nil() = true") - } + MESSAGE("anOp->_is_nil() = true"); + } return res; } @@ -857,7 +859,7 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) { - MESSAGE("appStudy is empty") + MESSAGE("appStudy is empty"); return false; } _PTR(Study) aStudy = appStudy->studyDS(); @@ -921,7 +923,7 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b aName = GEOMBase::GetDefaultName( getPrefix( obj ) ); } } - anEntryList << addInStudy( obj, aName.toLatin1().constData() ); + anEntryList << addInStudy( obj, aName.toUtf8().constData() ); // updateView=false if( isDisplayResult() ) display( obj, false ); @@ -943,12 +945,20 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b } 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( anApp ); if(aLightApp) { - QString anOpName( typeid(*this).name() ); aLightApp->emitOperationFinished( "Geometry", anOpName, anEntryList ); if ( !isDisableBrowsing() ) @@ -968,13 +978,13 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b catch( const SALOME::SALOME_Exception& e ) { SalomeApp_Tools::QtCatchCorbaException( e ); abortCommand(); - MESSAGE("Exception caught") - } + MESSAGE("Exception caught"); + } updateViewer(); - MESSAGE("result ="<