-// GEOM GEOMGUI : GUI for Geometry component
+// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// GEOM GEOMGUI : GUI for Geometry component
// File : GeometryGUI.cxx
-// Author : Lucien PIGNOLONI
-// Module : GEOM
-// $Header$
+// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+#include <Standard_math.hxx> // E.A. must be included before Python.h to fix compilation on windows
+#include "Python.h"
#include "GeometryGUI.h"
+#include "GeometryGUI_Operations.h"
#include "GEOMGUI_OCCSelector.h"
#include "GEOMGUI_Selection.h"
+#include "GEOM_Displayer.h"
+#include "GEOM_AISShape.hxx"
+
+#include "GEOM_Actor.h"
+#include <SUIT_Desktop.h>
#include <SUIT_MessageBox.h>
#include <SUIT_ResourceMgr.h>
#include <SUIT_Session.h>
#include <OCCViewer_ViewModel.h>
#include <OCCViewer_ViewManager.h>
-#include <VTKViewer_ViewWindow.h>
+#include <SOCC_ViewModel.h>
+#include <SOCC_ViewWindow.h>
+
+#include <SVTK_ViewWindow.h>
#include <SVTK_RenderWindowInteractor.h>
#include <SVTK_InteractorStyle.h>
#include <SVTK_ViewModel.h>
-#include <VTKViewer_ViewManager.h>
#include <SalomeApp_Application.h>
-#include <SalomeApp_SelectionMgr.h>
-#include <SalomeApp_VTKSelector.h>
#include <SalomeApp_Study.h>
-#include <SalomeApp_Preferences.h>
+
+#include <LightApp_SelectionMgr.h>
+#include <LightApp_VTKSelector.h>
+#include <LightApp_DataObject.h>
+#include <LightApp_Preferences.h>
+
#include <SALOME_LifeCycleCORBA.hxx>
#include <SALOME_ListIO.hxx>
+#include <SALOME_ListIteratorOfListIO.hxx>
-// External includes
-#include <qfileinfo.h>
-#include <qpainter.h>
+#include <SALOMEDSClient_ClientFactory.hxx>
+#include <SALOMEDSClient_IParameters.hxx>
+// External includes
+#include <QMenu>
+#include <QAction>
+#include <QFileInfo>
+#include <QString>
+#include <QPainter>
+
+#include <AIS_Drawer.hxx>
+#include <AIS_ListOfInteractive.hxx>
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <Prs3d_Drawer.hxx>
#include <Prs3d_IsoAspect.hxx>
+#include <Aspect_TypeOfMarker.hxx>
#include <OSD_SharedLibrary.hxx>
+#include <NCollection_DataMap.hxx>
+#include <Graphic3d_HArray1OfBytes.hxx>
#include <utilities.h>
#include <vtkCamera.h>
#include <vtkRenderer.h>
+#include "GEOMImpl_Types.hxx"
extern "C" {
Standard_EXPORT CAM_Module* createModule() {
}
}
+GeometryGUI::StudyTextureMap GeometryGUI::myTextureMap;
+GEOM::GEOM_Gen_var GeometryGUI::myComponentGeom = GEOM::GEOM_Gen::_nil();
-GEOM::GEOM_Gen_var GeometryGUI::myComponentGeom = GEOM::GEOM_Gen::_nil();
-
-GEOM::GEOM_Gen_var GeometryGUI::GetGeomGen() { return GeometryGUI::myComponentGeom; }
+GEOM::GEOM_Gen_var GeometryGUI::GetGeomGen()
+{
+ // Bug 12290: exception in Mesh GUI on GEOMBase::GetShape() if Geometry GUI hasn't been loaded
+ if (CORBA::is_nil(myComponentGeom))
+ InitGeomGen();
+ return GeometryGUI::myComponentGeom;
+}
-bool GeometryGUI::InitGeomGen()
+bool GeometryGUI::InitGeomGen()
{
GeometryGUI aGG;
- if( CORBA::is_nil( myComponentGeom ) ) return false;
- return true;
-}
+ if( CORBA::is_nil( myComponentGeom ) ) return false;
+ return true;
+}
//=======================================================================
// function : ClientSObjectToObject
-// purpose :
+// purpose :
//=======================================================================
CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject)
{
//=======================================================================
// function : ClientStudyToStudy
-// purpose :
+// purpose :
//=======================================================================
SALOMEDS::Study_var GeometryGUI::ClientStudyToStudy (_PTR(Study) theStudy)
{
return aDSStudy._retn();
}
-//=================================================================================
-// class : CustomItem
-// purpose : Set Font to a text.
-//=================================================================================
-class CustomItem : public QCustomMenuItem
+void GeometryGUI::Modified( bool theIsUpdateActions )
{
-public:
- CustomItem(const QString& s, const QFont& f) : myString(s), myFont(f) {}
- ~CustomItem() {}
-
- void paint(QPainter* p, const QColorGroup& cg, bool act, bool /*enabled*/, int x, int y, int w, int h)
- {
- p->save();
- p->fillRect( x, y, w, h, act ? cg.highlight() : cg.mid() );
- p->setPen( act ? cg.highlightedText() : cg.buttonText() );
- p->setFont( myFont );
- p->drawText( x, y, w, h, AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString );
- p->restore();
- }
-
- QSize sizeHint()
- {
- return QFontMetrics( myFont ).size( AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString );
- }
-
- bool fullSpan() const
- {
- return true;
+ if( SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() ) ) {
+ if( SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() ) ) {
+ appStudy->Modified();
+ if( theIsUpdateActions )
+ app->updateActions();
+ }
}
-
-private:
- QString myString;
- QFont myFont;
-};
+}
//=======================================================================
// function : GeometryGUI::GeometryGUI()
// purpose : Constructor
//=======================================================================
GeometryGUI::GeometryGUI() :
- SalomeApp_Module( "GEOM" )
+ SalomeApp_Module( "GEOM" ),
+ LightApp_Module( "GEOM" )
{
if ( CORBA::is_nil( myComponentGeom ) )
- {
- SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA( getApp()->namingService() );
- Engines::Component_var comp = ls->FindOrLoad_Component( "FactoryServer", "GEOM" );
+ {
+ Engines::Component_var comp = SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "GEOM" );
myComponentGeom = GEOM::GEOM_Gen::_narrow( comp );
}
-
- myState = -1;
+
myActiveDialogBox = 0;
- myFatherior = "";
gp_Pnt origin = gp_Pnt(0., 0., 0.);
gp_Dir direction = gp_Dir(0., 0., 1.);
myWorkingPlane = gp_Ax3(origin, direction);
- myOCCSelectors.setAutoDelete( true );
- myVTKSelectors.setAutoDelete( true );
+ myDisplayer = 0;
+ myLocalSelectionMode = GEOM_ALLOBJECTS;
}
//=======================================================================
//=======================================================================
GeometryGUI::~GeometryGUI()
{
+ while (!myOCCSelectors.isEmpty())
+ delete myOCCSelectors.takeFirst();
+
+ while (!myVTKSelectors.isEmpty())
+ delete myVTKSelectors.takeFirst();
+
+ qDeleteAll(myGUIMap);
}
//=======================================================================
{
if ( !myGUIMap.contains( libraryName ) ) {
// try to load library if it is not loaded yet
- QCString libs;
- if( ( libs = getenv( "LD_LIBRARY_PATH" ) ) ) {
- QStringList dirList = QStringList::split( ":", libs, false ); // skip empty entries
- for( int i = dirList.count()-1; i >= 0; i-- ) {
- QString dir = dirList[ i ];
- QFileInfo fi( Qtx::addSlash( dirList[ i ] ) + libraryName );
- if( fi.exists() ) {
- OSD_SharedLibrary aSharedLibrary( (char*)fi.fileName().latin1() );
- bool res = aSharedLibrary.DlOpen( OSD_RTLD_LAZY );
- if( !res ) {
- MESSAGE( "Can't open library : " << aSharedLibrary.DlError() );
- continue; // continue search further
- }
- OSD_Function osdF = aSharedLibrary.DlSymb( "GetLibGUI" );
- if ( osdF != NULL ) {
- LibraryGUI func = (GEOMGUI* (*) (GeometryGUI*))osdF;
- GEOMGUI* libGUI = (*func)(this);
- if ( libGUI ) {
- myGUIMap[ libraryName ] = libGUI;
- break; // found and loaded!
- }
- }
- }
+#ifndef WNT
+ QString dirs = getenv( "LD_LIBRARY_PATH" );
+ QString sep = ":";
+#else
+ QString dirs = getenv( "PATH" );
+ QString sep = ";";
+#endif
+ if ( !dirs.isEmpty() ) {
+ QStringList dirList = dirs.split(sep, QString::SkipEmptyParts ); // skip empty entries
+ QListIterator<QString> it( dirList ); it.toBack();
+ while ( it.hasPrevious() ) {
+ QFileInfo fi( Qtx::addSlash( it.previous() ) + libraryName );
+ if ( fi.exists() ) {
+ OSD_SharedLibrary aSharedLibrary( fi.fileName().toLatin1().constData() );
+ bool res = aSharedLibrary.DlOpen( OSD_RTLD_LAZY );
+ if ( !res ) {
+ MESSAGE( "Can't open library : " << aSharedLibrary.DlError() );
+ continue; // continue search further
+ }
+ OSD_Function osdF = aSharedLibrary.DlSymb( "GetLibGUI" );
+ if ( osdF != NULL ) {
+ LibraryGUI func = (GEOMGUI* (*) (GeometryGUI*))osdF;
+ GEOMGUI* libGUI = (*func)( this );
+ if ( libGUI ) {
+ myGUIMap[ libraryName ] = libGUI;
+ break; // found and loaded!
+ }
+ }
+ }
}
}
}
- if ( myGUIMap.contains( libraryName ) )
- // library is successfully loaded
- return myGUIMap[ libraryName ];
- return 0;
+ return myGUIMap.contains( libraryName ) ? myGUIMap[ libraryName ] : 0;
}
//=======================================================================
SUIT_ViewWindow* window = application()->desktop()->activeWindow();
bool ViewOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
- bool ViewVTK = ( window && window->getViewManager()->getType() == VTKViewer_Viewer::Type() );
+ bool ViewVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
if( ViewOCC ) {
OCCViewer_ViewWindow* vw = dynamic_cast<OCCViewer_ViewWindow*>( window );
}
}
else if( ViewVTK ) {
- VTKViewer_ViewWindow* vw = dynamic_cast<VTKViewer_ViewWindow*>( window );
+ SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( window );
if ( vw ) {
vtkCamera* camera = vw->getRenderer()->GetActiveCamera();
//=======================================================================
void GeometryGUI::OnGUIEvent( int id )
{
- SUIT_Desktop* desk = application()->desktop();
+ SUIT_Application* anApp = application();
+ if (!anApp) return;
+ SUIT_Desktop* desk = anApp->desktop();
// check type of the active viewframe
SUIT_ViewWindow* window = desk->activeWindow();
bool ViewOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
- bool ViewVTK = ( window && window->getViewManager()->getType() == VTKViewer_Viewer::Type() );
+ bool ViewVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
// if current viewframe is not of OCC and not of VTK type - return immediately
// fix for IPAL8958 - allow some commands to execute even when NO viewer is active (rename for example)
- bool NotViewerDependentCommand = ( id == 901 || id == 216 || id == 213 );
- if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommand )
+ QList<int> NotViewerDependentCommands;
+ NotViewerDependentCommands << GEOMOp::OpRename
+ << GEOMOp::OpDelete
+ << GEOMOp::OpShow
+ << GEOMOp::OpShowOnly
+ << GEOMOp::OpShowChildren
+ << GEOMOp::OpHideChildren
+ << GEOMOp::OpPointMarker;
+ if ( !ViewOCC && !ViewVTK && !NotViewerDependentCommands.contains( id ) )
return;
// fix for IPAL9103, point 2
if ( CORBA::is_nil( GetGeomGen() ) ) {
- SUIT_MessageBox::error1( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_GET_ENGINE" ), tr( "GEOM_BUT_OK" ) );
+ SUIT_MessageBox::critical( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_GET_ENGINE" ), tr( "GEOM_BUT_OK" ) );
return;
}
- GEOMGUI* library = 0;
- // try to get-or-load corresponding GUI library
- if( id == 111 || // MENU FILE - IMPORT BREP
- id == 112 || // MENU FILE - IMPORT IGES
- id == 113 || // MENU FILE - IMPORT STEP
- id == 121 || // MENU FILE - EXPORT BREP
- id == 122 || // MENU FILE - EXPORT IGES
- id == 123 || // MENU FILE - EXPORT STEP
- id == 31 || // MENU EDIT - COPY
- id == 33 || // MENU EDIT - DELETE
- id == 411 || // MENU SETTINGS - ADD IN STUDY
- id == 412 || // MENU SETTINGS - SHADING COLOR
- id == 413 || // MENU SETTINGS - ISOS
- id == 414 || // MENU SETTINGS - STEP VALUE FOR SPIN BOXES
- id == 5103 || // MENU TOOLS - CHECK GEOMETRY
- id == 8032 || // POPUP VIEWER - COLOR
- id == 8033 || // POPUP VIEWER - TRANSPARENCY
- id == 8034 || // POPUP VIEWER - ISOS
- id == 804 || // POPUP VIEWER - ADD IN STUDY
- id == 901 || // OBJECT BROWSER - RENAME
- id == 9024 ) { // OBJECT BROWSER - OPEN
- //cout << "id " << id << " received" << endl;
- library = getLibrary( "libGEOMToolsGUI.so" );
- }
- else if( id == 211 || // MENU VIEW - WIREFRAME/SHADING
- id == 212 || // MENU VIEW - DISPLAY ALL
- id == 213 || // MENU VIEW - DISPLAY ONLY
- id == 214 || // MENU VIEW - ERASE ALL
- id == 215 || // MENU VIEW - ERASE
- id == 216 || // MENU VIEW - DISPLAY
- id == 80311 || // POPUP VIEWER - WIREFRAME
- id == 80312 ) { // POPUP VIEWER - SHADING
- library = getLibrary( "libDisplayGUI.so" );
- }
- else if( id == 4011 || // MENU BASIC - POINT
- id == 4012 || // MENU BASIC - LINE
- id == 4013 || // MENU BASIC - CIRCLE
- id == 4014 || // MENU BASIC - ELLIPSE
- id == 4015 || // MENU BASIC - ARC
- id == 4016 || // MENU BASIC - VECTOR
- id == 4017 || // MENU BASIC - PLANE
- id == 4018 || // MENU BASIC - WPLANE
- id == 4019 || // MENU BASIC - CURVE
- id == 4020 ) { // MENU BASIC - REPAIR
- library = getLibrary( "libBasicGUI.so" );
- }
- else if( id == 4021 || // MENU PRIMITIVE - BOX
- id == 4022 || // MENU PRIMITIVE - CYLINDER
- id == 4023 || // MENU PRIMITIVE - SPHERE
- id == 4024 || // MENU PRIMITIVE - TORUS
- id == 4025 ) { // MENU PRIMITIVE - CONE
- library = getLibrary( "libPrimitiveGUI.so" );
- }
- else if( id == 4031 || // MENU GENERATION - PRISM
- id == 4032 || // MENU GENERATION - REVOLUTION
- id == 4033 || // MENU GENERATION - FILLING
- id == 4034 ) { // MENU GENERATION - PIPE
- library = getLibrary( "libGenerationGUI.so" );
- }
- else if( id == 404 || // MENU ENTITY - SKETCHER
- id == 407 ) { // MENU ENTITY - EXPLODE
- library = getLibrary( "libEntityGUI.so" );
- }
- else if( id == 4081 || // MENU BUILD - EDGE
- id == 4082 || // MENU BUILD - WIRE
- id == 4083 || // MENU BUILD - FACE
- id == 4084 || // MENU BUILD - SHELL
- id == 4085 || // MENU BUILD - SOLID
- id == 4086 ) { // MENU BUILD - COMPUND
- library = getLibrary( "libBuildGUI.so" );
- }
- else if( id == 5011 || // MENU BOOLEAN - FUSE
- id == 5012 || // MENU BOOLEAN - COMMON
- id == 5013 || // MENU BOOLEAN - CUT
- id == 5014 ) { // MENU BOOLEAN - SECTION
- library = getLibrary( "libBooleanGUI.so" );
- }
- else if( id == 5021 || // MENU TRANSFORMATION - TRANSLATION
- id == 5022 || // MENU TRANSFORMATION - ROTATION
- id == 5023 || // MENU TRANSFORMATION - LOCATION
- id == 5024 || // MENU TRANSFORMATION - MIRROR
- id == 5025 || // MENU TRANSFORMATION - SCALE
- id == 5026 || // MENU TRANSFORMATION - OFFSET
- id == 5027 || // MENU TRANSFORMATION - MULTI-TRANSLATION
- id == 5028 ) { // MENU TRANSFORMATION - MULTI-ROTATION
- library = getLibrary( "libTransformationGUI.so" );
- }
- else if( id == 503 || // MENU OPERATION - PARTITION
- id == 504 || // MENU OPERATION - ARCHIMEDE
- id == 505 || // MENU OPERATION - FILLET
- id == 506 || // MENU OPERATION - CHAMFER
- id == 507 ) { // MENU OPERATION - CLIPPING RANGE
- library = getLibrary( "libOperationGUI.so" );
- }
- else if( id == 601 || // MENU REPAIR - SEWING
- id == 603 || // MENU REPAIR - SUPPRESS FACES
- id == 604 || // MENU REPAIR - SUPPRESS HOLE
- id == 605 || // MENU REPAIR - SHAPE PROCESSING
- id == 606 || // MENU REPAIR - CLOSE CONTOUR
- id == 607 || // MENU REPAIR - REMOVE INTERNAL WIRES
- id == 608 || // MENU REPAIR - ADD POINT ON EDGE
- id == 609 || // MENU REPAIR - FREE BOUNDARIES
- id == 610 || // MENU REPAIR - FREE FACES
- id == 602 ) { // MENU REPAIR - GLUE FACES
- library = getLibrary( "libRepairGUI.so" );
- }
- else if( id == 701 || // MENU MEASURE - PROPERTIES
- id == 702 || // MENU MEASURE - CDG
- id == 703 || // MENU MEASURE - INERTIA
- id == 7041 || // MENU MEASURE - BOUNDING BOX
- id == 7042 || // MENU MEASURE - MIN DISTANCE
- id == 705 || // MENU MEASURE - TOLERANCE
- id == 706 || // MENU MEASURE - WHATIS
- id == 707 || // MENU MEASURE - CHECK
- id == 7072 || // MENU MEASURE - CHECK COMPOUND OF BLOCKS
- id == 708 ) { // MENU MEASURE - POINT COORDINATES
- library = getLibrary( "libMeasureGUI.so" );
- }
- else if( id == 800 || // MENU GROUP - CREATE
- id == 8001 || // POPUP MENU - CREATE GROUP
- id == 801 ) { // MENU GROUP - EDIT
- library = getLibrary( "libGroupGUI.so" );
+ QString libName;
+ // find corresponding GUI library
+ switch ( id ) {
+ case GEOMOp::OpOriginAndVectors: // MENU BASIC - ORIGIN AND BASE VECTORS
+ createOriginAndBaseVectors(); // internal operation
+ return;
+ case GEOMOp::OpImport: // MENU FILE - IMPORT
+ case GEOMOp::OpExport: // MENU FILE - EXPORT
+ case GEOMOp::OpSelectVertex: // POPUP MENU - SELECT ONLY - VERTEX
+ case GEOMOp::OpSelectEdge: // POPUP MENU - SELECT ONLY - EDGE
+ case GEOMOp::OpSelectWire: // POPUP MENU - SELECT ONLY - WIRE
+ case GEOMOp::OpSelectFace: // POPUP MENU - SELECT ONLY - FACE
+ case GEOMOp::OpSelectShell: // POPUP MENU - SELECT ONLY - SHELL
+ case GEOMOp::OpSelectSolid: // POPUP MENU - SELECT ONLY - SOLID
+ case GEOMOp::OpSelectCompound: // POPUP MENU - SELECT ONLY - COMPOUND
+ case GEOMOp::OpSelectAll: // POPUP MENU - SELECT ONLY - SELECT ALL
+ case GEOMOp::OpDelete: // MENU EDIT - DELETE
+ case GEOMOp::OpCheckGeom: // MENU TOOLS - CHECK GEOMETRY
+ case GEOMOp::OpDeflection: // POPUP MENU - DEFLECTION COEFFICIENT
+ case GEOMOp::OpColor: // POPUP MENU - COLOR
+ case GEOMOp::OpTransparency: // POPUP MENU - TRANSPARENCY
+ case GEOMOp::OpIncrTransparency: // SHORTCUT - INCREASE TRANSPARENCY
+ case GEOMOp::OpDecrTransparency: // SHORTCUT - DECREASE TRANSPARENCY
+ case GEOMOp::OpIsos: // POPUP MENU - ISOS
+ case GEOMOp::OpIncrNbIsos: // SHORTCUT - INCREASE NB ISOS
+ case GEOMOp::OpDecrNbIsos: // SHORTCUT - DECREASE NB ISOS
+ case GEOMOp::OpAutoColor: // POPUP MENU - AUTO COLOR
+ case GEOMOp::OpNoAutoColor: // POPUP MENU - DISABLE AUTO COLOR
+ case GEOMOp::OpShowChildren: // POPUP MENU - SHOW CHILDREN
+ case GEOMOp::OpHideChildren: // POPUP MENU - HIDE CHILDREN
+ case GEOMOp::OpPointMarker: // POPUP MENU - POINT MARKER
+ case GEOMOp::OpRename: // POPUP MENU - RENAME
+ libName = "GEOMToolsGUI";
+ break;
+ case GEOMOp::OpDisplayMode: // MENU VIEW - WIREFRAME/SHADING
+ case GEOMOp::OpShowAll: // MENU VIEW - SHOW ALL
+ case GEOMOp::OpShowOnly: // MENU VIEW - DISPLAY ONLY
+ case GEOMOp::OpHideAll: // MENU VIEW - ERASE ALL
+ case GEOMOp::OpHide: // MENU VIEW - ERASE
+ case GEOMOp::OpShow: // MENU VIEW - DISPLAY
+ case GEOMOp::OpSwitchVectors: // MENU VIEW - VECTOR MODE
+ case GEOMOp::OpWireframe: // POPUP MENU - WIREFRAME
+ case GEOMOp::OpShading: // POPUP MENU - SHADING
+ case GEOMOp::OpVectors: // POPUP MENU - VECTORS
+ libName = "DisplayGUI";
+ break;
+ case GEOMOp::OpPoint: // MENU BASIC - POINT
+ case GEOMOp::OpLine: // MENU BASIC - LINE
+ case GEOMOp::OpCircle: // MENU BASIC - CIRCLE
+ case GEOMOp::OpEllipse: // MENU BASIC - ELLIPSE
+ case GEOMOp::OpArc: // MENU BASIC - ARC
+ case GEOMOp::OpVector: // MENU BASIC - VECTOR
+ case GEOMOp::OpPlane: // MENU BASIC - PLANE
+ case GEOMOp::OpCurve: // MENU BASIC - CURVE
+ case GEOMOp::OpLCS: // MENU BASIC - LOCAL COORDINATE SYSTEM
+ libName = "BasicGUI";
+ break;
+ case GEOMOp::OpBox: // MENU PRIMITIVE - BOX
+ case GEOMOp::OpCylinder: // MENU PRIMITIVE - CYLINDER
+ case GEOMOp::OpSphere: // MENU PRIMITIVE - SPHERE
+ case GEOMOp::OpTorus: // MENU PRIMITIVE - TORUS
+ case GEOMOp::OpCone: // MENU PRIMITIVE - CONE
+ case GEOMOp::OpRectangle: // MENU PRIMITIVE - FACE
+ case GEOMOp::OpDisk: // MENU PRIMITIVE - DISK
+ libName = "PrimitiveGUI";
+ break;
+ case GEOMOp::OpPrism: // MENU GENERATION - PRISM
+ case GEOMOp::OpRevolution: // MENU GENERATION - REVOLUTION
+ case GEOMOp::OpFilling: // MENU GENERATION - FILLING
+ case GEOMOp::OpPipe: // MENU GENERATION - PIPE
+ libName = "GenerationGUI";
+ break;
+ case GEOMOp::Op2dSketcher: // MENU ENTITY - SKETCHER
+ case GEOMOp::Op3dSketcher: // MENU ENTITY - 3D SKETCHER
+ case GEOMOp::OpExplode: // MENU ENTITY - EXPLODE
+ libName = "EntityGUI";
+ break;
+ case GEOMOp::OpEdge: // MENU BUILD - EDGE
+ case GEOMOp::OpWire: // MENU BUILD - WIRE
+ case GEOMOp::OpFace: // MENU BUILD - FACE
+ case GEOMOp::OpShell: // MENU BUILD - SHELL
+ case GEOMOp::OpSolid: // MENU BUILD - SOLID
+ case GEOMOp::OpCompound: // MENU BUILD - COMPUND
+ libName = "BuildGUI";
+ break;
+ case GEOMOp::OpFuse: // MENU BOOLEAN - FUSE
+ case GEOMOp::OpCommon: // MENU BOOLEAN - COMMON
+ case GEOMOp::OpCut: // MENU BOOLEAN - CUT
+ case GEOMOp::OpSection: // MENU BOOLEAN - SECTION
+ libName = "BooleanGUI";
+ break;
+ case GEOMOp::OpTranslate: // MENU TRANSFORMATION - TRANSLATION
+ case GEOMOp::OpRotate: // MENU TRANSFORMATION - ROTATION
+ case GEOMOp::OpChangeLoc: // MENU TRANSFORMATION - LOCATION
+ case GEOMOp::OpMirror: // MENU TRANSFORMATION - MIRROR
+ case GEOMOp::OpScale: // MENU TRANSFORMATION - SCALE
+ case GEOMOp::OpOffset: // MENU TRANSFORMATION - OFFSET
+ case GEOMOp::OpMultiTranslate: // MENU TRANSFORMATION - MULTI-TRANSLATION
+ case GEOMOp::OpMultiRotate: // MENU TRANSFORMATION - MULTI-ROTATION
+ case GEOMOp::OpReimport: // CONTEXT(POPUP) MENU - RELOAD_IMPORTED
+ libName = "TransformationGUI";
+ break;
+ case GEOMOp::OpPartition: // MENU OPERATION - PARTITION
+ case GEOMOp::OpArchimede: // MENU OPERATION - ARCHIMEDE
+ case GEOMOp::OpFillet3d: // MENU OPERATION - FILLET
+ case GEOMOp::OpChamfer: // MENU OPERATION - CHAMFER
+ case GEOMOp::OpClipping: // MENU OPERATION - CLIPPING RANGE
+ case GEOMOp::OpShapesOnShape: // MENU OPERATION - GET SHAPES ON SHAPE
+ case GEOMOp::OpFillet2d: // MENU OPERATION - FILLET 2D
+ case GEOMOp::OpFillet1d: // MENU OPERATION - FILLET 1D
+ case GEOMOp::OpSharedShapes: // MENU OPERATION - GET SHARED SHAPES
+ libName = "OperationGUI";
+ break;
+ case GEOMOp::OpSewing: // MENU REPAIR - SEWING
+ case GEOMOp::OpSuppressFaces: // MENU REPAIR - SUPPRESS FACES
+ case GEOMOp::OpSuppressHoles: // MENU REPAIR - SUPPRESS HOLE
+ case GEOMOp::OpShapeProcess: // MENU REPAIR - SHAPE PROCESSING
+ case GEOMOp::OpCloseContour: // MENU REPAIR - CLOSE CONTOUR
+ case GEOMOp::OpRemoveIntWires: // MENU REPAIR - REMOVE INTERNAL WIRES
+ case GEOMOp::OpAddPointOnEdge: // MENU REPAIR - ADD POINT ON EDGE
+ case GEOMOp::OpFreeBoundaries: // MENU MEASURE - FREE BOUNDARIES
+ case GEOMOp::OpFreeFaces: // MENU MEASURE - FREE FACES
+ case GEOMOp::OpOrientation: // MENU REPAIR - CHANGE ORIENTATION
+ case GEOMOp::OpGlueFaces: // MENU REPAIR - GLUE FACES
+ case GEOMOp::OpLimitTolerance: // MENU REPAIR - LIMIT TOLERANCE
+ case GEOMOp::OpRemoveExtraEdges: // MENU REPAIR - REMOVE EXTRA EDGES
+ libName = "RepairGUI";
+ break;
+ case GEOMOp::OpProperties: // MENU MEASURE - PROPERTIES
+ case GEOMOp::OpCenterMass: // MENU MEASURE - CDG
+ case GEOMOp::OpInertia: // MENU MEASURE - INERTIA
+ case GEOMOp::OpNormale: // MENU MEASURE - NORMALE
+ case GEOMOp::OpBoundingBox: // MENU MEASURE - BOUNDING BOX
+ case GEOMOp::OpMinDistance: // MENU MEASURE - MIN DISTANCE
+ case GEOMOp::OpAngle: // MENU MEASURE - ANGLE
+ case GEOMOp::OpTolerance: // MENU MEASURE - TOLERANCE
+ case GEOMOp::OpWhatIs: // MENU MEASURE - WHATIS
+ case GEOMOp::OpCheckShape: // MENU MEASURE - CHECK
+ case GEOMOp::OpCheckCompound: // MENU MEASURE - CHECK COMPOUND OF BLOCKS
+ case GEOMOp::OpPointCoordinates: // MENU MEASURE - POINT COORDINATES
+ libName = "MeasureGUI";
+ break;
+ case GEOMOp::OpGroupCreate: // MENU GROUP - CREATE
+ case GEOMOp::OpGroupCreatePopup: // POPUP MENU - CREATE GROUP
+ case GEOMOp::OpGroupEdit: // MENU GROUP - EDIT
+ libName = "GroupGUI";
+ break;
+ case GEOMOp::OpHexaSolid: // MENU BLOCKS - HEXAHEDRAL SOLID
+ case GEOMOp::OpMultiTransform: // MENU BLOCKS - MULTI-TRANSFORMATION
+ case GEOMOp::OpQuadFace: // MENU BLOCKS - QUADRANGLE FACE
+ case GEOMOp::OpPropagate: // MENU BLOCKS - PROPAGATE
+ case GEOMOp::OpExplodeBlock: // MENU BLOCKS - EXPLODE ON BLOCKS
+ libName = "BlocksGUI";
+ break;
+ case GEOMOp::OpAdvancedNoOp: // NO OPERATION (advanced operations base)
+ case GEOMOp::OpPipeTShape: // MENU NEW ENTITY - ADVANCED - PIPE TSHAPE
+// case GEOMOp::OpPipeTShapeGroups: // MENU NEW ENTITY - ADVANCED - PIPE TSHAPE GROUPS
+ //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
+ libName = "AdvancedGUI";
+ break;
+ default:
+ break;
}
- else if( id == 9999 || // MENU BLOCKS - HEXAHEDRAL SOLID
- id == 9998 || // MENU BLOCKS - MULTI-TRANSFORMATION
- id == 9997 || // MENU BLOCKS - QUADRANGLE FACE
- id == 99991 || // MENU BLOCKS - PROPAGATE
- id == 9995 ) { // MENU BLOCKS - EXPLODE ON BLOCKS
- library = getLibrary( "libBlocksGUI.so" );
+
+ GEOMGUI* library = 0;
+ if ( !libName.isEmpty() ) {
+#ifndef WNT
+ libName = QString( "lib" ) + libName + ".so";
+#else
+ libName = libName + ".dll";
+#endif
+ library = getLibrary( libName );
}
// call method of corresponding GUI library
- if ( library )
+ if ( library )
library->OnGUIEvent( id, desk );
- else
- SUIT_MessageBox::error1( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_LIB_NOT_FOUND" ), tr( "GEOM_BUT_OK" ) );
+ else
+ SUIT_MessageBox::critical( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_LIB_NOT_FOUND" ), tr( "GEOM_BUT_OK" ) );
}
-
//=================================================================================
// function : GeometryGUI::OnKeyPress()
// purpose : Called when any key is pressed by user [static]
//=================================================================================
-bool GeometryGUI::OnKeyPress( QKeyEvent* pe, SUIT_ViewWindow* win )
+void GeometryGUI::OnKeyPress( SUIT_ViewWindow* w, QKeyEvent* e )
{
- GUIMap::Iterator it;
- bool bOk = true;
- for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- bOk = bOk && it.data()->OnKeyPress( pe, application()->desktop(), win );
- return bOk;
+ if ( !application() )
+ return;
+ foreach ( GEOMGUI* lib, myGUIMap )
+ lib->OnKeyPress( e, application()->desktop(), w );
}
-
//=================================================================================
// function : GeometryGUI::OnMouseMove()
// purpose : Manages mouse move events [static]
//=================================================================================
-bool GeometryGUI::OnMouseMove( QMouseEvent* pe, SUIT_ViewWindow* win )
-{
- GUIMap::Iterator it;
- bool bOk = true;
- for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- bOk = bOk && it.data()->OnMouseMove( pe, application()->desktop(), win );
- return bOk;
-}
-
-
-//=================================================================================
-// function : GeometryGUI::0nMousePress()
-// purpose : Manage mouse press events [static]
-//=================================================================================
-bool GeometryGUI::OnMousePress( QMouseEvent* pe, SUIT_ViewWindow* win )
+void GeometryGUI::OnMouseMove( SUIT_ViewWindow* w, QMouseEvent* e )
{
- GUIMap::Iterator it;
- // OnMousePress() should return false if this event should be processed further
- // (see OCCViewer_Viewer3d::onMousePress() for explanation)
- bool processed = false;
- for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- processed = processed || it.data()->OnMousePress( pe, application()->desktop(), win );
- return processed;
-}
-
-/*
-static void UpdateVtkSelection()
-{
- QPtrList<SUIT_ViewWindow> winList = application()->desktop()->windows();
- SUIT_ViewWindow* win = 0;
- for ( win = winList.first(); win; win = winList.next() ) {
- if ( win->getViewManager()->getTypeView() == VIEW_VTK ) {
- VTKViewer_ViewWindow* vw = dynamic_cast<VTKViewer_ViewWindow*>( window );
- if ( vw ) {
- VTKViewer_RenderWindowInteractor* anInteractor = vw->getRWInteractor();
- anInteractor->SetSelectionProp();
- anInteractor->SetSelectionTolerance();
- SVTK_InteractorStyleSALOME* aStyle = anInteractor->GetInteractorStyleSALOME();
- if (aStyle) {
- aStyle->setPreselectionProp();
- }
- }
- }
- }
+ if ( !application() )
+ return;
+ foreach ( GEOMGUI* lib, myGUIMap )
+ lib->OnMouseMove( e, application()->desktop(), w );
}
//=================================================================================
-// function : GeometryGUI::SetSettings()
-// purpose : Called when GEOM module is activated [static]
+// function : GeometryGUI::OnMousePress()
+// purpose : Manage mouse press events [static]
//=================================================================================
-bool GeometryGUI::SetSettings()
+void GeometryGUI::OnMousePress( SUIT_ViewWindow* w, QMouseEvent* e )
{
- QMenuBar* Mb = parent->getMainMenuBar();
- SUIT_Study* ActiveStudy = application()->activeStudy();
-
-// Wireframe or Shading
- int DisplayMode = 0;
- SUIT_ViewWindow* window = application()->desktop()->activeWindow();
- bool ViewOCC = ( window && window->getViewManager()->getType() == VIEW_OCC );
- bool ViewVTK = ( window && window->getViewManager()->getType() == VIEW_VTK );
- if ( ViewOCC ) {
- OCCViewer_ViewManager* vm = dynamic_cast<OCCViewer_ViewManager*>( window->getViewManager() );
- if ( vm ) {
- Handle(AIS_InteractiveContext) ic = vm->getOCCViewer()->getAISContext();
- DisplayMode = ic->DisplayMode();
- }
- }
- else if ( ViewVTK ) {
- VTKViewer_ViewWindow* vw = dynamic_cast<VTKViewer_ViewWindow*>( window );
- if ( vw ) {
- VTKViewer_RenderWindowInteractor* myRenderInter = vw->getRWInteractor();
- DisplayMode = myRenderInter->GetDisplayMode();
- }
- }
-
- if( DisplayMode == 1 )
- getApp()->
- Mb->changeItem( 211, tr( "GEOM_MEN_WIREFRAME" ) );
- else
- Mb->changeItem( 211, tr( "GEOM_MEN_SHADING" ) );
-
-
- // Add in Study - !!!ALWAYS TRUE!!! /////// VSR : TO BE REMOVED
- QString AddInStudy = QAD_CONFIG->getSetting("Geometry:SettingsAddInStudy");
- int Settings_AddInStudy;
- // if(!AddInStudy.isEmpty())
- // Settings_AddInStudy = AddInStudy.toInt();
- // else
-
- Settings_AddInStudy = 1;
- Mb->setItemChecked(411, Settings_AddInStudy);
-
- // step value
- QString S = QAD_CONFIG->getSetting("Geometry:SettingsGeomStep");
- if(S.isEmpty())
- QAD_CONFIG->addSetting("Geometry:SettingsGeomStep", "100");
-
- // isos
- int count = ActiveStudy->getStudyFramesCount();
- for(int i = 0; i < count; i++) {
- if(ActiveStudy->getStudyFrame(i)->getTypeView() == VIEW_OCC) {
- OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)ActiveStudy->getStudyFrame(i)->getRightFrame()->getViewFrame())->getViewer();
- Handle (AIS_InteractiveContext) ic = v3d->getAISContext();
-
- QString IsoU = QAD_CONFIG->getSetting("Geometry:SettingsIsoU");
- QString IsoV = QAD_CONFIG->getSetting("Geometry:SettingsIsoV");
- if(!IsoU.isEmpty())
- ic->DefaultDrawer()->UIsoAspect()->SetNumber(IsoU.toInt());
- if(!IsoV.isEmpty())
- ic->DefaultDrawer()->VIsoAspect()->SetNumber(IsoV.toInt());
- }
- }
-
- setActionsEnabled();
-
- // PAL5356: update VTK selection
- ::UpdateVtkSelection();
- bool bOk = true;
- GUIMap::Iterator it;
- for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- bOk = bOk && it.data()->SetSettings( parent );
-
- // MZN: Enable/disable "Clipping range" menu item(from GEOM_CLIPPING variable)
- if (getenv( "GEOM_CLIPPING" ) == NULL)
- {
- QMenuItem* mi = Mb->findItem(50);
- if (mi && mi->popup())
- mi->popup()->removeItem(507);
- }
-
- return bOk;
+ if ( !application() )
+ return;
+ foreach ( GEOMGUI* lib, myGUIMap )
+ lib->OnMousePress( e, application()->desktop(), w );
}
-*/
//=======================================================================
// function : createGeomAction
-// purpose :
+// purpose :
//=======================================================================
-void GeometryGUI::createGeomAction( const int id, const QString& po_id, const QString& icon_id, const int key, const bool toggle )
+void GeometryGUI::createGeomAction( const int id, const QString& label, const QString& icolabel,
+ const int accel, const bool toggle, const QString& shortcutAction )
{
- QIconSet icon;
- QWidget* parent = application()->desktop();
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
- QPixmap pix;
- if ( icon_id.length() )
- pix = resMgr->loadPixmap( "GEOM", tr( icon_id ) );
- else
- pix = resMgr->loadPixmap( "GEOM", tr( QString( "ICO_" )+po_id ), false );
- if ( !pix.isNull() )
- icon = QIconSet( pix );
-
- QString tooltip = tr( QString( "TOP_" )+po_id ),
- menu = tr( QString( "MEN_" )+po_id ),
- status_bar = tr( QString( "STB_" )+po_id );
-
- createAction( id, tooltip, icon, menu, status_bar, key, parent, toggle, this, SLOT( OnGUIEvent() ) );
+ QPixmap icon = icolabel.isEmpty() ? resMgr->loadPixmap( "GEOM", tr( (QString( "ICO_" )+label).toLatin1().constData() ), false )
+ : resMgr->loadPixmap( "GEOM", tr( icolabel.toLatin1().constData() ) );
+ createAction( id,
+ tr( QString( "TOP_%1" ).arg( label ).toLatin1().constData() ),
+ icon,
+ tr( QString( "MEN_%1" ).arg( label ).toLatin1().constData() ),
+ tr( QString( "STB_%1" ).arg( label ).toLatin1().constData() ),
+ accel,
+ application()->desktop(),
+ toggle,
+ this, SLOT( OnGUIEvent() ),
+ shortcutAction );
}
-
+//=======================================================================
+// function : createOriginAndBaseVectors
+// purpose :
+//=======================================================================
+void GeometryGUI::createOriginAndBaseVectors()
+{
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
+ if( appStudy ) {
+ _PTR(Study) studyDS = appStudy->studyDS();
+ if( studyDS && !CORBA::is_nil( GetGeomGen() ) ) {
+ GEOM::GEOM_IBasicOperations_var aBasicOperations = GetGeomGen()->GetIBasicOperations( studyDS->StudyId() );
+ if( !aBasicOperations->_is_nil() ) {
+ SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+ double aLength = aResourceMgr->doubleValue( "Geometry", "base_vectors_length", 1.0 );
+ GEOM::GEOM_Object_var anOrigin = aBasicOperations->MakePointXYZ( 0.0, 0.0, 0.0 );
+ GEOM::GEOM_Object_var anOX = aBasicOperations->MakeVectorDXDYDZ( aLength, 0.0, 0.0 );
+ GEOM::GEOM_Object_var anOY = aBasicOperations->MakeVectorDXDYDZ( 0.0, aLength, 0.0 );
+ GEOM::GEOM_Object_var anOZ = aBasicOperations->MakeVectorDXDYDZ( 0.0, 0.0, aLength );
+
+ SALOMEDS::Study_var aDSStudy = ClientStudyToStudy( studyDS );
+ GetGeomGen()->PublishInStudy( aDSStudy, SALOMEDS::SObject::_nil(), anOrigin, "O" );
+ GetGeomGen()->PublishInStudy( aDSStudy, SALOMEDS::SObject::_nil(), anOX, "OX" );
+ GetGeomGen()->PublishInStudy( aDSStudy, SALOMEDS::SObject::_nil(), anOY, "OY" );
+ GetGeomGen()->PublishInStudy( aDSStudy, SALOMEDS::SObject::_nil(), anOZ, "OZ" );
+
+ getApp()->updateObjectBrowser( false );
+ }
+ }
+ }
+}
//=======================================================================
-// function : GeometryGUI::Deactivate()
-// purpose : Called when GEOM module is deactivated [ static ]
+// function : GeometryGUI::initialize()
+// purpose : Called when GEOM module is created
//=======================================================================
void GeometryGUI::initialize( CAM_Application* app )
{
// ----- create actions --------------
- createGeomAction( 111, "IMPORT", "", (CTRL + Key_I) );
- createGeomAction( 121, "EXPORT", "", (CTRL + Key_E) );
-
- createGeomAction( 33, "DELETE" );
-
- createGeomAction( 4011, "POINT" );
- createGeomAction( 4012, "LINE" );
- createGeomAction( 4013, "CIRCLE" );
- createGeomAction( 4014, "ELLIPSE" );
- createGeomAction( 4015, "ARC" );
- createGeomAction( 4019, "CURVE" );
- createGeomAction( 4016, "VECTOR" );
- createGeomAction( 4017, "PLANE" );
- createGeomAction( 4018, "WORK_PLANE" );
- createGeomAction( 4020, "LOCAL_CS" );
-
- createGeomAction( 4021, "BOX" );
- createGeomAction( 4022, "CYLINDER" );
- createGeomAction( 4023, "SPHERE" );
- createGeomAction( 4024, "TORUS" );
- createGeomAction( 4025, "CONE" );
-
- createGeomAction( 4031, "EXTRUSION" );
- createGeomAction( 4032, "REVOLUTION" );
- createGeomAction( 4033, "FILLING" );
- createGeomAction( 4034, "PIPE" );
-
- createGeomAction( 800, "GROUP_CREATE" );
- createGeomAction( 801, "GROUP_EDIT" );
-
- createGeomAction( 9997, "Q_FACE" );
- createGeomAction( 9999, "HEX_SOLID" );
-
- createGeomAction( 404, "SKETCH" );
- createGeomAction( 407, "EXPLODE" );
-
- createGeomAction( 4081, "EDGE" );
- createGeomAction( 4082, "WIRE" );
- createGeomAction( 4083, "FACE" );
- createGeomAction( 4084, "SHELL" );
- createGeomAction( 4085, "SOLID" );
- createGeomAction( 4086, "COMPOUND" );
-
- createGeomAction( 5011, "FUSE" );
- createGeomAction( 5012, "COMMON" );
- createGeomAction( 5013, "CUT" );
- createGeomAction( 5014, "SECTION" );
-
- createGeomAction( 5021, "TRANSLATION" );
- createGeomAction( 5022, "ROTATION" );
- createGeomAction( 5023, "MODIFY_LOCATION" );
- createGeomAction( 5024, "MIRROR" );
- createGeomAction( 5025, "SCALE" );
- createGeomAction( 5026, "OFFSET" );
- createGeomAction( 5027, "MUL_TRANSLATION" );
- createGeomAction( 5028, "MUL_ROTATION" );
-
- createGeomAction( 503, "PARTITION" );
- createGeomAction( 504, "ARCHIMEDE" );
- createGeomAction( 505, "FILLET" );
- createGeomAction( 506, "CHAMFER" );
- //createGeomAction( 507, "CLIPPING" );
-
- createGeomAction( 9998, "MUL_TRANSFORM" );
- createGeomAction( 9995, "EXPLODE_BLOCKS" );
- createGeomAction( 99991, "PROPAGATE" );
-
- createGeomAction( 601, "SEWING" );
- createGeomAction( 602, "GLUE_FACES" );
- createGeomAction( 603, "SUPPRESS_FACES" );
- createGeomAction( 604, "SUPPERSS_HOLES" );
- createGeomAction( 605, "SHAPE_PROCESS" );
- createGeomAction( 606, "CLOSE_CONTOUR" );
- createGeomAction( 607, "SUPPRESS_INT_WIRES" );
- createGeomAction( 608, "POINT_ON_EDGE" );
- createGeomAction( 609, "CHECK_FREE_BNDS" );
- createGeomAction( 610, "CHECK_FREE_FACES" );
-
- createGeomAction( 708, "POINT_COORDS" );
- createGeomAction( 701, "BASIC_PROPS" );
- createGeomAction( 702, "MASS_CENTER" );
- createGeomAction( 703, "INERTIA" );
- createGeomAction( 7041, "BND_BOX" );
- createGeomAction( 7042, "MIN_DIST" );
-
- createGeomAction( 705, "TOLERANCE" );
- createGeomAction( 706, "WHAT_IS" );
- createGeomAction( 707, "CHECK" );
- createGeomAction( 7072, "CHECK_COMPOUND" );
-
- createGeomAction( 5103, "CHECK_GEOMETRY" );
+ createGeomAction( GEOMOp::OpImport, "IMPORT", "", Qt::ControlModifier + Qt::Key_I );
+ createGeomAction( GEOMOp::OpExport, "EXPORT", "", Qt::ControlModifier + Qt::Key_E );
+
+ createGeomAction( GEOMOp::OpDelete, "DELETE", "", Qt::Key_Delete );
+
+ createGeomAction( GEOMOp::OpPoint, "POINT" );
+ createGeomAction( GEOMOp::OpLine, "LINE" );
+ createGeomAction( GEOMOp::OpCircle, "CIRCLE" );
+ createGeomAction( GEOMOp::OpEllipse, "ELLIPSE" );
+ createGeomAction( GEOMOp::OpArc, "ARC" );
+ createGeomAction( GEOMOp::OpCurve, "CURVE" );
+ createGeomAction( GEOMOp::OpVector, "VECTOR" );
+ createGeomAction( GEOMOp::OpPlane, "PLANE" );
+ createGeomAction( GEOMOp::OpLCS, "LOCAL_CS" );
+ createGeomAction( GEOMOp::OpOriginAndVectors, "ORIGIN_AND_VECTORS" );
+
+ createGeomAction( GEOMOp::OpBox, "BOX" );
+ createGeomAction( GEOMOp::OpCylinder, "CYLINDER" );
+ createGeomAction( GEOMOp::OpSphere, "SPHERE" );
+ createGeomAction( GEOMOp::OpTorus, "TORUS" );
+ createGeomAction( GEOMOp::OpCone, "CONE" );
+ createGeomAction( GEOMOp::OpRectangle, "RECTANGLE" );
+ createGeomAction( GEOMOp::OpDisk, "DISK" );
+
+ createGeomAction( GEOMOp::OpPrism, "EXTRUSION" );
+ createGeomAction( GEOMOp::OpRevolution, "REVOLUTION" );
+ createGeomAction( GEOMOp::OpFilling, "FILLING" );
+ createGeomAction( GEOMOp::OpPipe, "PIPE" );
+
+ createGeomAction( GEOMOp::OpGroupCreate, "GROUP_CREATE" );
+ createGeomAction( GEOMOp::OpGroupEdit, "GROUP_EDIT" );
+
+ createGeomAction( GEOMOp::OpReimport, "RELOAD_IMPORTED" );
+
+ createGeomAction( GEOMOp::OpQuadFace, "Q_FACE" );
+ createGeomAction( GEOMOp::OpHexaSolid, "HEX_SOLID" );
+
+ createGeomAction( GEOMOp::Op2dSketcher, "SKETCH" );
+ createGeomAction( GEOMOp::Op3dSketcher, "3DSKETCH" );
+ createGeomAction( GEOMOp::OpExplode, "EXPLODE" );
+
+ createGeomAction( GEOMOp::OpEdge, "EDGE" );
+ createGeomAction( GEOMOp::OpWire, "WIRE" );
+ createGeomAction( GEOMOp::OpFace, "FACE" );
+ createGeomAction( GEOMOp::OpShell, "SHELL" );
+ createGeomAction( GEOMOp::OpSolid, "SOLID" );
+ createGeomAction( GEOMOp::OpCompound, "COMPOUND" );
+
+ createGeomAction( GEOMOp::OpFuse, "FUSE" );
+ createGeomAction( GEOMOp::OpCommon, "COMMON" );
+ createGeomAction( GEOMOp::OpCut, "CUT" );
+ createGeomAction( GEOMOp::OpSection, "SECTION" );
+
+ createGeomAction( GEOMOp::OpTranslate, "TRANSLATION" );
+ createGeomAction( GEOMOp::OpRotate, "ROTATION" );
+ createGeomAction( GEOMOp::OpChangeLoc, "MODIFY_LOCATION" );
+ createGeomAction( GEOMOp::OpMirror, "MIRROR" );
+ createGeomAction( GEOMOp::OpScale, "SCALE" );
+ createGeomAction( GEOMOp::OpOffset, "OFFSET" );
+ createGeomAction( GEOMOp::OpMultiTranslate, "MUL_TRANSLATION" );
+ createGeomAction( GEOMOp::OpMultiRotate, "MUL_ROTATION" );
+
+ createGeomAction( GEOMOp::OpPartition, "PARTITION" );
+ createGeomAction( GEOMOp::OpArchimede, "ARCHIMEDE" );
+ createGeomAction( GEOMOp::OpFillet3d, "FILLET" );
+ createGeomAction( GEOMOp::OpChamfer, "CHAMFER" );
+ //createGeomAction( GEOMOp::OpClipping, "CLIPPING" );
+ createGeomAction( GEOMOp::OpShapesOnShape, "GET_SHAPES_ON_SHAPE" );
+ createGeomAction( GEOMOp::OpSharedShapes, "GET_SHARED_SHAPES" );
+ createGeomAction( GEOMOp::OpFillet1d, "FILLET_1D" );
+ createGeomAction( GEOMOp::OpFillet2d, "FILLET_2D" );
+
+ createGeomAction( GEOMOp::OpMultiTransform, "MUL_TRANSFORM" );
+ createGeomAction( GEOMOp::OpExplodeBlock, "EXPLODE_BLOCKS" );
+ createGeomAction( GEOMOp::OpPropagate, "PROPAGATE" );
+
+ createGeomAction( GEOMOp::OpSewing, "SEWING" );
+ createGeomAction( GEOMOp::OpGlueFaces, "GLUE_FACES" );
+ createGeomAction( GEOMOp::OpLimitTolerance, "LIMIT_TOLERANCE" );
+ createGeomAction( GEOMOp::OpSuppressFaces, "SUPPRESS_FACES" );
+ createGeomAction( GEOMOp::OpSuppressHoles, "SUPPERSS_HOLES" );
+ createGeomAction( GEOMOp::OpShapeProcess, "SHAPE_PROCESS" );
+ createGeomAction( GEOMOp::OpCloseContour, "CLOSE_CONTOUR" );
+ createGeomAction( GEOMOp::OpRemoveIntWires, "SUPPRESS_INT_WIRES" );
+ createGeomAction( GEOMOp::OpAddPointOnEdge, "POINT_ON_EDGE" );
+ createGeomAction( GEOMOp::OpFreeBoundaries, "CHECK_FREE_BNDS" );
+ createGeomAction( GEOMOp::OpFreeFaces, "CHECK_FREE_FACES" );
+ createGeomAction( GEOMOp::OpOrientation, "CHANGE_ORIENTATION" );
+ createGeomAction( GEOMOp::OpRemoveExtraEdges, "REMOVE_EXTRA_EDGES" );
+
+ createGeomAction( GEOMOp::OpPointCoordinates, "POINT_COORDS" );
+ createGeomAction( GEOMOp::OpProperties, "BASIC_PROPS" );
+ createGeomAction( GEOMOp::OpCenterMass, "MASS_CENTER" );
+ createGeomAction( GEOMOp::OpInertia, "INERTIA" );
+ createGeomAction( GEOMOp::OpNormale, "NORMALE" );
+ createGeomAction( GEOMOp::OpBoundingBox, "BND_BOX" );
+ createGeomAction( GEOMOp::OpMinDistance, "MIN_DIST" );
+ createGeomAction( GEOMOp::OpAngle, "MEASURE_ANGLE" );
+
+ createGeomAction( GEOMOp::OpTolerance, "TOLERANCE" );
+ createGeomAction( GEOMOp::OpWhatIs, "WHAT_IS" );
+ createGeomAction( GEOMOp::OpCheckShape, "CHECK" );
+ createGeomAction( GEOMOp::OpCheckCompound, "CHECK_COMPOUND" );
+
+#ifdef _DEBUG_ // PAL16821
+ createGeomAction( GEOMOp::OpCheckGeom, "CHECK_GEOMETRY" );
+#endif
+
+ createGeomAction( GEOMOp::OpDisplayMode, "SHADING" );
+ createGeomAction( GEOMOp::OpShowAll, "DISPLAY_ALL" );
+ createGeomAction( GEOMOp::OpHideAll, "ERASE_ALL" );
+ createGeomAction( GEOMOp::OpShow, "DISPLAY" );
+ createGeomAction( GEOMOp::OpSwitchVectors, "VECTOR_MODE");
+ createGeomAction( GEOMOp::OpSelectVertex, "VERTEX_SEL_ONLY" ,"", 0, true );
+ createGeomAction( GEOMOp::OpSelectEdge, "EDGE_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectWire, "WIRE_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectFace, "FACE_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectShell, "SHELL_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectSolid, "SOLID_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectCompound, "COMPOUND_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpSelectAll, "ALL_SEL_ONLY", "", 0, true );
+ createGeomAction( GEOMOp::OpShowOnly, "DISPLAY_ONLY" );
+ createGeomAction( GEOMOp::OpHide, "ERASE" );
+
+ createGeomAction( GEOMOp::OpRename, "POP_RENAME", "", Qt::Key_F2 );
+ createGeomAction( GEOMOp::OpWireframe, "POP_WIREFRAME", "", 0, true );
+ createGeomAction( GEOMOp::OpShading, "POP_SHADING", "", 0, true );
+ createGeomAction( GEOMOp::OpVectors, "POP_VECTORS", "", 0, true );
+ createGeomAction( GEOMOp::OpDeflection, "POP_DEFLECTION" );
+ createGeomAction( GEOMOp::OpColor, "POP_COLOR" );
+ createGeomAction( GEOMOp::OpTransparency, "POP_TRANSPARENCY" );
+ createGeomAction( GEOMOp::OpIsos, "POP_ISOS" );
+ createGeomAction( GEOMOp::OpAutoColor, "POP_AUTO_COLOR" );
+ createGeomAction( GEOMOp::OpNoAutoColor, "POP_DISABLE_AUTO_COLOR" );
+ createGeomAction( GEOMOp::OpGroupCreatePopup, "POP_CREATE_GROUP" );
+ createGeomAction( GEOMOp::OpShowChildren, "POP_SHOW_CHILDREN" );
+ createGeomAction( GEOMOp::OpHideChildren, "POP_HIDE_CHILDREN" );
+ createGeomAction( GEOMOp::OpPointMarker, "POP_POINT_MARKER" );
+
+ createGeomAction( GEOMOp::OpPipeTShape, "PIPETSHAPE" );
- createGeomAction( 412, "SHADING_COLOR" );
- createGeomAction( 413, "ISOS" );
- createGeomAction( 414, "STEP_VALUE" );
-
- createGeomAction( 211, "SHADING" );
- createGeomAction( 212, "DISPLAY_ALL" );
- createGeomAction( 214, "ERASE_ALL" );
- createGeomAction( 216, "DISPLAY" );
- createGeomAction( 213, "DISPLAY_ONLY" );
- createGeomAction( 215, "ERASE" );
-
- createGeomAction( 901, "POP_RENAME" );
- createGeomAction( 80311, "POP_WIREFRAME", "", 0, true );
- createGeomAction( 80312, "POP_SHADING", "", 0, true );
- createGeomAction( 8032, "POP_COLOR" );
- createGeomAction( 8033, "POP_TRANSPARENCY" );
- createGeomAction( 8034, "POP_ISOS" );
- createGeomAction( 8001, "POP_CREATE_GROUP" );
-
- // make wireframe-shading items to be exclusive (only one at a time is selected)
- //QActionGroup* dispModeGr = new QActionGroup( this, "", true );
- //dispModeGr->add( action( 80311 ) );
- //dispModeGr->add( action( 80312 ) );
- // ---- create menu --------------------------
+ // Create actions for increase/decrease transparency shortcuts
+ createGeomAction( GEOMOp::OpIncrTransparency, "", "", 0, false,
+ "Geometry:Increase transparency");
+ createGeomAction( GEOMOp::OpDecrTransparency, "", "", 0, false,
+ "Geometry:Decrease transparency");
+
+ // Create actions for increase/decrease number of isolines
+ createGeomAction( GEOMOp::OpIncrNbIsos, "", "", 0, false,
+ "Geometry:Increase number of isolines");
+ createGeomAction( GEOMOp::OpDecrNbIsos, "", "", 0, false,
+ "Geometry:Decrease number of isolines");
+
+// createGeomAction( GEOMOp::OpPipeTShapeGroups, "PIPETSHAPEGROUPS" );
+ //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
+
+ // ---- create menus --------------------------
int fileId = createMenu( tr( "MEN_FILE" ), -1, -1 );
- createMenu( separator(), fileId, 10 );
- createMenu( 111, fileId, 10 );
- createMenu( 121, fileId, 10 );
- createMenu( separator(), fileId, -1 );
+ createMenu( separator(), fileId, 10 );
+ createMenu( GEOMOp::OpImport, fileId, 10 );
+ createMenu( GEOMOp::OpExport, fileId, 10 );
+ createMenu( separator(), fileId, -1 );
int editId = createMenu( tr( "MEN_EDIT" ), -1, -1 );
- createMenu( 33, editId, -1 );
+ createMenu( GEOMOp::OpDelete, editId, -1 );
int newEntId = createMenu( tr( "MEN_NEW_ENTITY" ), -1, -1, 10 );
int basicId = createMenu( tr( "MEN_BASIC" ), newEntId, -1 );
- createMenu( 4011, basicId, -1 );
- createMenu( 4012, basicId, -1 );
- createMenu( 4013, basicId, -1 );
- createMenu( 4014, basicId, -1 );
- createMenu( 4015, basicId, -1 );
- createMenu( 4019, basicId, -1 );
- createMenu( separator(), basicId, -1 );
- createMenu( 4016, basicId, -1 );
- createMenu( 4017, basicId, -1 );
- createMenu( 4018, basicId, -1 );
- createMenu( 4020, basicId, -1 );
+ createMenu( GEOMOp::OpPoint, basicId, -1 );
+ createMenu( GEOMOp::OpLine, basicId, -1 );
+ createMenu( GEOMOp::OpCircle, basicId, -1 );
+ createMenu( GEOMOp::OpEllipse, basicId, -1 );
+ createMenu( GEOMOp::OpArc, basicId, -1 );
+ createMenu( GEOMOp::OpCurve, basicId, -1 );
+ createMenu( separator(), basicId, -1 );
+ createMenu( GEOMOp::OpVector, basicId, -1 );
+ createMenu( GEOMOp::OpPlane, basicId, -1 );
+ createMenu( GEOMOp::OpLCS, basicId, -1 );
+ createMenu( GEOMOp::OpOriginAndVectors, basicId, -1 );
int primId = createMenu( tr( "MEN_PRIMITIVES" ), newEntId, -1 );
- createMenu( 4021, primId, -1 );
- createMenu( 4022, primId, -1 );
- createMenu( 4023, primId, -1 );
- createMenu( 4024, primId, -1 );
- createMenu( 4025, primId, -1 );
+ createMenu( GEOMOp::OpBox, primId, -1 );
+ createMenu( GEOMOp::OpCylinder, primId, -1 );
+ createMenu( GEOMOp::OpSphere, primId, -1 );
+ createMenu( GEOMOp::OpTorus, primId, -1 );
+ createMenu( GEOMOp::OpCone, primId, -1 );
+ createMenu( GEOMOp::OpRectangle, primId, -1 );
+ createMenu( GEOMOp::OpDisk, primId, -1 );
int genId = createMenu( tr( "MEN_GENERATION" ), newEntId, -1 );
- createMenu( 4031, genId, -1 );
- createMenu( 4032, genId, -1 );
- createMenu( 4033, genId, -1 );
- createMenu( 4034, genId, -1 );
+ createMenu( GEOMOp::OpPrism, genId, -1 );
+ createMenu( GEOMOp::OpRevolution, genId, -1 );
+ createMenu( GEOMOp::OpFilling, genId, -1 );
+ createMenu( GEOMOp::OpPipe, genId, -1 );
+
+ int advId = createMenu( tr( "MEN_ADVANCED" ), newEntId, -1 );
+ createMenu( GEOMOp::OpPipeTShape, advId, -1 );
+// createMenu( GEOMOp::OpPipeTShapeGroups, advId, -1 );
+ //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
+
createMenu( separator(), newEntId, -1 );
int groupId = createMenu( tr( "MEN_GROUP" ), newEntId, -1 );
- createMenu( 800, groupId, -1 );
- createMenu( 801, groupId, -1 );
+ createMenu( GEOMOp::OpGroupCreate, groupId, -1 );
+ createMenu( GEOMOp::OpGroupEdit, groupId, -1 );
+
createMenu( separator(), newEntId, -1 );
int blocksId = createMenu( tr( "MEN_BLOCKS" ), newEntId, -1 );
- createMenu( 9997, blocksId, -1 );
- createMenu( 9999, blocksId, -1 );
+ createMenu( GEOMOp::OpQuadFace, blocksId, -1 );
+ createMenu( GEOMOp::OpHexaSolid, blocksId, -1 );
- createMenu( separator(), newEntId, -1 );
- createMenu( 404, newEntId, -1 );
- createMenu( separator(), newEntId, -1 );
- createMenu( 407, newEntId, -1 );
+ createMenu( separator(), newEntId, -1 );
+
+ createMenu( GEOMOp::Op2dSketcher, newEntId, -1 );
+ createMenu( GEOMOp::Op3dSketcher, newEntId, -1 );
+
+ createMenu( separator(), newEntId, -1 );
+
+ createMenu( GEOMOp::OpExplode, newEntId, -1 );
int buildId = createMenu( tr( "MEN_BUILD" ), newEntId, -1 );
- createMenu( 4081, buildId, -1 );
- createMenu( 4082, buildId, -1 );
- createMenu( 4083, buildId, -1 );
- createMenu( 4084, buildId, -1 );
- createMenu( 4085, buildId, -1 );
- createMenu( 4086, buildId, -1 );
+ createMenu( GEOMOp::OpEdge, buildId, -1 );
+ createMenu( GEOMOp::OpWire, buildId, -1 );
+ createMenu( GEOMOp::OpFace, buildId, -1 );
+ createMenu( GEOMOp::OpShell, buildId, -1 );
+ createMenu( GEOMOp::OpSolid, buildId, -1 );
+ createMenu( GEOMOp::OpCompound, buildId, -1 );
int operId = createMenu( tr( "MEN_OPERATIONS" ), -1, -1, 10 );
int boolId = createMenu( tr( "MEN_BOOLEAN" ), operId, -1 );
- createMenu( 5011, boolId, -1 );
- createMenu( 5012, boolId, -1 );
- createMenu( 5013, boolId, -1 );
- createMenu( 5014, boolId, -1 );
+ createMenu( GEOMOp::OpFuse, boolId, -1 );
+ createMenu( GEOMOp::OpCommon, boolId, -1 );
+ createMenu( GEOMOp::OpCut, boolId, -1 );
+ createMenu( GEOMOp::OpSection, boolId, -1 );
int transId = createMenu( tr( "MEN_TRANSFORMATION" ), operId, -1 );
- createMenu( 5021, transId, -1 );
- createMenu( 5022, transId, -1 );
- createMenu( 5023, transId, -1 );
- createMenu( 5024, transId, -1 );
- createMenu( 5025, transId, -1 );
- createMenu( 5026, transId, -1 );
- createMenu( separator(), transId, -1 );
- createMenu( 5027, transId, -1 );
- createMenu( 5028, transId, -1 );
-
- createMenu( 503, operId, -1 );
- createMenu( 504, operId, -1 );
- createMenu( separator(), operId, -1 );
- createMenu( 505, transId, -1 );
- createMenu( 506, transId, -1 );
- //createMenu( 507, transId, -1 );
+ createMenu( GEOMOp::OpTranslate, transId, -1 );
+ createMenu( GEOMOp::OpRotate, transId, -1 );
+ createMenu( GEOMOp::OpChangeLoc, transId, -1 );
+ createMenu( GEOMOp::OpMirror, transId, -1 );
+ createMenu( GEOMOp::OpScale, transId, -1 );
+ createMenu( GEOMOp::OpOffset, transId, -1 );
+ createMenu( separator(), transId, -1 );
+ createMenu( GEOMOp::OpMultiTranslate, transId, -1 );
+ createMenu( GEOMOp::OpMultiRotate, transId, -1 );
int blockId = createMenu( tr( "MEN_BLOCKS" ), operId, -1 );
- createMenu( 9998, blockId, -1 );
- createMenu( 9995, blockId, -1 );
- createMenu( 99991, blockId, -1 );
+ createMenu( GEOMOp::OpMultiTransform, blockId, -1 );
+ createMenu( GEOMOp::OpExplodeBlock, blockId, -1 );
+ createMenu( GEOMOp::OpPropagate, blockId, -1 );
+
+ createMenu( separator(), operId, -1 );
+
+ createMenu( GEOMOp::OpPartition, operId, -1 );
+ createMenu( GEOMOp::OpArchimede, operId, -1 );
+ createMenu( GEOMOp::OpShapesOnShape, operId, -1 );
+ createMenu( GEOMOp::OpSharedShapes, operId, -1 );
+
+ createMenu( separator(), operId, -1 );
+
+ createMenu( GEOMOp::OpFillet1d, operId, -1 );
+ createMenu( GEOMOp::OpFillet2d, operId, -1 );
+ createMenu( GEOMOp::OpFillet3d, operId, -1 );
+ createMenu( GEOMOp::OpChamfer, operId, -1 );
+ //createMenu( GEOMOp::OpClipping, operId, -1 );
int repairId = createMenu( tr( "MEN_REPAIR" ), -1, -1, 10 );
- createMenu( 605, repairId, -1 );
- createMenu( 603, repairId, -1 );
- createMenu( 606, repairId, -1 );
- createMenu( 607, repairId, -1 );
- createMenu( 604, repairId, -1 );
- createMenu( 601, repairId, -1 );
- createMenu( 602, repairId, -1 );
- createMenu( 608, repairId, -1 );
- createMenu( 609, repairId, -1 );
- createMenu( 610, repairId, -1 );
+ createMenu( GEOMOp::OpShapeProcess, repairId, -1 );
+ createMenu( GEOMOp::OpSuppressFaces, repairId, -1 );
+ createMenu( GEOMOp::OpCloseContour, repairId, -1 );
+ createMenu( GEOMOp::OpRemoveIntWires, repairId, -1 );
+ createMenu( GEOMOp::OpSuppressHoles, repairId, -1 );
+ createMenu( GEOMOp::OpSewing, repairId, -1 );
+ createMenu( GEOMOp::OpGlueFaces, repairId, -1 );
+ createMenu( GEOMOp::OpLimitTolerance, repairId, -1 );
+ createMenu( GEOMOp::OpAddPointOnEdge, repairId, -1 );
+ //createMenu( GEOMOp::OpFreeBoundaries, repairId, -1 );
+ //createMenu( GEOMOp::OpFreeFaces, repairId, -1 );
+ createMenu( GEOMOp::OpOrientation, repairId, -1 );
+ createMenu( GEOMOp::OpRemoveExtraEdges, repairId, -1 );
int measurId = createMenu( tr( "MEN_MEASURES" ), -1, -1, 10 );
- createMenu( 708, measurId, -1 );
- createMenu( 701, measurId, -1 );
- createMenu( separator(), measurId, -1 );
- createMenu( 702, measurId, -1 );
- createMenu( 703, measurId, -1 );
- createMenu( separator(), measurId, -1 );
+ createMenu( GEOMOp::OpPointCoordinates, measurId, -1 );
+ createMenu( GEOMOp::OpProperties, measurId, -1 );
+ createMenu( separator(), measurId, -1 );
+ createMenu( GEOMOp::OpCenterMass, measurId, -1 );
+ createMenu( GEOMOp::OpInertia, measurId, -1 );
+ createMenu( GEOMOp::OpNormale, measurId, -1 );
+ createMenu( separator(), measurId, -1 );
+ createMenu( GEOMOp::OpFreeBoundaries, measurId, -1 );
+ createMenu( GEOMOp::OpFreeFaces, measurId, -1 );
+ createMenu( separator(), measurId, -1 );
int dimId = createMenu( tr( "MEN_DIMENSIONS" ), measurId, -1 );
- createMenu( 7041, dimId, -1 );
- createMenu( 7042, dimId, -1 );
- createMenu( separator(), measurId, -1 );
-
- createMenu( 705, measurId, -1 );
- createMenu( separator(), measurId, -1 );
- createMenu( 706, measurId, -1 );
- createMenu( 707, measurId, -1 );
- createMenu( 7072, measurId, -1 );
-
+ createMenu( GEOMOp::OpBoundingBox, dimId, -1 );
+ createMenu( GEOMOp::OpMinDistance, dimId, -1 );
+ createMenu( GEOMOp::OpAngle, dimId, -1 );
+
+ createMenu( separator(), measurId, -1 );
+ createMenu( GEOMOp::OpTolerance, measurId, -1 );
+ createMenu( separator(), measurId, -1 );
+ createMenu( GEOMOp::OpWhatIs, measurId, -1 );
+ createMenu( GEOMOp::OpCheckShape, measurId, -1 );
+ createMenu( GEOMOp::OpCheckCompound, measurId, -1 );
+
+#ifdef _DEBUG_ // PAL16821
int toolsId = createMenu( tr( "MEN_TOOLS" ), -1, -1, 50 );
- createMenu( separator(), toolsId, -1 );
- createMenu( 5103, toolsId, -1 );
-
- //int prefId = createMenu( tr( "MEN_PREFERENCES" ), -1, -1, 50 );
- //createMenu( separator(), prefId, -1 );
- //int geomId = createMenu( tr( "MEN_PREFERENCES_GEOM" ), prefId, -1 );
- //createMenu( 412, geomId, -1 );
- //createMenu( 413, geomId, -1 );
- //createMenu( 414, geomId, -1 );
- //createMenu( separator(), prefId, -1 );
+ createMenu( separator(), toolsId, -1 );
+ createMenu( GEOMOp::OpCheckGeom, toolsId, -1 );
+#endif
int viewId = createMenu( tr( "MEN_VIEW" ), -1, -1 );
- createMenu( separator(), viewId, -1 );
+ createMenu( separator(), viewId, -1 );
int dispmodeId = createMenu( tr( "MEN_DISPLAY_MODE" ), viewId, -1 );
- createMenu( 211, dispmodeId, -1 );
-
- createMenu( separator(), viewId, -1 );
- createMenu( 212, viewId, -1 );
- createMenu( 214, viewId, -1 );
- createMenu( separator(), viewId, -1 );
- createMenu( 216, viewId, -1 );
- createMenu( 213, viewId, -1 );
- createMenu( 215, viewId, -1 );
+ createMenu( GEOMOp::OpDisplayMode, dispmodeId, -1 );
+ createMenu( separator(), dispmodeId, -1 );
+ createMenu( GEOMOp::OpSwitchVectors, dispmodeId, -1 );
+
+ createMenu( separator(), viewId, -1 );
+ createMenu( GEOMOp::OpShowAll, viewId, -1 );
+ createMenu( GEOMOp::OpHideAll, viewId, -1 );
+ createMenu( separator(), viewId, -1 );
+
+/*
+ PAL9111:
+ because of these items are accessible through object browser and viewers
+ we have removed they from main menu
+
+ createMenu( GEOMOp::OpShow, viewId, -1 );
+ createMenu( GEOMOp::OpShowOnly, viewId, -1 );
+ createMenu( GEOMOp::OpHide, viewId, -1 );
+*/
// ---- create toolbars --------------------------
int basicTbId = createTool( tr( "TOOL_BASIC" ) );
- createTool( 4011, basicTbId );
- createTool( 4012, basicTbId );
- createTool( 4013, basicTbId );
- createTool( 4014, basicTbId );
- createTool( 4015, basicTbId );
- createTool( 4019, basicTbId );
- createTool( 4016, basicTbId );
- createTool( 4017, basicTbId );
- createTool( 4018, basicTbId );
- createTool( 4020, basicTbId );
+ createTool( GEOMOp::OpPoint, basicTbId );
+ createTool( GEOMOp::OpLine, basicTbId );
+ createTool( GEOMOp::OpCircle, basicTbId );
+ createTool( GEOMOp::OpEllipse, basicTbId );
+ createTool( GEOMOp::OpArc, basicTbId );
+ createTool( GEOMOp::OpCurve, basicTbId );
+ createTool( GEOMOp::OpVector, basicTbId );
+ createTool( GEOMOp::OpPlane, basicTbId );
+ createTool( GEOMOp::OpLCS, basicTbId );
+ createTool( GEOMOp::OpOriginAndVectors, basicTbId );
int primTbId = createTool( tr( "TOOL_PRIMITIVES" ) );
- createTool( 4021, primTbId );
- createTool( 4022, primTbId );
- createTool( 4023, primTbId );
- createTool( 4024, primTbId );
- createTool( 4025, primTbId );
+ createTool( GEOMOp::OpBox, primTbId );
+ createTool( GEOMOp::OpCylinder, primTbId );
+ createTool( GEOMOp::OpSphere, primTbId );
+ createTool( GEOMOp::OpTorus, primTbId );
+ createTool( GEOMOp::OpCone, primTbId );
+ createTool( GEOMOp::OpRectangle, primTbId );
+ createTool( GEOMOp::OpDisk, primTbId );
int boolTbId = createTool( tr( "TOOL_BOOLEAN" ) );
- createTool( 5011, boolTbId );
- createTool( 5012, boolTbId );
- createTool( 5013, boolTbId );
- createTool( 5014, boolTbId );
+ createTool( GEOMOp::OpFuse, boolTbId );
+ createTool( GEOMOp::OpCommon, boolTbId );
+ createTool( GEOMOp::OpCut, boolTbId );
+ createTool( GEOMOp::OpSection, boolTbId );
int genTbId = createTool( tr( "TOOL_GENERATION" ) );
- createTool( 4031, genTbId );
- createTool( 4032, genTbId );
- createTool( 4033, genTbId );
- createTool( 4034, genTbId );
+ createTool( GEOMOp::OpPrism, genTbId );
+ createTool( GEOMOp::OpRevolution, genTbId );
+ createTool( GEOMOp::OpFilling, genTbId );
+ createTool( GEOMOp::OpPipe, genTbId );
int transTbId = createTool( tr( "TOOL_TRANSFORMATION" ) );
- createTool( 5021, transTbId );
- createTool( 5022, transTbId );
- createTool( 5023, transTbId );
- createTool( 5024, transTbId );
- createTool( 5025, transTbId );
- createTool( 5026, transTbId );
- createTool( separator(), transTbId );
- createTool( 5027, transTbId );
- createTool( 5028, transTbId );
+ createTool( GEOMOp::OpTranslate, transTbId );
+ createTool( GEOMOp::OpRotate, transTbId );
+ createTool( GEOMOp::OpChangeLoc, transTbId );
+ createTool( GEOMOp::OpMirror, transTbId );
+ createTool( GEOMOp::OpScale, transTbId );
+ createTool( GEOMOp::OpOffset, transTbId );
+ createTool( separator(), transTbId );
+ createTool( GEOMOp::OpMultiTranslate, transTbId );
+ createTool( GEOMOp::OpMultiRotate, transTbId );
+
+ int operTbId = createTool( tr( "TOOL_OPERATIONS" ) );
+ createTool( GEOMOp::Op2dSketcher, operTbId );
+ createTool( GEOMOp::Op3dSketcher, operTbId );
+ createTool( separator(), operTbId );
+ createTool( GEOMOp::OpExplode, operTbId );
+ createTool( separator(), operTbId );
+ createTool( GEOMOp::OpPartition, operTbId );
+ createTool( GEOMOp::OpArchimede, operTbId );
+ createTool( GEOMOp::OpShapesOnShape, operTbId );
+ createTool( GEOMOp::OpSharedShapes, operTbId );
+ createTool( separator(), operTbId );
+ createTool( GEOMOp::OpFillet1d, operTbId );
+ createTool( GEOMOp::OpFillet2d, operTbId );
+ createTool( GEOMOp::OpFillet3d, operTbId );
+ createTool( GEOMOp::OpChamfer, operTbId );
+
+ int buildTbId = createTool( tr( "TOOL_BUILD" ) );
+ createTool( GEOMOp::OpEdge, buildTbId );
+ createTool( GEOMOp::OpWire, buildTbId );
+ createTool( GEOMOp::OpFace, buildTbId );
+ createTool( GEOMOp::OpShell, buildTbId );
+ createTool( GEOMOp::OpSolid, buildTbId );
+ createTool( GEOMOp::OpCompound, buildTbId );
+
+ int measureTbId = createTool( tr( "TOOL_MEASURES" ) );
+ createTool( GEOMOp::OpPointCoordinates, measureTbId );
+ createTool( GEOMOp::OpProperties, measureTbId );
+ createTool( GEOMOp::OpCenterMass, measureTbId );
+ createTool( GEOMOp::OpInertia, measureTbId );
+ createTool( GEOMOp::OpNormale, measureTbId );
+ createTool( separator(), measureTbId );
+ createTool( GEOMOp::OpBoundingBox, measureTbId );
+ createTool( GEOMOp::OpMinDistance, measureTbId );
+ createTool( GEOMOp::OpAngle, measureTbId );
+ createTool( GEOMOp::OpTolerance , measureTbId );
+ createTool( separator(), measureTbId );
+ createTool( GEOMOp::OpFreeBoundaries, measureTbId );
+ createTool( GEOMOp::OpFreeFaces, measureTbId );
+ createTool( separator(), measureTbId );
+ createTool( GEOMOp::OpWhatIs, measureTbId );
+ createTool( GEOMOp::OpCheckShape, measureTbId );
+ createTool( GEOMOp::OpCheckCompound, measureTbId );
+
+ int advancedTbId = createTool( tr( "TOOL_ADVANCED" ) );
+ createTool( GEOMOp::OpPipeTShape, advancedTbId );
+ //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
+
+ // ---- create popup menus --------------------------
+
+ QString clientOCCorVTK = "(client='OCCViewer' or client='VTKViewer')";
+ QString clientOCCorVTK_AndSomeVisible = clientOCCorVTK + " and selcount>0 and isVisible";
+
+ QString clientOCCorVTKorOB = "(client='ObjectBrowser' or client='OCCViewer' or client='VTKViewer')";
+ QString clientOCCorVTKorOB_AndSomeVisible = clientOCCorVTKorOB + " and selcount>0 and isVisible";
+
+ QString autoColorPrefix =
+ "(client='ObjectBrowser' or client='OCCViewer') and type='Shape' and selcount=1 and isOCC=true";
QtxPopupMgr* mgr = popupMgr();
- mgr->insert( action( 901 ), -1, -1 ); // rename
- mgr->setRule( action( 901 ), "$type in {'Shape' 'Group'} and selcount=1", true );
- mgr->insert( action( 8001 ), -1, -1 ); // create group
- mgr->setRule( action( 8001 ), "client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true", true );
- mgr->insert( action( 801 ), -1, -1 ); // edit group
- mgr->setRule( action( 801 ), "client='ObjectBrowser' and type='Group' and selcount=1 and isOCC=true", true );
- mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->insert( action( GEOMOp::OpRename ), -1, -1 ); // rename
+ mgr->setRule( action( GEOMOp::OpRename ), QString("$type in {'Shape' 'Group'} and selcount=1"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpDelete ), -1, -1 ); // delete
+ mgr->setRule( action( GEOMOp::OpDelete ), QString("$type in {'Shape' 'Group'} and selcount>0"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpGroupCreatePopup ), -1, -1 ); // create group
+ mgr->setRule( action( GEOMOp::OpGroupCreatePopup ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpShowChildren ), -1, -1 ); // show children
+ mgr->setRule( action( GEOMOp::OpShowChildren ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and hasHiddenChildren=true"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpHideChildren ), -1, -1 ); // hide children
+ mgr->setRule( action( GEOMOp::OpHideChildren ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and hasShownChildren=true"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpGroupEdit ), -1, -1 ); // edit group
+ mgr->setRule( action( GEOMOp::OpGroupEdit ), QString("client='ObjectBrowser' and type='Group' and selcount=1 and isOCC=true"), QtxPopupMgr::VisibleRule );
+ mgr->insert( separator(), -1, -1 ); // -----------
dispmodeId = mgr->insert( tr( "MEN_DISPLAY_MODE" ), -1, -1 ); // display mode menu
- mgr->insert( action( 80311 ), dispmodeId, -1 ); // wireframe
- mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true );
- mgr->setRule( action( 80311 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Wireframe'", false );
- mgr->insert( action( 80312 ), dispmodeId, -1 ); // shading
- mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true );
- mgr->setRule( action( 80312 ), "(client='OCCViewer' or client='VTKViewer') and displaymode='Shading'", false );
- mgr->insert( separator(), -1, -1 ); // -----------
- mgr->insert( action( 8032 ), -1, -1 ); // color
- mgr->setRule( action( 8032 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true );
- mgr->insert( action( 8033 ), -1, -1 ); // transparency
- mgr->setRule( action( 8033 ), "(client='OCCViewer' or client='VTKViewer') and selcount>0", true );
- mgr->insert( action( 8034 ), -1, -1 ); // isos
- mgr->setRule( action( 8034 ), "client='OCCViewer' and selcount>0", true );
- mgr->insert( separator(), -1, -1 ); // -----------
- mgr->insert( action( 216 ), -1, -1 ); // display
- mgr->setRule( action( 216 ), "(selcount>0) and (((isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=false) or type='Component'))"
- "or ((isActiveView=false) and ($type in {'Shape' 'Group' 'Component'})))", true );
- mgr->insert( action( 215 ), -1, -1 ); // erase
- mgr->setRule( action( 215 ), "(isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=true and selcount>0) or (type='Component' and selcount=1))", true );
- mgr->insert( action( 214 ), -1, -1 ); // erase All
- mgr->setRule( action( 214 ), "client='OCCViewer' or client='VTKViewer'", true );
- mgr->insert( action( 213 ), -1, -1 ); // display only
- mgr->setRule( action( 213 ), "($type in {'Shape' 'Group'} and selcount>0) or (type='Component' and selcount=1)", true );
+ mgr->insert( action( GEOMOp::OpWireframe ), dispmodeId, -1 ); // wireframe
+ mgr->setRule( action( GEOMOp::OpWireframe ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( GEOMOp::OpWireframe ), clientOCCorVTK + " and displaymode='Wireframe'", QtxPopupMgr::ToggleRule );
+ mgr->insert( action( GEOMOp::OpShading ), dispmodeId, -1 ); // shading
+ mgr->setRule( action( GEOMOp::OpShading ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( GEOMOp::OpShading ), clientOCCorVTK + " and displaymode='Shading'", QtxPopupMgr::ToggleRule );
+ mgr->insert( separator(), dispmodeId, -1 );
+ mgr->insert( action( GEOMOp::OpVectors ), dispmodeId, -1 ); // vectors
+ mgr->setRule( action( GEOMOp::OpVectors ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( GEOMOp::OpVectors ), clientOCCorVTK + " and isVectorsMode", QtxPopupMgr::ToggleRule );
+ mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->insert( action( GEOMOp::OpColor ), -1, -1 ); // color
+ mgr->setRule( action( GEOMOp::OpColor ), clientOCCorVTKorOB_AndSomeVisible + " and ($component={'GEOM'})", QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpTransparency ), -1, -1 ); // transparency
+ mgr->setRule( action( GEOMOp::OpTransparency ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpIsos ), -1, -1 ); // isos
+ mgr->setRule( action( GEOMOp::OpIsos ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpDeflection ), -1, -1 ); // deflection
+ mgr->setRule( action( GEOMOp::OpDeflection ), "selcount>0 and isVisible and client='OCCViewer'", QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpPointMarker ), -1, -1 ); // point marker
+ //mgr->setRule( action( GEOMOp::OpPointMarker ), QString( "selcount>0 and $typeid in {%1}" ).arg(GEOM_POINT ), QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( GEOMOp::OpPointMarker ), QString( "selcount>0 and ( $typeid in {%1} or compoundOfVertices=true ) " ).arg(GEOM::VERTEX).arg(GEOM::COMPOUND), QtxPopupMgr::VisibleRule );
+ mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->insert( action( GEOMOp::OpAutoColor ), -1, -1 ); // auto color
+ mgr->setRule( action( GEOMOp::OpAutoColor ), autoColorPrefix + " and isAutoColor=false", QtxPopupMgr::VisibleRule );
+ mgr->insert( action( GEOMOp::OpNoAutoColor ), -1, -1 ); // disable auto color
+ mgr->setRule( action( GEOMOp::OpNoAutoColor ), autoColorPrefix + " and isAutoColor=true", QtxPopupMgr::VisibleRule );
+ mgr->insert( separator(), -1, -1 ); // -----------
+
+ QString canDisplay = "($component={'GEOM'}) and (selcount>0) and ({true} in $canBeDisplayed) ",
+ onlyComponent = "((type='Component') and selcount=1)",
+ rule = canDisplay + "and ((($type in {%1}) and( %2 )) or " + onlyComponent + ")",
+ types = "'Shape' 'Group'";
+
+ mgr->insert( action( GEOMOp::OpShow ), -1, -1 ); // display
+ mgr->setRule( action( GEOMOp::OpShow ), rule.arg( types ).arg( "not isVisible" ), QtxPopupMgr::VisibleRule );
+
+ mgr->insert( action( GEOMOp::OpHide ), -1, -1 ); // erase
+ mgr->setRule( action( GEOMOp::OpHide ), rule.arg( types ).arg( "isVisible" ), QtxPopupMgr::VisibleRule );
+
+ mgr->insert( action( GEOMOp::OpHideAll ), -1, -1 ); // erase All
+ mgr->setRule( action( GEOMOp::OpHideAll ), clientOCCorVTK, QtxPopupMgr::VisibleRule );
+
+ QString selectOnly = "(client='OCCViewer' or client='VTKViewer') and (selcount=0)";
+
+ int selectonlyId = mgr->insert( tr("MEN_SELECT_ONLY"), -1, -1); //select only menu
+ mgr->insert( action(GEOMOp::OpSelectVertex), selectonlyId, -1); //Vertex
+ mgr->setRule(action(GEOMOp::OpSelectVertex), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectVertex), selectOnly + " and selectionmode='VERTEX'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectEdge), selectonlyId, -1); //Edge
+ mgr->setRule(action(GEOMOp::OpSelectEdge), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectEdge), selectOnly + " and selectionmode='EDGE'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectWire), selectonlyId, -1); //Wire
+ mgr->setRule(action(GEOMOp::OpSelectWire), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectWire), selectOnly + " and selectionmode='WIRE'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectFace), selectonlyId, -1); //Face
+ mgr->setRule(action(GEOMOp::OpSelectFace), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectFace), selectOnly + " and selectionmode='FACE'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectShell), selectonlyId, -1); //Shell
+ mgr->setRule(action(GEOMOp::OpSelectShell), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectShell), selectOnly + " and selectionmode='SHELL'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectSolid), selectonlyId, -1); //Solid
+ mgr->setRule(action(GEOMOp::OpSelectSolid), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectSolid), selectOnly + " and selectionmode='SOLID'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpSelectCompound), selectonlyId, -1); //Compound
+ mgr->setRule(action(GEOMOp::OpSelectCompound), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectCompound), selectOnly + " and selectionmode='COMPOUND'", QtxPopupMgr::ToggleRule);
+ mgr->insert( separator(), selectonlyId, -1);
+ mgr->insert( action(GEOMOp::OpSelectAll), selectonlyId, -1); //Clear selection filter
+ mgr->setRule(action(GEOMOp::OpSelectAll), selectOnly, QtxPopupMgr::VisibleRule);
+ mgr->setRule(action(GEOMOp::OpSelectAll), selectOnly + " and selectionmode='ALL'", QtxPopupMgr::ToggleRule);
+ mgr->insert( action(GEOMOp::OpShowOnly ), -1, -1 ); // display only
+ mgr->setRule(action(GEOMOp::OpShowOnly ), rule.arg( types ).arg( "true" ), QtxPopupMgr::VisibleRule );
mgr->insert( separator(), -1, -1 );
+
+ mgr->hide( mgr->actionId( action( myEraseAll ) ) );
}
//=======================================================================
-// function : GeometryGUI::Deactivate()
-// purpose : Called when GEOM module is deactivated [ static ]
+// function : GeometryGUI::activateModule()
+// purpose : Called when GEOM module is activated
//=======================================================================
bool GeometryGUI::activateModule( SUIT_Study* study )
{
setMenuShown( true );
setToolShown( true );
- connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
- this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
- connect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
- this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
+ // import Python module that manages GEOM plugins (need to be here because SalomePyQt API uses active module)
+ PyGILState_STATE gstate = PyGILState_Ensure();
+ PyObject* pluginsmanager=PyImport_ImportModule((char*)"salome_pluginsmanager");
+ if(pluginsmanager==NULL)
+ PyErr_Print();
+ else
+ {
+ PyObject* result=PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)"isss",1,"geom",tr("MEN_NEW_ENTITY").toStdString().c_str(),tr("GEOM_PLUGINS_OTHER").toStdString().c_str());
+ if(result==NULL)
+ PyErr_Print();
+ Py_XDECREF(result);
+ }
+ PyGILState_Release(gstate);
+ // end of GEOM plugins loading
+
+ connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
+ this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
+
+ // Reset actions accelerator keys
+ action(GEOMOp::OpImport)->setEnabled( true ); // Import: CTRL + Key_I
+ action(GEOMOp::OpExport)->setEnabled( true ); // Export: CTRL + Key_E
+ action(GEOMOp::OpDelete)->setEnabled( true ); // Delete: Key_Delete
+ action(GEOMOp::OpRename)->setEnabled( true ); // Rename: Key_F2
GUIMap::Iterator it;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- it.data()->activate( application()->desktop() );
+ it.value()->activate( application()->desktop() );
+
+ LightApp_SelectionMgr* sm = getApp()->selectionMgr();
- SalomeApp_SelectionMgr* sm = getApp()->selectionMgr();
SUIT_ViewManager* vm;
ViewManagerList OCCViewManagers, VTKViewManagers;
+
application()->viewManagers( OCCViewer_Viewer::Type(), OCCViewManagers );
- for ( vm = OCCViewManagers.first(); vm; vm = OCCViewManagers.next() )
+ QListIterator<SUIT_ViewManager*> itOCC( OCCViewManagers );
+ while ( itOCC.hasNext() && (vm = itOCC.next()) )
myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) );
- application()->viewManagers( VTKViewer_Viewer::Type(), VTKViewManagers );
- for ( vm = VTKViewManagers.first(); vm; vm = VTKViewManagers.next() )
- myVTKSelectors.append( new SalomeApp_VTKSelector( (SVTK_Viewer*)vm->getViewModel(), sm ) );
+
+ application()->viewManagers( SVTK_Viewer::Type(), VTKViewManagers );
+ QListIterator<SUIT_ViewManager*> itVTK( VTKViewManagers );
+ while ( itVTK.hasNext() && (vm = itVTK.next()) )
+ myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast<SVTK_Viewer*>( vm->getViewModel() ), sm ) );
+
+ //NPAL 19674
+ SALOME_ListIO selected;
+ sm->selectedObjects( selected );
+ sm->clearSelected();
// disable OCC selectors
getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() );
- for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() )
- sr->setEnabled(true);
-
+ QListIterator<GEOMGUI_OCCSelector*> itOCCSel( myOCCSelectors );
+ while ( itOCCSel.hasNext() )
+ if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() )
+ sr->setEnabled(true);
+
// disable VTK selectors
- getApp()->selectionMgr()->setEnabled( false, VTKViewer_Viewer::Type() );
- for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() )
- sr->setEnabled(true);
-
+ getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() );
+ QListIterator<LightApp_VTKSelector*> itVTKSel( myVTKSelectors );
+ while ( itVTKSel.hasNext() )
+ if ( LightApp_VTKSelector* sr = itVTKSel.next() )
+ sr->setEnabled(true);
+
+ sm->setSelectedObjects( selected, true ); //NPAL 19674
+
+ QMenu* viewMenu = menuMgr()->findMenu( STD_Application::MenuViewId );
+ if ( viewMenu )
+ connect( viewMenu, SIGNAL( aboutToShow() ), this, SLOT( onViewAboutToShow() ) );
+
+ // 0020836 (Basic vectors and origin)
+ SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+ if( aResourceMgr->booleanValue( "Geometry", "auto_create_base_objects", false ) ) {
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
+ if( appStudy ) {
+ _PTR(Study) studyDS = appStudy->studyDS();
+ if( studyDS ) {
+ _PTR(SComponent) aSComponent = studyDS->FindComponent("GEOM");
+ if( !aSComponent ) // create objects automatically only if there is no GEOM component
+ createOriginAndBaseVectors();
+ }
+ }
+ }
+
return true;
}
//=======================================================================
-// function : GeometryGUI::Deactivate()
-// purpose : Called when GEOM module is deactivated [ static ]
+// function : GeometryGUI::deactivateModule()
+// purpose : Called when GEOM module is deactivated
//=======================================================================
bool GeometryGUI::deactivateModule( SUIT_Study* study )
{
+ QMenu* viewMenu = menuMgr()->findMenu( STD_Application::MenuViewId );
+ if ( viewMenu )
+ disconnect( viewMenu, SIGNAL( aboutToShow() ), this, SLOT( onViewAboutToShow() ) );
+
setMenuShown( false );
setToolShown( false );
- disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
- this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
- disconnect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
- this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
+ disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
+ this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
EmitSignalCloseAllDialogs();
GUIMap::Iterator it;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
- it.data()->deactivate();
+ it.value()->deactivate();
+
+ // Unset actions accelerator keys
+ action(GEOMOp::OpImport)->setEnabled( false ); // Import: CTRL + Key_I
+ action(GEOMOp::OpExport)->setEnabled( false ); // Export: CTRL + Key_E
+ action(GEOMOp::OpDelete)->setEnabled( false ); // Delete: Key_Delete
+ action(GEOMOp::OpRename)->setEnabled( false ); // Rename: Key_F2
+ qDeleteAll(myOCCSelectors);
myOCCSelectors.clear();
getApp()->selectionMgr()->setEnabled( true, OCCViewer_Viewer::Type() );
+ qDeleteAll(myVTKSelectors);
myVTKSelectors.clear();
- getApp()->selectionMgr()->setEnabled( true, VTKViewer_Viewer::Type() );
+ getApp()->selectionMgr()->setEnabled( true, SVTK_Viewer::Type() );
return SalomeApp_Module::deactivateModule( study );
}
-//=================================================================================
-// function : GeometryGUI::DefinePopup()
-// purpose : Called from desktop to define popup menu [static]
-//=================================================================================
-/*
-void GeometryGUI::DefinePopup(QString& theContext, QString& theParent, QString& theObject)
-{
- QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy();
- SALOME_Selection* Sel = SALOME_Selection::Selection(ActiveStudy->getSelection());
-
- theObject = "";
- theContext = "";
-
- if ( theParent == "Viewer" ) {
- if ( Sel->IObjectCount() == 0 )
- theContext = "NothingSelected";
- }
-
- if ( Sel->IObjectCount() == 1 ) {
- Handle(SALOME_InteractiveObject) IO = Sel->firstIObject();
- if( IO->hasEntry() ) {
- SALOMEDS::SObject_var sobj = ActiveStudy->getStudyDocument()->FindObjectID( IO->getEntry() );
- if ( !sobj->_is_nil() ) {
- SALOMEDS::SComponent_var scomp = sobj->GetFatherComponent();
- if ( !strcmp(scomp->GetID(), IO->getEntry() ) ) {
- // component is selected
- theObject = "Component";
- }
- else {
- GEOM::GEOM_Object_var aGObj = GEOM::GEOM_Object::_narrow( sobj->GetObject() );
- if ( !CORBA::is_nil( aGObj ) ) {
- switch( aGObj->GetType() ) {
- case GEOM_GROUP:
- theObject = "Group";
- break;
- default:
- theObject = "Shape";
- break;
- }
- }
- }
- }
- }
- }
-}
-
-//=================================================================================
-// function : GeometryGUI::CustomPopup()
-// purpose : Called from desktop to create popup menu [static]
-//=================================================================================
-bool GeometryGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString& theContext,
- const QString& theParent, const QString& theObject)
-{
- GeometryGUI* geomGUI = GetGeomGUI();
-
- // Deactivate any non modal dialog box to get the neutral point
- geomGUI->EmitSignalDeactivateDialog();
- QAD_Study* anActiveStudy = parent->getActiveStudy();
- QAD_StudyFrame* aStudyFrame = anActiveStudy->getActiveStudyFrame();
- QAD_ViewFrame* aViewFrame = aStudyFrame->getRightFrame()->getViewFrame();
- SALOME_Selection* Sel = SALOME_Selection::Selection(anActiveStudy->getSelection());
- QString parentComponent = ((SALOMEGUI_Desktop*)parent)->getComponentFromSelection();
- bool isOCCViewer = aViewFrame->getTypeView() == VIEW_OCC;
- bool isVTKViewer = aViewFrame->getTypeView() == VIEW_VTK;
- int aDisplayMode = 0;
- QString objectName;
-
- if ( aViewFrame->getTypeView() == VIEW_OCC )
- aDisplayMode = ((OCCViewer_ViewFrame*)aViewFrame)->getViewer()->getAISContext()->DisplayMode();
- else if ( aViewFrame->getTypeView() == VIEW_VTK )
- aDisplayMode = ((VTKViewer_ViewFrame*)aViewFrame)->getRWInteractor()->GetDisplayMode();
-
- int nbSel = Sel->IObjectCount();
-
- if( nbSel == 0 ) {
- ////// NOTHING SELECTED
- popup->clear();
- }
- else if ( nbSel == 1 ) {
- ////// SINGLE OBJECT SELECTION
- if ( parentComponent != parent->getActiveComponent() ) {
- ////// selected object does not belong to GEOM module:
- // remove all commands except Display/Erase...
- while ( 1 ) {
- int id = popup->idAt( 0 );
- if ( id <= QAD_TopLabel_Popup_ID )
- popup->removeItemAt( 0 );
- else
- break;
- }
- }
- else {
- ////// selected object belong to the GEOM module
- // get interactive object
- Handle(SALOME_InteractiveObject) IObject = Sel->firstIObject();
- objectName = IObject->getName();
- // if object has entry get SObject
- SALOMEDS::SObject_var SO;
- if ( IObject->hasEntry() )
- SO = anActiveStudy->getStudyDocument()->FindObjectID( IObject->getEntry() );
-
- if ( theObject == "Component" ) {
- ////// menu for component
- if ( !isOCCViewer && !isVTKViewer ) {
- popup->removeItem( QAD_DisplayOnly_Popup_ID );
- popup->removeItem( QAD_Display_Popup_ID );
- popup->removeItem( QAD_Erase_Popup_ID );
- }
- }
- else {
- ////// not component (should be shape)
- if ( IObject->hasEntry() ) /////// VSR : TO BE REMOVED
- popup->removeItem( 804 ); // "Add in Study"
-
- // Here could be analysis of the geom shape's type
- // ... //
-
- SALOMEDS::GenericAttribute_var aTmpAttr;
- if( SO->_is_nil() || SO->GetFatherComponent()->FindAttribute( aTmpAttr, "AttributeIOR") )
- popup->removeItem( 9024 ); // "Open" /////// VSR : TO BE REMOVED
-
- if ( !isOCCViewer && theParent == "ObjectBrowser" ) {
- if ( theObject == "Shape" )
- popup->removeItem( 800 ); // Create Group
- else if ( theObject == "Group" )
- popup->removeItem( 801 ); // Edit Group
- }
-
- if ( isOCCViewer || isVTKViewer ) {
- ////// current viewer is OCC or VTK
- SALOME_Prs* prs = aViewFrame->CreatePrs( IObject->getEntry() );
- if ( aViewFrame->isVisible( IObject ) ) {
- ////// object is already displayed in the viewer
- popup->removeItem( QAD_Display_Popup_ID );
- if ( isOCCViewer ) {
- ////// OCC viewer only
- OCCViewer_Prs* occPrs = dynamic_cast<OCCViewer_Prs*>( prs );
- if ( occPrs && !occPrs->IsNull() ) {
- AIS_ListOfInteractive ioList;
- occPrs->GetObjects( ioList );
- QMenuItem* mi = popup->findItem( 803 );
- if ( mi && mi->popup() ) {
- if ( ioList.First()->DisplayMode() == 0 )
- mi->popup()->setItemChecked( 80311, true ); // "Wireframe"
- else if ( ioList.First()->DisplayMode() == 1 )
- mi->popup()->setItemChecked( 80312, true ); // "Shading"
- else if ( ioList.First()->DisplayMode() < 0 )
- mi->popup()->setItemChecked( aDisplayMode == 0 ? 80311 : 80312 , true ); // "Wireframe" or "Shading"
- }
- }
- }
- else {
- ////// VTK viewer only
- popup->removeItem( 8034 ); // "Isos"
- VTKViewer_Prs* vtkPrs = dynamic_cast<VTKViewer_Prs*>( prs );
- if ( vtkPrs && !vtkPrs->IsNull() ) {
- vtkActorCollection* actorList = vtkPrs->GetObjects();
- actorList->InitTraversal();
- SALOME_Actor* ac = SALOME_Actor::SafeDownCast( actorList->GetNextActor() );
- QMenuItem* mi = popup->findItem( 803 );
- if ( ac && mi && mi->popup() ) {
- if ( ac->getDisplayMode() == 0 )
- mi->popup()->setItemChecked( 80311, true ); // "Wireframe"
- else if ( ac->getDisplayMode() == 1 )
- mi->popup()->setItemChecked( 80312, true ); // "Shading"
- else
- mi->popup()->setItemChecked( aDisplayMode == 0 ? 80311 : 80312 , true ); // "Wireframe" or "Shading"
- }
- }
- }
- }
- else {
- ////// object is not yet displayed in the viewer
- popup->removeItem( 803 ); // "Display Mode"
- popup->removeItem( 8032 ); // "Color"
- popup->removeItem( 8033 ); // "Transparency"
- popup->removeItem( 8034 ); // "Isos"
- popup->removeItem( QAD_Erase_Popup_ID );
- }
- delete prs;
- }
- else {
- ////// other viewer type (neither OCC nor VTK)
- popup->removeItem( 803 ); // "Display Mode"
- popup->removeItem( 8032 ); // "Color"
- popup->removeItem( 8033 ); // "Transparency"
- popup->removeItem( 8034 ); // "Isos"
- popup->removeItem( QAD_Display_Popup_ID );
- popup->removeItem( QAD_DisplayOnly_Popup_ID );
- popup->removeItem( QAD_Erase_Popup_ID );
- }
- }
- }
- }
- else {
- ////// MULTIPLE SELECTION
- if ( parentComponent != parent->getActiveComponent() ) {
- ////// not GEOM module objects or objects belong to different modules
- // remove all commands except Display/Erase...
- while ( 1 ) {
- int id = popup->idAt( 0 );
- if ( id <= QAD_TopLabel_Popup_ID )
- popup->removeItemAt( 0 );
- else
- break;
- }
- if ( parentComponent.isNull() ) {
- ////// objects belong to different modules
- popup->removeItem(QAD_Display_Popup_ID);
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- popup->removeItem(QAD_Erase_Popup_ID);
- }
- else {
- objectName = tr( "GEOM_MEN_POPUP_NAME" ).arg( nbSel );
- }
- }
- else {
- ////// all selected objects belong to GEOM module
- popup->removeItem( 901 ); // "Rename"
-
- SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() );
- bool isComponent = false;
- bool needOpen = false;
- bool needDisplay = false;
- bool needErase = false;
- int needToPublish = 0;
-
- for( ;It.More();It.Next() ) {
- Handle(SALOME_InteractiveObject) anIObject = It.Value();
-
- if ( aViewFrame->isVisible( anIObject ) )
- needErase = true;
- else
- needDisplay = true;
-
- if( anIObject->hasEntry() ) {
- needToPublish = -1; /////// VSR : TO BE REMOVED
- SALOMEDS::SObject_var obj = anActiveStudy->getStudyDocument()->FindObjectID( anIObject->getEntry() );
- SALOMEDS::GenericAttribute_var aTmpAttr;
- if ( !obj->_is_nil() && !obj->GetFatherComponent()->FindAttribute( aTmpAttr, "AttributeIOR" ) )
- needOpen = true; /////// VSR : TO BE REMOVED
- if ( !obj->_is_nil() && QString( obj->GetID() ) == QString( obj->GetFatherComponent()->GetID() ) )
- isComponent = true;
- }
- else {
- if ( needToPublish != -1 ) needToPublish = 1;
- }
- }
- if( needOpen || ( !isOCCViewer && !isVTKViewer ) ) {
- ////// Data is not loaded yet or current viewer is neither OCC nor VTK
- popup->removeItem( 803 ); // "Display Mode"
- popup->removeItem( 8032 ); // "Color"
- popup->removeItem( 8033 ); // "Transparency"
- popup->removeItem( 8034 ); // "Isos"
- popup->removeItem( 804 ); // "Add in Study"
- popup->removeItem( QAD_DisplayOnly_Popup_ID );
- popup->removeItem( QAD_Display_Popup_ID );
- popup->removeItem( QAD_Erase_Popup_ID );
- }
- else {
- popup->removeItem( 9024 ); // "Open"
- if ( needToPublish <= 0 )
- popup->removeItem( 804 ); // "Add in Study"
-
- if( isComponent ) {
- popup->removeItem( 803 ); // "Display Mode"
- popup->removeItem( 8032 ); // "Color"
- popup->removeItem( 8033 ); // "Transparency"
- popup->removeItem( 8034 ); // "Isos"
- popup->removeItem( QAD_DisplayOnly_Popup_ID );
- }
-
- if ( !needDisplay )
- popup->removeItem( QAD_Display_Popup_ID );
- if ( !needErase )
- popup->removeItem( QAD_Erase_Popup_ID );
- if ( !isOCCViewer )
- popup->removeItem( 8034 ); // "Isos"
- }
- }
- }
-
- // check popup for unnecessary separators
- QAD_Tools::checkPopup( popup );
- // find popup menu's TopLabel item (with title)
- int topItem = popup->indexOf( QAD_TopLabel_Popup_ID );
- if ( topItem >= 0 ) {
- // remove popup menu's title item
- popup->removeItem( QAD_TopLabel_Popup_ID );
- if ( theParent == "Viewer" && !objectName.isEmpty() && popup->count() > 0 ) {
- // set bold font for popup menu's title
- QFont f = popup->font(); f.setBold( TRUE );
- popup->removeItem( QAD_TopLabel_Popup_ID );
- popup->insertItem( new CustomItem( objectName, f ), QAD_TopLabel_Popup_ID, topItem );
- }
- }
-
- return false;
-}
-
-*/
-
//=======================================================================
-// function : GeometryGUI::BuildPresentation()
-// purpose :
-//=======================================================================
-void GeometryGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)& io, SUIT_ViewWindow* win )
-{
- //GEOM_Displayer().Display( io, false, win );
-}
-
-//=======================================================================
-// function : setCommandsEnabled()
+// function : onWindowActivated()
// purpose : update menu items' status - disable non-OCC-viewer-compatible actions
//=======================================================================
void GeometryGUI::onWindowActivated( SUIT_ViewWindow* win )
return;
const bool ViewOCC = ( win->getViewManager()->getType() == OCCViewer_Viewer::Type() );
-// const bool ViewVTK = ( win->getViewManager()->getType() == VTKViewer_Viewer::Type() );
-
+ //const bool ViewVTK = ( win->getViewManager()->getType() == SVTK_Viewer::Type() );
+
// disable non-OCC viewframe menu commands
-// action( 404 )->setEnabled( ViewOCC ); // SKETCHER
- action( 603 )->setEnabled( ViewOCC ); // SuppressFace
- action( 604 )->setEnabled( ViewOCC ); // SuppressHole
- action( 606 )->setEnabled( ViewOCC ); // CloseContour
- action( 607 )->setEnabled( ViewOCC ); // RemoveInternalWires
- action( 608 )->setEnabled( ViewOCC ); // AddPointOnEdge
-// action( 609 )->setEnabled( ViewOCC ); // Free boundaries
- action( 413 )->setEnabled( ViewOCC ); // Isos Settings
-
- action( 800 )->setEnabled( ViewOCC ); // Create Group
- action( 801 )->setEnabled( ViewOCC ); // Edit Group
-
- action( 9998 )->setEnabled( ViewOCC ); // MENU BLOCKS - MULTI-TRANSFORMATION
+// action( GEOMOp::Op2dSketcher )->setEnabled( ViewOCC ); // SKETCHER
+ action( GEOMOp::OpSuppressFaces )->setEnabled( ViewOCC ); // SuppressFace
+ action( GEOMOp::OpSuppressHoles )->setEnabled( ViewOCC ); // SuppressHole
+ action( GEOMOp::OpCloseContour )->setEnabled( ViewOCC ); // CloseContour
+ action( GEOMOp::OpRemoveIntWires )->setEnabled( ViewOCC ); // RemoveInternalWires
+ action( GEOMOp::OpAddPointOnEdge )->setEnabled( ViewOCC ); // AddPointOnEdge
+// action( GEOMOp::OpFreeBoundaries )->setEnabled( ViewOCC ); // Free boundaries
+
+ action( GEOMOp::OpGroupCreate )->setEnabled( ViewOCC ); // Create Group
+ action( GEOMOp::OpGroupEdit )->setEnabled( ViewOCC ); // Edit Group
+
+ action( GEOMOp::OpMultiTransform )->setEnabled( ViewOCC ); // MENU BLOCKS - MULTI-TRANSFORMATION
}
void GeometryGUI::windows( QMap<int, int>& mappa ) const
{
- mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft );
- mappa.insert( SalomeApp_Application::WT_PyConsole, Qt::DockBottom );
+ mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
+ mappa.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea );
}
void GeometryGUI::viewManagers( QStringList& lst ) const
void GeometryGUI::onViewManagerAdded( SUIT_ViewManager* vm )
{
- if ( vm->getType() == OCCViewer_Viewer::Type() )
+ if ( vm && vm->getType() == OCCViewer_Viewer::Type() )
{
- SalomeApp_SelectionMgr* sm = getApp()->selectionMgr();
+ qDebug( "connect" );
+ connect( vm, SIGNAL( keyPress ( SUIT_ViewWindow*, QKeyEvent* ) ),
+ this, SLOT( OnKeyPress( SUIT_ViewWindow*, QKeyEvent* ) ) );
+ connect( vm, SIGNAL( mousePress( SUIT_ViewWindow*, QMouseEvent* ) ),
+ this, SLOT( OnMousePress( SUIT_ViewWindow*, QMouseEvent* ) ) );
+ connect( vm, SIGNAL( mouseMove ( SUIT_ViewWindow*, QMouseEvent* ) ),
+ this, SLOT( OnMouseMove( SUIT_ViewWindow*, QMouseEvent* ) ) );
+
+ LightApp_SelectionMgr* sm = getApp()->selectionMgr();
myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) );
// disable OCC selectors
getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() );
- for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() )
- sr->setEnabled(true);
+ QListIterator<GEOMGUI_OCCSelector*> itOCCSel( myOCCSelectors );
+ while ( itOCCSel.hasNext() )
+ if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() )
+ sr->setEnabled(true);
}
- else if ( vm->getType() == VTKViewer_Viewer::Type() )
+ else if ( vm->getType() == SVTK_Viewer::Type() )
{
- SalomeApp_SelectionMgr* sm = getApp()->selectionMgr();
- myVTKSelectors.append( new SalomeApp_VTKSelector( (SVTK_Viewer*)vm->getViewModel(), sm ) );
-
+ LightApp_SelectionMgr* sm = getApp()->selectionMgr();
+ myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast<SVTK_Viewer*>( vm->getViewModel() ), sm ) );
+
// disable VTK selectors
- getApp()->selectionMgr()->setEnabled( false, VTKViewer_Viewer::Type() );
- for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() )
- sr->setEnabled(true);
+ getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() );
+ QListIterator<LightApp_VTKSelector*> itVTKSel( myVTKSelectors );
+ while ( itVTKSel.hasNext() )
+ if ( LightApp_VTKSelector* sr = itVTKSel.next() )
+ sr->setEnabled(true);
}
}
SUIT_ViewModel* viewer = vm->getViewModel();
if ( vm->getType() == OCCViewer_Viewer::Type() )
{
- for ( GEOMGUI_OCCSelector* sr = myOCCSelectors.first(); sr; sr = myOCCSelectors.next() )
- if ( sr->viewer() == viewer )
- {
- myOCCSelectors.remove( sr );
- break;
- }
+ QListIterator<GEOMGUI_OCCSelector*> itOCCSel( myOCCSelectors );
+ while ( itOCCSel.hasNext() )
+ if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() )
+ if ( sr->viewer() == viewer )
+ {
+ delete myOCCSelectors.takeAt( myOCCSelectors.indexOf( sr ) );
+ break;
+ }
}
- if ( vm->getType() == VTKViewer_Viewer::Type() )
+ if ( vm->getType() == SVTK_Viewer::Type() )
{
- for ( SalomeApp_VTKSelector* sr = myVTKSelectors.first(); sr; sr = myVTKSelectors.next() )
- if ( sr->viewer() == viewer )
- {
- myVTKSelectors.remove( sr );
- break;
- }
+ QListIterator<LightApp_VTKSelector*> itVTKSel( myVTKSelectors );
+ while ( itVTKSel.hasNext() )
+ if ( LightApp_VTKSelector* sr = itVTKSel.next() )
+ if ( sr->viewer() == viewer )
+ {
+ delete myVTKSelectors.takeAt( myVTKSelectors.indexOf( sr ) );
+ break;
+ }
}
}
{
if ( !CORBA::is_nil( GetGeomGen() ) )
return QString( getApp()->orb()->object_to_string( GetGeomGen() ) );
- return QString( "" );
+ return "";
+}
+
+Handle(Graphic3d_HArray1OfBytes) GeometryGUI::getTexture( SalomeApp_Study* theStudy, int theId, int& theWidth, int& theHeight )
+{
+ theWidth = theHeight = 0;
+ Handle(Graphic3d_HArray1OfBytes) aTexture;
+ if ( theStudy ) {
+ TextureMap aTextureMap = myTextureMap[ theStudy->studyDS()->StudyId() ];
+ aTexture = aTextureMap[ theId ];
+ if ( aTexture.IsNull() ) {
+ GEOM::GEOM_IInsertOperations_var aInsOp = GeometryGUI::GetGeomGen()->GetIInsertOperations( theStudy->studyDS()->StudyId() );
+ if ( !aInsOp->_is_nil() ) {
+ CORBA::Long aWidth, aHeight;
+ SALOMEDS::TMPFile_var aStream = aInsOp->GetTexture( theId, aWidth, aHeight );
+ if ( aWidth > 0 && aHeight > 0 && aStream->length() > 0 ) {
+ theWidth = aWidth;
+ theHeight = aHeight;
+ aTexture = new Graphic3d_HArray1OfBytes( 1, aStream->length() );
+ for ( int i = 0; i < aStream->length(); i++ )
+ aTexture->SetValue( i+1, (Standard_Byte)aStream[i] );
+ aTextureMap[ theId ] = aTexture;
+ }
+ }
+ }
+ }
+ return aTexture;
}
-SalomeApp_Selection* GeometryGUI::createSelection() const
+LightApp_Selection* GeometryGUI::createSelection() const
{
return new GEOMGUI_Selection();
}
-void GeometryGUI::contextMenuPopup( const QString& client, QPopupMenu* menu, QString& title )
+void GeometryGUI::contextMenuPopup( const QString& client, QMenu* menu, QString& title )
{
- SalomeApp_Module::contextMenuPopup( client, menu, title );
+ SalomeApp_Module::contextMenuPopup(client, menu, title);
+
SALOME_ListIO lst;
- getApp()->selectionMgr()->selectedObjects( lst );
- if ( ( client == "OCCViewer" || client == "VTKViewer" ) && lst.Extent() == 1 ) {
- Handle(SALOME_InteractiveObject) io = lst.First();
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
- _PTR(Study) study = appStudy->studyDS();
- _PTR(SObject) obj = study->FindObjectID( io->getEntry() );
- if ( obj )
- title = QString( obj->GetName().c_str() );
+ getApp()->selectionMgr()->selectedObjects(lst);
+ if (lst.Extent() < 1)
+ return;
+
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
+ _PTR(Study) study = appStudy->studyDS();
+
+ bool isImported = true;
+ SALOME_ListIteratorOfListIO anIt (lst);
+ for (; anIt.More() && isImported; anIt.Next()) {
+ Handle(SALOME_InteractiveObject) io = anIt.Value();
+ _PTR(SObject) aSObj = study->FindObjectID(io->getEntry());
+ if (aSObj) {
+ if (lst.Extent() == 1) {
+ // Set context menu title
+ if (client == "OCCViewer" || client == "VTKViewer")
+ title = QString(aSObj->GetName().c_str());
+ }
+
+ 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)
+ isImported = false;
+ } else {
+ isImported = false;
+ }
+ }
+
+ if (isImported) {
+ menu->addAction(action(GEOMOp::OpReimport)); // Reload imported shape
}
}
int tabId = addPreference( tr( "PREF_TAB_SETTINGS" ) );
int genGroup = addPreference( tr( "PREF_GROUP_GENERAL" ), tabId );
+ setPreferenceProperty( genGroup, "columns", 2 );
+
+ int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), genGroup,
+ LightApp_Preferences::Selector,
+ "Geometry", "display_mode" );
+
addPreference( tr( "PREF_SHADING_COLOR" ), genGroup,
- SalomeApp_Preferences::Color, "Geometry", "shading_color" );
+ LightApp_Preferences::Color, "Geometry", "shading_color" );
+
+ addPreference( tr( "PREF_WIREFRAME_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "wireframe_color" );
+
+ addPreference( tr( "PREF_FREE_BOUND_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "free_bound_color" );
+
+ addPreference( tr( "PREF_LINE_COLOR"), genGroup,
+ LightApp_Preferences::Color, "Geometry", "line_color" );
+
+ addPreference( tr( "PREF_POINT_COLOR"), genGroup,
+ LightApp_Preferences::Color, "Geometry", "point_color" );
+
+ addPreference( tr( "PREF_ISOS_COLOR" ), genGroup,
+ LightApp_Preferences::Color, "Geometry", "isos_color" );
+
int step = addPreference( tr( "PREF_STEP_VALUE" ), genGroup,
- SalomeApp_Preferences::IntSpin, "Geometry", "SettingsGeomStep" );
- int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), genGroup,
- SalomeApp_Preferences::Selector, "Geometry", "display_mode" );
+ LightApp_Preferences::IntSpin, "Geometry", "SettingsGeomStep" );
+
+ int defl = addPreference( tr( "PREF_DEFLECTION" ), genGroup,
+ LightApp_Preferences::DblSpin, "Geometry", "deflection_coeff" );
+
+ // Quantities with individual precision settings
+ int precGroup = addPreference( tr( "GEOM_PREF_GROUP_PRECISION" ), tabId );
+ setPreferenceProperty( precGroup, "columns", 2 );
+
+ const int nbQuantities = 8;
+ int prec[nbQuantities], ii = 0;
+ prec[ii++] = addPreference( tr( "GEOM_PREF_length_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "length_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_angle_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "angle_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_len_tol_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "len_tol_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_ang_tol_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "ang_tol_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_weight_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "weight_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_density_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "density_precision" );
+ prec[ii++] = addPreference( tr( "GEOM_PREF_parametric_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "parametric_precision" );
+ prec[ii ] = addPreference( tr( "GEOM_PREF_param_tol_precision" ), precGroup,
+ LightApp_Preferences::IntSpin, "Geometry", "param_tol_precision" );
+
+ // Set property for precision value for spinboxes
+ for ( ii = 0; ii < nbQuantities; ii++ ){
+ setPreferenceProperty( prec[ii], "min", -14 );
+ setPreferenceProperty( prec[ii], "max", 14 );
+ setPreferenceProperty( prec[ii], "precision", 2 );
+ }
- setPreferenceProperty( genGroup, "columns", 1 );
+ int VertexGroup = addPreference( tr( "PREF_GROUP_VERTEX" ), tabId );
+ setPreferenceProperty( VertexGroup, "columns", 2 );
- setPreferenceProperty( step, "min", 0.001 );
- setPreferenceProperty( step, "max", 10000 );
- setPreferenceProperty( step, "precision", 3 );
+ int typeOfMarker = addPreference( tr( "PREF_TYPE_OF_MARKER" ), VertexGroup,
+ LightApp_Preferences::Selector, "Geometry", "type_of_marker" );
+
+ int markerScale = addPreference( tr( "PREF_MARKER_SCALE" ), VertexGroup,
+ LightApp_Preferences::Selector, "Geometry", "marker_scale" );
// Set property for default display mode
QStringList aModesList;
aModesList.append( tr("MEN_WIREFRAME") );
aModesList.append( tr("MEN_SHADING") );
-
- QValueList<QVariant> anIndexesList;
+
+ QList<QVariant> anIndexesList;
anIndexesList.append(0);
anIndexesList.append(1);
-
+
setPreferenceProperty( dispmode, "strings", aModesList );
setPreferenceProperty( dispmode, "indexes", anIndexesList );
+
+ // Set property for step value for spinboxes
+ setPreferenceProperty( step, "min", 1 );
+ setPreferenceProperty( step, "max", 10000 );
+ setPreferenceProperty( step, "precision", 3 );
+
+ // Set property for deflection value for spinboxes
+ setPreferenceProperty( defl, "min", DEFLECTION_MIN );
+ setPreferenceProperty( defl, "max", 1.0 );
+ setPreferenceProperty( defl, "step", 1.0e-04 );
+ setPreferenceProperty( defl, "precision", 6 );
+
+ // Set property vertex marker type
+ QList<QVariant> aMarkerTypeIndicesList;
+ QList<QVariant> aMarkerTypeIconsList;
+
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ for ( int i = GEOM::MT_POINT; i < GEOM::MT_USER; i++ ) {
+ QString icoFile = QString( "ICON_VERTEX_MARKER_%1" ).arg( i );
+ QPixmap pixmap = resMgr->loadPixmap( "GEOM", tr( qPrintable( icoFile ) ) );
+ aMarkerTypeIndicesList << (i-1);
+ aMarkerTypeIconsList << pixmap;
+ }
+
+ setPreferenceProperty( typeOfMarker, "indexes", aMarkerTypeIndicesList );
+ setPreferenceProperty( typeOfMarker, "icons", aMarkerTypeIconsList );
+
+ // Set property for vertex marker scale
+ QList<QVariant> aMarkerScaleIndicesList;
+ QStringList aMarkerScaleValuesList;
+
+ for ( int iii = GEOM::MS_10; iii <= GEOM::MS_70; iii++ ) {
+ aMarkerScaleIndicesList << iii;
+ aMarkerScaleValuesList << QString::number( (iii-(int)GEOM::MS_10)*0.5 + 1.0 );
+ }
+
+ setPreferenceProperty( markerScale, "strings", aMarkerScaleValuesList );
+ setPreferenceProperty( markerScale, "indexes", aMarkerScaleIndicesList );
+
+ int originGroup = addPreference( tr( "PREF_GROUP_ORIGIN_AND_BASE_VECTORS" ), tabId );
+ setPreferenceProperty( originGroup, "columns", 2 );
+
+ int baseVectorsLength = addPreference( tr( "PREF_BASE_VECTORS_LENGTH" ), originGroup,
+ LightApp_Preferences::DblSpin, "Geometry", "base_vectors_length" );
+ setPreferenceProperty( baseVectorsLength, "min", 0.01 );
+ setPreferenceProperty( baseVectorsLength, "max", 1000 );
+
+ addPreference( tr( "PREF_AUTO_CREATE" ), originGroup,
+ LightApp_Preferences::Bool, "Geometry", "auto_create_base_objects" );
+
}
void GeometryGUI::preferencesChanged( const QString& section, const QString& param )
{
+ if (section == "Geometry") {
+ SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+ if (param == QString("SettingsGeomStep")) {
+ double spin_step = aResourceMgr->doubleValue(section, param, 100.);
+ EmitSignalDefaultStepValueChanged(spin_step);
+ }
+ }
+}
+
+LightApp_Displayer* GeometryGUI::displayer()
+{
+ if( !myDisplayer )
+ myDisplayer = new GEOM_Displayer( dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
+ return myDisplayer;
+}
+
+void GeometryGUI::setLocalSelectionMode(const int mode)
+{
+ myLocalSelectionMode = mode;
+}
+int GeometryGUI::getLocalSelectionMode() const
+{
+ return myLocalSelectionMode;
+}
+
+const char gSeparator = '_'; // character used to separate parameter names
+const char gDigitsSep = ':'; // character used to separate numeric parameter values (color = r:g:b)
+
+/*!
+ * \brief Store visual parameters
+ *
+ * This method is called just before the study document is saved.
+ * Store visual parameters in AttributeParameter attribue(s)
+ */
+void GeometryGUI::storeVisualParameters (int savePoint)
+{
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
+ if (!appStudy || !appStudy->studyDS())
+ return;
+ _PTR(Study) studyDS = appStudy->studyDS();
+
+ // componentName is used for encoding of entries when storing them in IParameters
+ std::string componentName = myComponentGeom->ComponentDataType();
+ //_PTR(SComponent) aSComponent = studyDS->FindComponent("GEOM");
+ //if (!aSComponent) return;
+
+ // IParameters
+ _PTR(AttributeParameter) ap = studyDS->GetModuleParameters("Interface Applicative",
+ componentName.c_str(),
+ savePoint);
+ _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
+
+ QList<SUIT_ViewManager*> lst;
+ QList<SUIT_ViewManager*>::Iterator it;
+
+ // main cycle to store parameters of displayed objects
+ lst.clear();
+ getApp()->viewManagers(lst);
+ for (it = lst.begin(); it != lst.end(); it++) {
+ SUIT_ViewManager* vman = *it;
+ QString vType = vman->getType();
+ int aMgrId = vman->getGlobalId();
+ // saving VTK actors properties
+ QVector<SUIT_ViewWindow*> views = vman->getViews();
+ for (int i = 0, iEnd = vman->getViewsCount(); i < iEnd; i++) {
+ const ObjMap anObjects = appStudy->getObjectMap(aMgrId);
+ ObjMap::ConstIterator o_it = anObjects.begin();
+ for( ;o_it != anObjects.end(); o_it++ ) {
+ const PropMap aProps = o_it.value();
+
+ //Check that object exists in the study
+ _PTR(SObject) obj( studyDS->FindObjectID( o_it.key().toLatin1().data() ) );
+ if ( !obj )
+ continue;
+ // entry is "encoded" = it does NOT contain component adress, since it is a
+ // subject to change on next component loading
+
+ std::string entry = ip->encodeEntry(o_it.key().toLatin1().data(), componentName);
+
+ _PTR(GenericAttribute) anAttr;
+ if( !obj->FindAttribute(anAttr, "AttributeIOR"))
+ continue;
+
+ std::string param, occParam = vType.toLatin1().data();
+ occParam += NAME_SEPARATOR;
+ occParam += QString::number(aMgrId).toLatin1().data();
+ occParam += NAME_SEPARATOR;
+
+ param = occParam + VISIBILITY_PROP;
+ ip->setParameter(entry, param, aProps.value(VISIBILITY_PROP).toInt() == 1 ? "On" : "Off");
+
+ param = occParam + DISPLAY_MODE_PROP;
+
+ ip->setParameter(entry, param, QString::number(aProps.value(DISPLAY_MODE_PROP).toInt()).toLatin1().data());
+
+ QColor c = aProps.value(COLOR_PROP).value<QColor>();
+ QString colorStr = QString::number(c.red()/255.);
+ colorStr += DIGIT_SEPARATOR; colorStr += QString::number(c.green()/255.);
+ colorStr += DIGIT_SEPARATOR; colorStr += QString::number(c.blue()/255.);
+ param = occParam + COLOR_PROP;
+ ip->setParameter(entry, param, colorStr.toLatin1().data());
+
+ if(vType == SVTK_Viewer::Type()) {
+ param = occParam + OPACITY_PROP;
+ ip->setParameter(entry, param, QString::number(1. - aProps.value(TRANSPARENCY_PROP).toDouble()).toLatin1().data());
+ } else if (vType == SOCC_Viewer::Type()) {
+ param = occParam + TRANSPARENCY_PROP;
+ ip->setParameter(entry, param, QString::number(aProps.value(TRANSPARENCY_PROP).toDouble()).toLatin1().data());
+ }
+
+ param = occParam + ISOS_PROP;
+ ip->setParameter(entry, param, aProps.value(ISOS_PROP).toString().toLatin1().data());
+
+ param = occParam + VECTOR_MODE_PROP;
+ ip->setParameter(entry, param, QString::number(aProps.value(VECTOR_MODE_PROP).toInt()).toLatin1().data());
+
+ param = occParam + DEFLECTION_COEFF_PROP;
+ ip->setParameter(entry, param, QString::number(aProps.value(DEFLECTION_COEFF_PROP).toDouble()).toLatin1().data());
+
+ param = occParam + DEFLECTION_COEFF_PROP;
+ ip->setParameter(entry, param, QString::number(aProps.value(DEFLECTION_COEFF_PROP).toDouble()).toLatin1().data());
+
+ //Marker type of the vertex - ONLY for the "Vertex" and "Compound of the Vertex"
+ if(aProps.contains(MARKER_TYPE_PROP)) {
+ param = occParam + MARKER_TYPE_PROP;
+ ip->setParameter(entry, param, aProps.value(MARKER_TYPE_PROP).toString().toLatin1().data());
+ }
+
+ } // object iterator
+ } // for (views)
+ } // for (viewManagers)
+}
+/*!
+ * \brief Restore visual parameters
+ *
+ * This method is called after the study document is opened.
+ * Restore visual parameters from AttributeParameter attribue(s)
+ */
+void GeometryGUI::restoreVisualParameters (int savePoint)
+{
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
+ if (!appStudy || !appStudy->studyDS())
+ return;
+ _PTR(Study) studyDS = appStudy->studyDS();
+
+ // componentName is used for encoding of entries when storing them in IParameters
+ std::string componentName = myComponentGeom->ComponentDataType();
+ //_PTR(SComponent) aSComponent = studyDS->FindComponent("GEOM");
+ //if (!aSComponent) return;
+
+ // IParameters
+ _PTR(AttributeParameter) ap = studyDS->GetModuleParameters("Interface Applicative",
+ componentName.c_str(),
+ savePoint);
+ _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
+
+ std::vector<std::string> entries = ip->getEntries();
+
+ for (std::vector<std::string>::iterator entIt = entries.begin(); entIt != entries.end(); ++entIt)
+ {
+ // entry is a normal entry - it should be "decoded" (setting base adress of component)
+ QString entry (ip->decodeEntry(*entIt).c_str());
+
+ // Check that the entry corresponds to a real object in the Study
+ // as the object may be deleted or modified after the visual state is saved.
+ _PTR(SObject) so = studyDS->FindObjectID(entry.toLatin1().data());
+ if (!so) continue; //Skip the not existent entry
+
+ std::vector<std::string> paramNames = ip->getAllParameterNames( *entIt );
+ std::vector<std::string> paramValues = ip->getAllParameterValues( *entIt );
+
+ std::vector<std::string>::iterator namesIt = paramNames.begin();
+ std::vector<std::string>::iterator valuesIt = paramValues.begin();
+
+ // actors are stored in a map after displaying of them for
+ // quicker access in the future: map < viewID to actor >
+ NCollection_DataMap<int, GEOM_Actor* > vtkActors;
+ NCollection_DataMap<int, Handle(GEOM_AISShape)> occActors;
+
+ QString viewerTypStr;
+ QString viewIndexStr;
+ int viewIndex;
+ QVector<PropMap> aListOfMap;
+
+ for (; namesIt != paramNames.end(); ++namesIt, ++valuesIt)
+ {
+ // visual parameters are stored in strings as follows: ViewerType_ViewIndex_ParamName.
+ // '_' is used as separator and should not be used in viewer type or parameter names.
+ QStringList lst = QString((*namesIt).c_str()).split(NAME_SEPARATOR, QString::SkipEmptyParts);
+ if (lst.size() != 3)
+ continue;
+
+ viewerTypStr = lst[0];
+ viewIndexStr = lst[1];
+ QString paramNameStr = lst[2];
+
+ bool ok;
+ viewIndex = viewIndexStr.toUInt(&ok);
+ if (!ok) // bad conversion of view index to integer
+ continue;
+
+ if((viewIndex + 1) > aListOfMap.count()) {
+ aListOfMap.resize(viewIndex + 1);
+ }
+
+ QString val((*valuesIt).c_str());
+ if(paramNameStr == VISIBILITY_PROP){
+ aListOfMap[viewIndex].insert(VISIBILITY_PROP, val == "On" ? 1 : 0);
+
+ } else if(paramNameStr == OPACITY_PROP) {
+ aListOfMap[viewIndex].insert(TRANSPARENCY_PROP, 1. - val.toDouble());
+
+ } else if(paramNameStr == TRANSPARENCY_PROP) {
+ aListOfMap[viewIndex].insert(TRANSPARENCY_PROP, val.toDouble());
+
+ } else if(paramNameStr == DISPLAY_MODE_PROP) {
+ aListOfMap[viewIndex].insert( DISPLAY_MODE_PROP, val.toInt());
+
+ } else if(paramNameStr == ISOS_PROP) {
+ aListOfMap[viewIndex].insert( ISOS_PROP, val);
+
+ } else if(paramNameStr == COLOR_PROP) {
+ QStringList rgb = val.split(DIGIT_SEPARATOR);
+ if(rgb.count() == 3) {
+ QColor c(int(rgb[0].toDouble()*255), int(rgb[1].toDouble()*255), int(rgb[2].toDouble()*255));
+ aListOfMap[viewIndex].insert( COLOR_PROP, c);
+ }
+ } else if(paramNameStr == VECTOR_MODE_PROP) {
+ aListOfMap[viewIndex].insert( VECTOR_MODE_PROP, val.toInt());
+
+ } else if(paramNameStr == DEFLECTION_COEFF_PROP) {
+ aListOfMap[viewIndex].insert( DEFLECTION_COEFF_PROP, val.toDouble());
+ } else if(paramNameStr == MARKER_TYPE_PROP) {
+ aListOfMap[viewIndex].insert( MARKER_TYPE_PROP, val);
+ }
+
+ } // for names/parameters iterator
+
+ QList<SUIT_ViewManager*> lst = getApp()->viewManagers();
+
+ for (int index = 0 ; index < aListOfMap.count(); index++) {
+
+ appStudy->setObjectPropMap(index, entry, aListOfMap[index]);
+
+ QColor c = aListOfMap[index].value(COLOR_PROP).value<QColor>();
+ //Get Visibility property of the current PropMap
+ if(aListOfMap[index].value(VISIBILITY_PROP) == 1) {
+ SUIT_ViewManager* vman = lst.at(index);
+ SUIT_ViewModel* vmodel = vman->getViewModel();
+ displayer()->Display(entry, true, dynamic_cast<SALOME_View*>(vmodel));
+ }
+ }
+
+ } // for entries iterator
+
+ // update all VTK and OCC views
+ QList<SUIT_ViewManager*> lst;
+ getApp()->viewManagers(lst);
+ for (QList<SUIT_ViewManager*>::Iterator it = lst.begin(); it != lst.end(); it++) {
+ SUIT_ViewModel* vmodel = (*it)->getViewModel();
+ if (!vmodel)
+ continue;
+ if (vmodel->getType() == SVTK_Viewer::Type()) {
+ SVTK_ViewWindow* vtkView = (SVTK_ViewWindow*) (*it)->getActiveView();
+ vtkView->getRenderer()->ResetCameraClippingRange();
+ vtkView->Repaint();
+ }
+ else if (vmodel->getType() == SOCC_Viewer::Type()) {
+ //SOCC_ViewWindow* occView = (SOCC_ViewWindow*) (*it)->getActiveView();
+ SALOME_View* occVMod = dynamic_cast<SALOME_View*>(vmodel);
+ if (occVMod)
+ occVMod->Repaint();
+ }
+ }
+}
+
+void GeometryGUI::onViewAboutToShow()
+{
+ SUIT_ViewWindow* window = application()->desktop()->activeWindow();
+ QAction* a = action( GEOMOp::OpSwitchVectors );
+ if ( window ) {
+ a->setEnabled(true);
+ bool vmode = window->getCustomData("VectorsMode").toBool();
+ a->setText ( vmode == 1 ? tr( "MEN_VECTOR_MODE_OFF" ) : tr("MEN_VECTOR_MODE_ON") );
+ } else {
+ a->setText ( tr("MEN_VECTOR_MODE_ON") );
+ a->setEnabled(false);
+ }
}