From ba274e7ad1f0eb13130e5086f55191e8e165a220 Mon Sep 17 00:00:00 2001 From: jfa Date: Thu, 2 Oct 2008 13:54:43 +0000 Subject: [PATCH] IMP 0019918: Re-open popup for imported shapes. --- .../gui/GEOM/images/geomimport_reopen.png | Bin 0 -> 11051 bytes doc/salome/gui/GEOM/input/import_export.doc | 8 +++ idl/GEOM_Gen.idl | 7 ++ src/GEOMGUI/GEOM_msg_en.po | 6 ++ src/GEOMGUI/GeometryGUI.cxx | 25 +++++-- src/GEOM_I/GEOM_ITransformOperations_i.cc | 36 ++++++++++ src/GEOM_I/GEOM_ITransformOperations_i.hh | 1 + src/TransformationGUI/TransformationGUI.cxx | 68 ++++++++++++++++-- 8 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/geomimport_reopen.png diff --git a/doc/salome/gui/GEOM/images/geomimport_reopen.png b/doc/salome/gui/GEOM/images/geomimport_reopen.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6745db48f54ababcfaed951226c1ff89ce0e0b GIT binary patch literal 11051 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 y-L>V!4%-Q5ENupWgt=?L;eL*%BMI0 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/input/import_export.doc b/doc/salome/gui/GEOM/input/import_export.doc index 8a5219ebe..25eb1ae67 100644 --- a/doc/salome/gui/GEOM/input/import_export.doc +++ b/doc/salome/gui/GEOM/input/import_export.doc @@ -22,6 +22,14 @@ Select the required file and click \b Open. Your file will be imported in the module and its contents (geometrical object) will be displayed in the Object Browser. +\note You can re-open ones imported shape from the initial file, if +the file has been changed on disk. Use for that item +Reload From Disk from context menu of imported +shape. Reloaded shape will have the same representation parameters +like before this operation. + +\image html geomimport_reopen.png + \n To export geometrical objects into a BREP, IGES, STEP file: diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index c130973fb..38f10ca6e 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -792,6 +792,13 @@ module GEOM GEOM_Object PositionShapeCopy (in GEOM_Object theObject, in GEOM_Object theStartLCS, in GEOM_Object theEndLCS); + + /*! + * Recompute the shape from its arguments. + * \param theObject The object to be recomputed. + * \return theObject. + */ + GEOM_Object RecomputeObject (in GEOM_Object theObject); }; /*! diff --git a/src/GEOMGUI/GEOM_msg_en.po b/src/GEOMGUI/GEOM_msg_en.po index 20cd3b673..43c6e908a 100644 --- a/src/GEOMGUI/GEOM_msg_en.po +++ b/src/GEOMGUI/GEOM_msg_en.po @@ -2482,6 +2482,12 @@ msgstr "Edit" msgid "STB_GROUP_EDIT" msgstr "Edit a group" +msgid "MEN_RELOAD_IMPORTED" +msgstr "Reload From Disk" + +msgid "STB_RELOAD_IMPORTED" +msgstr "Reload imported shape from its original place on disk" + msgid "MEN_BLOCKS" msgstr "Blocks" diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index 2b95749ba..d1ffd70c2 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -71,6 +71,7 @@ #include #include +#include "GEOMImpl_Types.hxx" extern "C" { Standard_EXPORT CAM_Module* createModule() { @@ -488,7 +489,8 @@ void GeometryGUI::OnGUIEvent( int id ) id == 5025 || // MENU TRANSFORMATION - SCALE id == 5026 || // MENU TRANSFORMATION - OFFSET id == 5027 || // MENU TRANSFORMATION - MULTI-TRANSLATION - id == 5028 ) { // MENU TRANSFORMATION - MULTI-ROTATION + id == 5028 || // MENU TRANSFORMATION - MULTI-ROTATION + id == 5029 ) { // CONTEXT(POPUP) MENU - RELOAD_IMPORTED #ifndef WNT library = getLibrary( "libTransformationGUI.so" ); #else @@ -825,6 +827,7 @@ void GeometryGUI::initialize( CAM_Application* app ) createGeomAction( 5026, "OFFSET" ); createGeomAction( 5027, "MUL_TRANSLATION" ); createGeomAction( 5028, "MUL_ROTATION" ); + createGeomAction( 5029, "RELOAD_IMPORTED" ); createGeomAction( 503, "PARTITION" ); createGeomAction( 504, "ARCHIMEDE" ); @@ -1722,13 +1725,23 @@ void GeometryGUI::contextMenuPopup( const QString& client, QPopupMenu* menu, QSt SalomeApp_Module::contextMenuPopup( client, menu, title ); SALOME_ListIO lst; getApp()->selectionMgr()->selectedObjects( lst ); - if ( ( client == "OCCViewer" || client == "VTKViewer" ) && lst.Extent() == 1 ) { + + if (lst.Extent() == 1) { Handle(SALOME_InteractiveObject) io = lst.First(); - SalomeApp_Study* appStudy = dynamic_cast( application()->activeStudy() ); + SalomeApp_Study* appStudy = dynamic_cast(application()->activeStudy()); _PTR(Study) study = appStudy->studyDS(); - _PTR(SObject) obj = study->FindObjectID( io->getEntry() ); - if ( obj ) - title = QString( obj->GetName().c_str() ); + _PTR(SObject) aSObj = study->FindObjectID(io->getEntry()); + if (aSObj) { + // Set context menu title + if (client == "OCCViewer" || client == "VTKViewer") + title = QString(aSObj->GetName().c_str()); + + // Reload imported shape + CORBA::Object_var anObj = GeometryGUI::ClientSObjectToObject(aSObj); + GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow(anObj); + if (!CORBA::is_nil(aGeomObj) && aGeomObj->GetType() == GEOM_IMPORT) + action(5029)->addTo(menu); + } } } diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.cc b/src/GEOM_I/GEOM_ITransformOperations_i.cc index 1dff38932..338e901eb 100644 --- a/src/GEOM_I/GEOM_ITransformOperations_i.cc +++ b/src/GEOM_I/GEOM_ITransformOperations_i.cc @@ -1252,3 +1252,39 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateThreePointsCopy return GetObject(anObject); } + +//============================================================================= +/*! + * RecomputeObject + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RecomputeObject + (GEOM::GEOM_Object_ptr theObject) +{ + //Set a not done flag + GetOperations()->SetNotDone(); + GEOM::GEOM_Object_var aGEOMObject; + + if (theObject == NULL) return aGEOMObject._retn(); + + //check if the object is a subshape + //if (!theObject->IsMainShape()) { + // GetOperations()->SetErrorCode(SUBSHAPE_ERROR); + // return aGEOMObject._retn(); + //} + + aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject); + + //Get the object itself + CORBA::String_var anEntry = theObject->GetEntry(); + Handle(GEOM_Object) anObject = + GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry); + if (anObject.IsNull()) return aGEOMObject._retn(); + + //Perform the recomputation + Handle(GEOM_Function) aLastFunction = anObject->GetLastFunction(); + if (aLastFunction.IsNull()) return aGEOMObject._retn(); + GetOperations()->GetSolver()->ComputeFunction(aLastFunction); + + return aGEOMObject._retn(); +} diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.hh b/src/GEOM_I/GEOM_ITransformOperations_i.hh index 848e5077b..ccfdc50e1 100644 --- a/src/GEOM_I/GEOM_ITransformOperations_i.hh +++ b/src/GEOM_I/GEOM_ITransformOperations_i.hh @@ -151,6 +151,7 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i : GEOM::GEOM_Object_ptr thePoint1, GEOM::GEOM_Object_ptr thePoint2); + GEOM::GEOM_Object_ptr RecomputeObject (GEOM::GEOM_Object_ptr theObject); ::GEOMImpl_ITransformOperations* GetOperations() { return (::GEOMImpl_ITransformOperations*)GetImpl(); } }; diff --git a/src/TransformationGUI/TransformationGUI.cxx b/src/TransformationGUI/TransformationGUI.cxx index eb69c9037..1c5cfe1c8 100644 --- a/src/TransformationGUI/TransformationGUI.cxx +++ b/src/TransformationGUI/TransformationGUI.cxx @@ -27,12 +27,18 @@ // $Header$ #include "TransformationGUI.h" + +#include #include "GeometryGUI.h" -#include "SUIT_Session.h" -#include "SUIT_Desktop.h" - -#include "SalomeApp_Application.h" +#include +#include +#include +#include +#include +#include +#include +#include #include "TransformationGUI_MultiTranslationDlg.h" // Method MULTI TRANSLATION #include "TransformationGUI_MultiRotationDlg.h" // Method MULTI ROTATION @@ -100,6 +106,60 @@ bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) case 5028: // MULTI ROTATION aDlg = new TransformationGUI_MultiRotationDlg( getGeometryGUI(), parent, "" ); break; + case 5029: // RELOAD IMPORTED SHAPE + { + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + if (aSelList.Extent() == 1) { + Standard_Boolean testResult = Standard_False; + GEOM::GEOM_Object_var aGeomObj = + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (testResult) { + SalomeApp_Study* anAppStudy = dynamic_cast(app->activeStudy()); + GEOM::GEOM_ITransformOperations_var anOp = + GeometryGUI::GetGeomGen()->GetITransformOperations(anAppStudy->id()); + if (!anOp->_is_nil()) { + anOp->RecomputeObject(aGeomObj); + GEOM_Displayer aDisp (anAppStudy); + //aDisp.Redisplay(aSelList.First()); + //aDisp.Display(aSelList.First()); + Handle(SALOME_InteractiveObject) theIO = aSelList.First(); + SUIT_Desktop* desk = app->desktop(); + QPtrList wnds = desk->windows(); + SUIT_ViewWindow* wnd; + for ( wnd = wnds.first(); wnd; wnd = wnds.next() ) + { + SUIT_ViewManager* vman = wnd->getViewManager(); + if ( vman ) + { + SUIT_ViewModel* vmodel = vman->getViewModel(); + if ( vmodel ) + { + SALOME_View* view = dynamic_cast(vmodel); + if ( view ) + { + //if (view->isVisible(theIO) || view == GetActiveView()) + if (view->isVisible(theIO)) + { + //SALOME_Prs* prs = view->CreatePrs( theIO->getEntry() ); + //if ( prs ) { + // prs->Update(&aDisp); + // view->Repaint(); + //} + aDisp.Erase(theIO, false, false, view); + aDisp.Display(theIO, true, view); + } + } + } + } + } + // ? Redisplay subshapes ? + } + } + } + } + break; default: app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); break;