]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Improve actions management
authorvsr <vsr@opencascade.com>
Sun, 28 Feb 2010 19:53:08 +0000 (19:53 +0000)
committervsr <vsr@opencascade.com>
Sun, 28 Feb 2010 19:53:08 +0000 (19:53 +0000)
Remove deprecated code

13 files changed:
src/BasicGUI/BasicGUI.cxx
src/BasicGUI/Makefile.am
src/BlocksGUI/BlocksGUI.cxx
src/BooleanGUI/BooleanGUI.cxx
src/BuildGUI/BuildGUI.cxx
src/DisplayGUI/DisplayGUI.cxx
src/EntityGUI/EntityGUI.cxx
src/GEOMGUI/GEOM_images.ts
src/GEOMGUI/GEOM_msg_en.ts
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI.h
src/GEOMGUI/GeometryGUI_Operations.h [new file with mode: 0644]
src/GEOMGUI/Makefile.am

index ab7c09429e7e1326384422543996fb2807679bb8..dc1733b3f7df0c29a9ad115f9745b8d8e461cd9d 100644 (file)
 #include "BasicGUI_CurveDlg.h"        // Method CURVE
 #include "BasicGUI_VectorDlg.h"       // Method VECTOR
 #include "BasicGUI_PlaneDlg.h"        // Method PLANE
-#include "BasicGUI_WorkingPlaneDlg.h" // Method WORKING PLANE
-#include "BasicGUI_MarkerDlg.h"       // Method REPAIR
+#include "BasicGUI_MarkerDlg.h"       // Method LOCAL COORDINATE SYSTEM
 
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 
 #include <SUIT_Session.h>
 #include <SUIT_Desktop.h>
@@ -81,34 +81,31 @@ bool BasicGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
   QDialog* aDlg = NULL;
 
   switch ( theCommandID ) {
-  case 4011: // POINT
+  case GEOMOp::OpPoint:    // POINT
     aDlg = new BasicGUI_PointDlg( getGeometryGUI(), parent ); 
     break;
-  case 4012:  // LINE
+  case GEOMOp::OpLine:     // LINE
     aDlg = new BasicGUI_LineDlg( getGeometryGUI(), parent );
     break;
-  case 4013:  // CIRCLE
+  case GEOMOp::OpCircle:   // CIRCLE
     aDlg = new BasicGUI_CircleDlg( getGeometryGUI(), parent );
     break;
-  case 4014:  // ELLIPSE
+  case GEOMOp::OpEllipse:  // ELLIPSE
     aDlg = new BasicGUI_EllipseDlg( getGeometryGUI(), parent );
     break;
-  case 4015:  // ARC
+  case GEOMOp::OpArc:      // ARC
     aDlg = new BasicGUI_ArcDlg( getGeometryGUI(), parent );
     break ;
-  case 4016: // VECTOR
+  case GEOMOp::OpVector:   // VECTOR
     aDlg = new BasicGUI_VectorDlg( getGeometryGUI(), parent );
     break;
-  case 4017: // PLANE
+  case GEOMOp::OpPlane:    // PLANE
     aDlg = new BasicGUI_PlaneDlg( getGeometryGUI(), parent );
     break;
-/*  case 4018: // WORKING PLANE
-    aDlg = new BasicGUI_WorkingPlaneDlg( getGeometryGUI(), parent );
-    break;*/ // DEPRECATED!
-  case 4019: // CURVE
+  case GEOMOp::OpCurve:    // CURVE
     aDlg = new BasicGUI_CurveDlg( getGeometryGUI(), parent );
     break;
-  case 4020: // REPAIR
+  case GEOMOp::OpLCS:      // LOCAL COORDINATE SYSTEM
     aDlg = new BasicGUI_MarkerDlg( getGeometryGUI(), parent );
     break;      
   default:
index e8e4a0733f59fba21795b872bf0e9437c94eaf34..f1413690249c2686ec7f2539b6511f584f90d8dc 100644 (file)
@@ -38,8 +38,10 @@ salomeinclude_HEADERS =                      \
        BasicGUI_MarkerDlg.h            \
        BasicGUI_PlaneDlg.h             \
        BasicGUI_PointDlg.h             \
-       BasicGUI_VectorDlg.h            \
-       BasicGUI_WorkingPlaneDlg.h
+       BasicGUI_VectorDlg.h
+#
+# OBSOLETE: BasicGUI_WorkingPlaneDlg.h
+#
 
 # Libraries targets
 
@@ -55,9 +57,11 @@ dist_libBasicGUI_la_SOURCES =                \
        BasicGUI_ArcDlg.cxx             \
        BasicGUI_VectorDlg.cxx          \
        BasicGUI_PlaneDlg.cxx           \
-       BasicGUI_WorkingPlaneDlg.cxx    \
        BasicGUI_CurveDlg.cxx           \
        BasicGUI_MarkerDlg.cxx
+#
+# OBSOLETE: BasicGUI_WorkingPlaneDlg.cxx
+#
 
 MOC_FILES =                                    \
        BasicGUI_PointDlg_moc.cxx               \
@@ -67,9 +71,11 @@ MOC_FILES =                                  \
        BasicGUI_ArcDlg_moc.cxx                 \
        BasicGUI_VectorDlg_moc.cxx              \
        BasicGUI_PlaneDlg_moc.cxx               \
-       BasicGUI_WorkingPlaneDlg_moc.cxx        \
        BasicGUI_CurveDlg_moc.cxx               \
        BasicGUI_MarkerDlg_moc.cxx
+#
+# OBSOLETE: BasicGUI_WorkingPlaneDlg_moc.cxx
+#
 
 nodist_libBasicGUI_la_SOURCES =                        \
        $(MOC_FILES)
index 547510dc8a876e715f9f86e4ea5f5dcb56e7f09f..e01e2e259e0c03f23c4e83301e4bdbf527c9bcb1 100644 (file)
@@ -32,6 +32,7 @@
 #include "BlocksGUI_PropagateDlg.h"
 
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 
 #include <SUIT_Desktop.h>
 #include <SUIT_MessageBox.h>
@@ -66,11 +67,11 @@ bool BlocksGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
   QDialog* aDlg = 0;
 
   switch ( theCommandID ) {
-  case 9999:  aDlg = new BlocksGUI_BlockDlg    ( getGeometryGUI(), parent ); break;
-  case 9998:  aDlg = new BlocksGUI_TrsfDlg     ( getGeometryGUI(), parent ); break;
-  case 9997:  aDlg = new BlocksGUI_QuadFaceDlg ( getGeometryGUI(), parent ); break;
-  case 9995:  aDlg = new BlocksGUI_ExplodeDlg  ( getGeometryGUI(), parent ); break;
-  case 99991: aDlg = new BlocksGUI_PropagateDlg( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpHexaSolid:      aDlg = new BlocksGUI_BlockDlg    ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpMultiTransform: aDlg = new BlocksGUI_TrsfDlg     ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpQuadFace:       aDlg = new BlocksGUI_QuadFaceDlg ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpExplodeBlock:   aDlg = new BlocksGUI_ExplodeDlg  ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpPropagate:      aDlg = new BlocksGUI_PropagateDlg( getGeometryGUI(), parent ); break;
   default:
     getGeometryGUI()->getApp()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
     break;
index c05c034625ef4315f491b7898e43e2830766227a..bd262932bb47e19fd873b33bba78372afadd4f0e 100644 (file)
@@ -27,6 +27,7 @@
 #include "BooleanGUI_Dialog.h"
 
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 #include <SUIT_Desktop.h>
 
 //=======================================================================
@@ -56,17 +57,19 @@ bool BooleanGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
   getGeometryGUI()->EmitSignalDeactivateDialog();
 
   int anOperation = 0;  
-  if      ( theCommandID == 5011 )
-    anOperation = FUSE;
-  else if ( theCommandID == 5012 )
-    anOperation = COMMON;
-  else if ( theCommandID == 5013 )
-    anOperation = CUT;
-  else if ( theCommandID == 5014 )
-    anOperation = SECTION;
-  else
+  switch ( theCommandID ) {
+  case GEOMOp::OpFuse:
+    anOperation = FUSE;    break;
+  case GEOMOp::OpCommon:
+    anOperation = COMMON;  break;
+  case GEOMOp::OpCut:
+    anOperation = CUT;     break;
+  case GEOMOp::OpSection:
+    anOperation = SECTION; break;
+  default:
     return false;
-
+  }
+  
   QDialog* aDlg = new BooleanGUI_Dialog( anOperation, getGeometryGUI(), parent );
   aDlg->show();
 
index 643cbf11af03422f56f94c78a93651122ae122f0..768c0eacd89d5138c139bc6b7556d893062462b1 100644 (file)
@@ -36,6 +36,7 @@
 #include "BuildGUI_CompoundDlg.h"   // Method COMPOUND
 
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 
 //=======================================================================
 // function : BuildGUI()
@@ -66,12 +67,12 @@ bool BuildGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
   QDialog* aDlg = 0;
 
   switch ( theCommandID ) {
-  case 4081: aDlg = new BuildGUI_EdgeDlg    ( getGeometryGUI(), parent ); break;
-  case 4082: aDlg = new BuildGUI_WireDlg    ( getGeometryGUI(), parent ); break;
-  case 4083: aDlg = new BuildGUI_FaceDlg    ( getGeometryGUI(), parent ); break;
-  case 4084: aDlg = new BuildGUI_ShellDlg   ( getGeometryGUI(), parent ); break;
-  case 4085: aDlg = new BuildGUI_SolidDlg   ( getGeometryGUI(), parent ); break;
-  case 4086: aDlg = new BuildGUI_CompoundDlg( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpEdge:     aDlg = new BuildGUI_EdgeDlg    ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpWire:     aDlg = new BuildGUI_WireDlg    ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpFace:     aDlg = new BuildGUI_FaceDlg    ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpShell:    aDlg = new BuildGUI_ShellDlg   ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpSolid:    aDlg = new BuildGUI_SolidDlg   ( getGeometryGUI(), parent ); break;
+  case GEOMOp::OpCompound: aDlg = new BuildGUI_CompoundDlg( getGeometryGUI(), parent ); break;
   default: 
     getGeometryGUI()->getApp()->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) ); 
     break;
index c3238572ba67485c1aeabfd4afa9deefb67ab6eb..3cca4024437b92bbf25f73f138a83242d3c019b6 100644 (file)
@@ -25,6 +25,7 @@
 //
 #include "DisplayGUI.h"
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 #include <GEOM_Displayer.h>
 #include <GEOM_AISShape.hxx>
 #include <GEOM_Actor.h>
@@ -89,73 +90,49 @@ bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
   SALOME_ListIO selected;
   Sel->selectedObjects( selected );
 
-  switch (theCommandID) {
-  case 211: // MENU VIEW - WIREFRAME/SHADING
-    {
-      InvertDisplayMode();
-      int newMode = GetDisplayMode();
-      getGeometryGUI()->action( 211 )->setText
-        ( newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") );
-      getGeometryGUI()->menuMgr()->update();
-      break;
-    }
-  case 212: // MENU VIEW - DISPLAY ALL
-    {
-      getGeometryGUI()->EmitSignalDeactivateDialog();
-      DisplayAll();
-      break;
-    }
-  case 213: // MENU VIEW - DISPLAY ONLY
-    {
-      getGeometryGUI()->EmitSignalDeactivateDialog();
-      DisplayOnly();
-      break;
-    }
-  case 214: // MENU VIEW - ERASE ALL
-    {
-      EraseAll();
-      break;
-    }
-  case 215: // MENU VIEW - ERASE
-    {
-      Erase();
-      break;
-    }
-  case 216: // MENU VIEW - DISPLAY
-    {
-      getGeometryGUI()->EmitSignalDeactivateDialog();
-      Display();
-      break;
-    }
-  case 218: // MENU VIEW - VECTORS MODE
-    {
-      bool mode = GetVectorMode();
-      SetVectorMode(!mode);
-      getGeometryGUI()->action( 218 )->setText
-      ( mode == false ? tr( "MEN_VECTOR_MODE_OFF" ) : tr("MEN_VECTOR_MODE_ON") );
-      getGeometryGUI()->menuMgr()->update();
-      break;
-    }
-  case 80311: // POPUP VIEWER - WIREFRAME
-    {
-      ChangeDisplayMode( 0 );
-      break;
-    }
-  case 80312: // POPUP VIEWER - SHADING
-    {
-      ChangeDisplayMode( 1 );
-      break;
-    }
-  case 80313: // POPUP VIEWER - VECTORS
-    {
-      ChangeDisplayMode( 2 );
-      break;
-    }
+  switch ( theCommandID ) {
+  case GEOMOp::OpDisplayMode:    // MENU VIEW - DISPLAY MODE - WIREFRAME/SHADING
+    InvertDisplayMode();
+    getGeometryGUI()->action( GEOMOp::OpDisplayMode )->setText
+      ( GetDisplayMode() == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") );
+    getGeometryGUI()->menuMgr()->update();
+    break;
+  case GEOMOp::OpShowAll:        // MENU VIEW - SHOW ALL
+    getGeometryGUI()->EmitSignalDeactivateDialog();
+    DisplayAll();
+    break;
+  case GEOMOp::OpShowOnly:       // POPUP MENU - SHOW ONLY
+    getGeometryGUI()->EmitSignalDeactivateDialog();
+    DisplayOnly();
+    break;
+  case GEOMOp::OpHideAll:        // MENU VIEW - HIDE ALL
+    EraseAll();
+    break;
+  case GEOMOp::OpHide:           // POPUP MENU - HIDE
+    Erase();
+    break;
+  case GEOMOp::OpShow:           // POPUP MENU - SHOW
+    getGeometryGUI()->EmitSignalDeactivateDialog();
+    Display();
+    break;
+  case GEOMOp::OpSwitchVectors:  // MENU VIEW - DISPLAY MODE - SHOW EDGE DIRECTION
+    SetVectorMode(!GetVectorMode());
+    getGeometryGUI()->action( GEOMOp::OpSwitchVectors )->setText
+      ( GetVectorMode() ? tr("MEN_VECTOR_MODE_ON") : tr( "MEN_VECTOR_MODE_OFF" ) );
+    getGeometryGUI()->menuMgr()->update();
+    break;
+  case GEOMOp::OpWireframe:      // POPUP MENU - DISPLAY MODE - WIREFRAME
+    ChangeDisplayMode( 0 );
+    break;
+  case GEOMOp::OpShading:        // POPUP MENU - DISPLAY MODE - SHADING
+    ChangeDisplayMode( 1 );
+    break;
+  case GEOMOp::OpVectors:        // POPUP MENU - DISPLAY MODE - SHOW EDGE DIRECTION
+    ChangeDisplayMode( 2 );
+    break;
   default:
-    {
-      app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
-      break;
-    }
+    app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
+    break;
   }
   Sel->setSelectedObjects( selected );
   return true;
index 5a03fc00fb2651cb5837508f53ac59763b24aa4b..4a34f70d98512ad52b338a9bfc0bb5687c298a9a 100644 (file)
@@ -26,6 +26,7 @@
 #include "EntityGUI.h"
 
 #include <GeometryGUI.h>
+#include "GeometryGUI_Operations.h"
 
 #include <SUIT_Desktop.h>
 #include <SUIT_ViewWindow.h>
@@ -72,14 +73,14 @@ bool EntityGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
   QDialog* aDlg = NULL;
 
   switch ( theCommandID ) {
-  case 404: // SKETCHER
+  case GEOMOp::Op2dSketcher: // 2D SKETCHER
     getGeometryGUI()->ActiveWorkingPlane();
     aDlg = new EntityGUI_SketcherDlg( getGeometryGUI(), parent );
     break;
-  case 405: // 3D SKETCHER
+  case GEOMOp::Op3dSketcher: // 3D SKETCHER
     aDlg = new EntityGUI_3DSketcherDlg( getGeometryGUI(), parent );
     break;
-  case 407: // EXPLODE : use ic
+  case GEOMOp::OpExplode:    // EXPLODE
     aDlg = new EntityGUI_SubShapeDlg( getGeometryGUI(), parent );
     break;
   default:
index 94257fbd4c9034fbc647a3e8c6dd97e2d544ada8..89f126b3f1aad62d508502b8352010e433bc1952 100644 (file)
             <source>ICO_FACE</source>
             <translation>build_face.png</translation>
         </message>
+        <message>
+            <source>ICO_RECTANGLE</source>
+            <translation>build_face.png</translation>
+        </message>
         <message>
             <source>ICO_FACE_SEL_ONLY</source>
             <translation>build_face.png</translation>
index 3bf87669adb023687392d7217da89f117dc6786d..8ee02cf9321109b2e2901567aaf3966387473319 100644 (file)
@@ -497,7 +497,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
        <message>
             <source>GEOM_DISK_TITLE</source>
-            <translation>Create A Disk</translation>
+            <translation>Disk Construction</translation>
         </message>
         <message>
             <source>GEOM_DIMENSIONS</source>
@@ -628,7 +628,11 @@ Please, select face, shell or solid and try again</translation>
             <translation>Create A Face</translation>
         </message>
         <message>
-            <source>GEOM_FILLET</source>
+            <source>GEOM_RECTANGLE_TITLE</source>
+            <translation>Face Construction</translation>
+        </message>
+        <message>
+          <source>GEOM_FILLET</source>
             <translation>Fillet</translation>
         </message>
        <message>
@@ -1585,7 +1589,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>GEOM_SKETCHER_TITLE</source>
-            <translation>Sketch Construction</translation>
+            <translation>2D Sketch Construction</translation>
         </message>
        <message>
             <source>GEOM_3DSKETCHER_TITLE</source>
@@ -2143,6 +2147,10 @@ Please, select face, shell or solid and try again</translation>
             <source>MEN_CYLINDER</source>
             <translation>Cylinder</translation>
         </message>
+        <message>
+            <source>MEN_RECTANGLE</source>
+            <translation>Face</translation>
+        </message>
         <message>
             <source>MEN_DELETE</source>
             <translation>Delete</translation>
@@ -2225,7 +2233,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>MEN_FILLET</source>
-            <translation>Fillet</translation>
+            <translation>Fillet 3D</translation>
         </message>
        <message>
             <source>MEN_FILLET_1D</source>
@@ -2309,7 +2317,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>MEN_MODIFY_LOCATION</source>
-            <translation>Modify the Location</translation>
+            <translation>Modify Location</translation>
         </message>
         <message>
             <source>MEN_MUL_ROTATION</source>
@@ -2341,7 +2349,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>MEN_PIPE</source>
-            <translation>Extrusion Along Path</translation>
+            <translation>Extrusion Along Path</translation>
         </message>
         <message>
             <source>MEN_PLANE</source>
@@ -2473,7 +2481,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>MEN_SKETCH</source>
-            <translation>Sketch</translation>
+            <translation>2D Sketch</translation>
         </message>
        <message>
             <source>MEN_3DSKETCH</source>
@@ -2665,7 +2673,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_ARCHIMEDE</source>
-            <translation>Archimede</translation>
+            <translation>Archimede operation</translation>
         </message>
         <message>
             <source>STB_BASIC_PROPS</source>
@@ -2681,7 +2689,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_CHAMFER</source>
-            <translation>Chamfer</translation>
+            <translation>Create a chamfer</translation>
         </message>
         <message>
             <source>STB_CHANGE_ORIENTATION</source>
@@ -2747,6 +2755,10 @@ Please, select face, shell or solid and try again</translation>
             <source>STB_CYLINDER</source>
             <translation>Create a cylinder</translation>
         </message>
+        <message>
+            <source>STB_RECTANGLE</source>
+            <translation>Create rectangular face</translation>
+        </message>
         <message>
             <source>STB_DELETE</source>
             <translation>Delete object</translation>
@@ -2813,7 +2825,15 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_FILLET</source>
-            <translation>Fillet</translation>
+            <translation>Create 3D fillet</translation>
+        </message>
+        <message>
+            <source>STB_FILLET_1D</source>
+            <translation>Create 1D fillet</translation>
+        </message>
+        <message>
+            <source>STB_FILLET_2D</source>
+            <translation>Create 2D fillet</translation>
         </message>
         <message>
             <source>STB_FILLING</source>
@@ -2873,23 +2893,23 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_MIRROR</source>
-            <translation>Mirror image</translation>
+            <translation>Mirror a shape</translation>
         </message>
         <message>
             <source>STB_MODIFY_LOCATION</source>
-            <translation>Modify the Location</translation>
+            <translation>Modify shape's location</translation>
         </message>
         <message>
             <source>STB_MUL_ROTATION</source>
-            <translation>Multi-Rotation</translation>
+            <translation>Perform multi-rotation</translation>
         </message>
         <message>
             <source>STB_MUL_TRANSFORM</source>
-            <translation>Multi-transformation</translation>
+            <translation>Perform multi-transformation</translation>
         </message>
         <message>
             <source>STB_MUL_TRANSLATION</source>
-            <translation>Multi-Translation</translation>
+            <translation>Perform multi-translation</translation>
         </message>
         <message>
             <source>STB_OFFSET</source>
@@ -2897,11 +2917,11 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_PARTITION</source>
-            <translation>Partition</translation>
+            <translation>Make a partition</translation>
         </message>
         <message>
             <source>STB_PIPE</source>
-            <translation>Create a shape by Extrusion along a path</translation>
+            <translation>Create a shape by extrusion along a path</translation>
         </message>
         <message>
             <source>STB_PLANE</source>
@@ -2973,11 +2993,11 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_ROTATION</source>
-            <translation>Rotation</translation>
+            <translation>Rotate a shape</translation>
         </message>
         <message>
             <source>STB_SCALE</source>
-            <translation>Scale transform</translation>
+            <translation>Scale a shape</translation>
         </message>
         <message>
             <source>STB_SECTION</source>
@@ -3013,7 +3033,11 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_SKETCH</source>
-            <translation>Sketch</translation>
+            <translation>Create 2D sketch</translation>
+        </message>
+        <message>
+            <source>STB_3DSKETCH</source>
+            <translation>Create 3D sketch</translation>
         </message>
         <message>
             <source>STB_SOLID</source>
@@ -3053,7 +3077,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>STB_TRANSLATION</source>
-            <translation>Translation</translation>
+            <translation>Translate shape</translation>
         </message>
         <message>
             <source>STB_VECTOR</source>
@@ -3163,6 +3187,14 @@ Please, select face, shell or solid and try again</translation>
             <source>TOOL_TRANSFORMATION</source>
             <translation>Transformation</translation>
         </message>
+        <message>
+            <source>TOOL_BUILD</source>
+            <translation>Build</translation>
+        </message>
+        <message>
+            <source>TOOL_OPERATIONS</source>
+            <translation>Operations</translation>
+        </message>
         <message>
             <source>TOP_ARC</source>
             <translation>Create an arc</translation>
@@ -3229,7 +3261,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_COMPOUND</source>
-            <translation>Build compound</translation>
+            <translation>Build compound</translation>
         </message>
         <message>
             <source>TOP_CONE</source>
@@ -3251,9 +3283,13 @@ Please, select face, shell or solid and try again</translation>
             <source>TOP_DELETE</source>
             <translation>Delete object</translation>
         </message>
+        <message>
+            <source>TOP_RECTANGLE</source>
+            <translation>Create rectangular face</translation>
+        </message>
        <message>
             <source>TOP_DISK</source>
-            <translation>Build a Disk</translation>
+            <translation>Create a disk</translation>
         </message>
         <message>
             <source>TOP_DISPLAY</source>
@@ -3269,7 +3305,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_EDGE</source>
-            <translation>Build an edge</translation>
+            <translation>Build edge</translation>
         </message>
         <message>
             <source>TOP_ELLIPSE</source>
@@ -3301,11 +3337,19 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_FACE</source>
-            <translation>Build face</translation>
+            <translation>Build face</translation>
         </message>
         <message>
             <source>TOP_FILLET</source>
-            <translation>Fillet</translation>
+            <translation>Fillet 3D</translation>
+        </message>
+        <message>
+            <source>TOP_FILLET_1D</source>
+            <translation>Fillet 1D</translation>
+        </message>
+        <message>
+            <source>TOP_FILLET_2D</source>
+            <translation>Fillet 2D</translation>
         </message>
         <message>
             <source>TOP_FILLING</source>
@@ -3365,7 +3409,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_MODIFY_LOCATION</source>
-            <translation>Modify the Location</translation>
+            <translation>Modify location</translation>
         </message>
         <message>
             <source>TOP_MUL_ROTATION</source>
@@ -3389,7 +3433,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_PIPE</source>
-            <translation>Extrusion along path</translation>
+            <translation>Extrusion along path</translation>
         </message>
         <message>
             <source>TOP_PLANE</source>
@@ -3489,15 +3533,19 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_SHELL</source>
-            <translation>Build shell</translation>
+            <translation>Build shell</translation>
         </message>
         <message>
             <source>TOP_SKETCH</source>
-            <translation>Sketch</translation>
+            <translation>2D sketch</translation>
+        </message>
+        <message>
+            <source>TOP_3DSKETCH</source>
+            <translation>3D sketch</translation>
         </message>
         <message>
             <source>TOP_SOLID</source>
-            <translation>Build solid</translation>
+            <translation>Build solid</translation>
         </message>
         <message>
             <source>TOP_SPHERE</source>
@@ -3541,7 +3589,7 @@ Please, select face, shell or solid and try again</translation>
         </message>
         <message>
             <source>TOP_WIRE</source>
-            <translation>Build wire</translation>
+            <translation>Build wire</translation>
         </message>
         <message>
             <source>TOP_WORK_PLANE</source>
index d5df83adb96272710844ed8eb0bbb62a7189fea0..2de1b4dcc6af69ec81cc459573279c46959e2969 100644 (file)
@@ -24,6 +24,7 @@
 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
 //
 #include "GeometryGUI.h"
+#include "GeometryGUI_Operations.h"
 #include "GEOMGUI_OCCSelector.h"
 #include "GEOMGUI_Selection.h"
 #include "GEOM_Displayer.h"
@@ -89,8 +90,6 @@
 
 #include "GEOMImpl_Types.hxx"
 
-using namespace Qt;
-
 extern "C" {
   Standard_EXPORT CAM_Module* createModule() {
     return new GeometryGUI();
@@ -164,9 +163,7 @@ GeometryGUI::GeometryGUI() :
     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.);
@@ -200,30 +197,29 @@ GEOMGUI* GeometryGUI::getLibrary( const QString& libraryName )
 {
   if ( !myGUIMap.contains( libraryName ) ) {
     // try to load library if it is not loaded yet
-    QString libs;
 #ifndef WNT
-    libs = getenv( "LD_LIBRARY_PATH" );
-    if( !libs.isEmpty() ) {
-      QStringList dirList = libs.split( ":", QString::SkipEmptyParts ); // skip empty entries
+    QString dirs = getenv( "LD_LIBRARY_PATH" );
+    QString sep  = ":";
 #else
-    libs = getenv( "PATH" );
-    if( !libs.isEmpty() ) {
-      QStringList dirList = libs.split( ";", QString::SkipEmptyParts ); // skip empty entries
+    QString dirs = getenv( "PATH" );
+    QString sep  = ";";
 #endif
-      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( fi.fileName().toLatin1().data() );
+    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 ) {
+          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);
+            GEOMGUI* libGUI = (*func)( this );
             if ( libGUI ) {
               myGUIMap[ libraryName ] = libGUI;
               break; // found and loaded!
@@ -233,10 +229,7 @@ GEOMGUI* GeometryGUI::getLibrary( const QString& libraryName )
       }
     }
   }
-  if ( myGUIMap.contains( libraryName ) )
-    // library is successfully loaded
-    return myGUIMap[ libraryName ];
-  return 0;
+  return myGUIMap.contains( libraryName ) ? myGUIMap[ libraryName ] : 0;
 }
 
 //=======================================================================
@@ -344,8 +337,15 @@ void GeometryGUI::OnGUIEvent( int id )
   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 || id == 33 || id == 8037 || id == 8038 || id == 8039 );
-  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
@@ -354,216 +354,163 @@ void GeometryGUI::OnGUIEvent( int id )
     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 == 2171 ||  // POPUP VIEWER - SELECT ONLY - VERTEX
-      id == 2172 ||  // POPUP VIEWER - SELECT ONLY - EDGE
-      id == 2173 ||  // POPUP VIEWER - SELECT ONLY - WIRE
-      id == 2174 ||  // POPUP VIEWER - SELECT ONLY - FACE
-      id == 2175 ||  // POPUP VIEWER - SELECT ONLY - SHELL
-      id == 2176 ||  // POPUP VIEWER - SELECT ONLY - SOLID
-      id == 2177 ||  // POPUP VIEWER - SELECT ONLY - COMPOUND
-      id == 2178 ||  // POPUP VIEWER - SELECT ONLY - SELECT ALL
-      id == 31   ||  // MENU EDIT - COPY
-      id == 33   ||  // MENU EDIT - DELETE
-      id == 411  ||  // MENU SETTINGS - ADD IN STUDY
-      id == 412  ||  // MENU SETTINGS - SHADING COLOR
-      id == 5103 ||  // MENU TOOLS - CHECK GEOMETRY
-      id == 8031 ||  // POPUP VIEWER - DEFLECTION COEFFICIENT
-      id == 8032 ||  // POPUP VIEWER - COLOR
-      id == 8033 ||  // POPUP VIEWER - TRANSPARENCY
-      id == 8034 ||  // POPUP VIEWER - ISOS
-      id == 8035 ||  // POPUP VIEWER - AUTO COLOR
-      id == 8036 ||  // POPUP VIEWER - DISABLE AUTO COLOR
-      id == 8037 ||  // POPUP VIEWER - SHOW CHILDREN
-      id == 8038 ||  // POPUP VIEWER - HIDE CHILDREN
-      id == 8039 ||  // POPUP VIEWER - POINT MARKER
-      id == 804  ||  // POPUP VIEWER - ADD IN STUDY
-      id == 901  ||  // OBJECT BROWSER - RENAME
-      id == 9024 ) { // OBJECT BROWSER - OPEN
-    //cout << "id " << id << " received" << endl;
-#ifndef WNT
-        library = getLibrary( "libGEOMToolsGUI.so" );
-#else
-        library = getLibrary( "GEOMToolsGUI.dll" );
-#endif
-  }
-  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 == 218  ||  // MENU VIEW - VECTOR MODE
-           id == 80311 ||  // POPUP VIEWER - WIREFRAME
-           id == 80312 ||  // POPUP VIEWER - SHADING
-           id == 80313 ) { // POPUP VIEWER - VECTORS
-#ifndef WNT
-        library = getLibrary( "libDisplayGUI.so" );
-#else
-        library = getLibrary( "DisplayGUI.dll" );
-#endif
-  }
-  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 // DEPRECATED
-           id == 4019 ||  // MENU BASIC - CURVE
-           id == 4020 ) { // MENU BASIC - REPAIR
-#ifndef WNT
-        library = getLibrary( "libBasicGUI.so" );
-#else
-        library = getLibrary( "BasicGUI.dll" );
-#endif
-  }
-  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
-           id == 4026 ||  // MENU PRIMITIVE - FACE
-           id == 4027 ) { // MENU PRIMITIVE - DISK
-#ifndef WNT
-        library = getLibrary( "libPrimitiveGUI.so" );
-#else
-        library = getLibrary( "PrimitiveGUI.dll" );
-#endif
-  }
-  else if( id == 4031 ||  // MENU GENERATION - PRISM
-           id == 4032 ||  // MENU GENERATION - REVOLUTION
-           id == 4033 ||  // MENU GENERATION - FILLING
-           id == 4034 ) { // MENU GENERATION - PIPE
-#ifndef WNT
-        library = getLibrary( "libGenerationGUI.so" );
-#else
-        library = getLibrary( "GenerationGUI.dll" );
-#endif
-  }
-  else if( id == 404 ||   // MENU ENTITY - SKETCHER
-           id == 405 ||   // MENU ENTITY - 3D SKETCHER
-           id == 407 ) {  // MENU ENTITY - EXPLODE
-#ifndef WNT
-        library = getLibrary( "libEntityGUI.so" );
-#else
-        library = getLibrary( "EntityGUI.dll" );
-#endif
-  }
-  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
-#ifndef WNT
-        library = getLibrary( "libBuildGUI.so" );
-#else
-        library = getLibrary( "BuildGUI.dll" );
-#endif
-  }
-  else if( id == 5011 ||  // MENU BOOLEAN - FUSE
-           id == 5012 ||  // MENU BOOLEAN - COMMON
-           id == 5013 ||  // MENU BOOLEAN - CUT
-           id == 5014 ) { // MENU BOOLEAN - SECTION
-#ifndef WNT
-        library = getLibrary( "libBooleanGUI.so" );
-#else
-        library = getLibrary( "BooleanGUI.dll" );
-#endif
-  }
-  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
-           id == 5029 ) { // CONTEXT(POPUP) MENU - RELOAD_IMPORTED
-#ifndef WNT
-        library = getLibrary( "libTransformationGUI.so" );
-#else
-        library = getLibrary( "TransformationGUI.dll" );
-#endif
-  }
-  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
-           id == 508 ||   // MENU OPERATION - GET SHAPES ON SHAPE
-           id == 509 ||   // MENU OPERATION - FILLET 2D
-           id == 510 ) {  // MENU OPERATION - FILLET 1D
-#ifndef WNT
-        library = getLibrary( "libOperationGUI.so" );
-#else
-        library = getLibrary( "OperationGUI.dll" );
-#endif
-  }
-  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 MEASURE - FREE BOUNDARIES
-           id == 610 ||   // MENU MEASURE - FREE FACES
-           id == 611 ||   // MENU REPAIR - CHANGE ORIENTATION
-           id == 602 ||   // MENU REPAIR - GLUE FACES
-           id == 612 ) {  // MENU REPAIR - REMOVE EXTRA EDGES
-#ifndef WNT
-        library = getLibrary( "libRepairGUI.so" );
-#else
-        library = getLibrary( "RepairGUI.dll" );
-#endif
-  }
-  else if( id == 701   ||  // MENU MEASURE - PROPERTIES
-           id == 702   ||  // MENU MEASURE - CDG
-           id == 703   ||  // MENU MEASURE - INERTIA
-           id == 704   ||  // MENU MEASURE - NORMALE
-           id == 7041  ||  // MENU MEASURE - BOUNDING BOX
-           id == 7042  ||  // MENU MEASURE - MIN DISTANCE
-           id == 7043  ||  // MENU MEASURE - ANGLE
-           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
-#ifndef WNT
-        library = getLibrary( "libMeasureGUI.so" );
-#else
-        library = getLibrary( "MeasureGUI.dll" );
-#endif
-  }
-  else if( id == 800  ||  // MENU GROUP - CREATE
-           id == 8001 ||  // POPUP MENU - CREATE GROUP
-           id == 801 ) {  // MENU GROUP - EDIT
-#ifndef WNT
-        library = getLibrary( "libGroupGUI.so" );
-#else
-        library = getLibrary( "GroupGUI.dll" );
-#endif
+  QString libName;
+  // find corresponding GUI library
+  switch ( id ) {
+  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::OpIsos:             // POPUP MENU - 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 - REPAIR
+    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
+    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::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;
+  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
+
+  GEOMGUI* library = 0;
+  if ( !libName.isEmpty() ) {
 #ifndef WNT
-        library = getLibrary( "libBlocksGUI.so" );
+    libName = QString( "lib" ) + libName + ".so";
 #else
-        library = getLibrary( "BlocksGUI.dll" );
+    libName = libName + ".dll";
 #endif
+    library = getLibrary( libName );
   }
 
   // call method of corresponding GUI library
@@ -573,190 +520,60 @@ void GeometryGUI::OnGUIEvent( int id )
     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]
 //=================================================================================
-void GeometryGUI::OnKeyPress( SUIT_ViewWindow* win, QKeyEvent* pe )
+void GeometryGUI::OnKeyPress( SUIT_ViewWindow* w, QKeyEvent* e )
 {
-  GUIMap::Iterator it;
-  bool bOk = true;
-  for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) {
-    SUIT_Application* anApp = application();
-    if (!anApp) return;
-    bOk = bOk && it.value()->OnKeyPress( pe, anApp->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]
 //=================================================================================
-void GeometryGUI::OnMouseMove( SUIT_ViewWindow* win, QMouseEvent* pe )
+void GeometryGUI::OnMouseMove( SUIT_ViewWindow* w, QMouseEvent* e )
 {
-  GUIMap::Iterator it;
-  bool bOk = true;
-  for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) {
-    SUIT_Application* anApp = application();
-    if (!anApp) return;
-    bOk = bOk && it.value()->OnMouseMove( pe, anApp->desktop(), win );
-  }
-//  return bOk;
+  if ( !application() )
+    return;
+  foreach ( GEOMGUI* lib, myGUIMap )
+    lib->OnMouseMove( e, application()->desktop(), w );
 }
 
-
 //=================================================================================
-// function : GeometryGUI::0nMousePress()
+// function : GeometryGUI::OnMousePress()
 // purpose  : Manage mouse press events [static]
 //=================================================================================
-void GeometryGUI::OnMousePress( SUIT_ViewWindow* win, QMouseEvent* pe )
+void GeometryGUI::OnMousePress( 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 ) {
-    SUIT_Application* anApp = application();
-    if (!anApp) return;
-    processed = processed || it.value()->OnMousePress( pe, anApp->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 ) {
-      SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( window );
-      if ( vw ) {
-        SVTK_RenderWindowInteractor* anInteractor = vw->getRWInteractor();
-        anInteractor->SetSelectionProp();
-        anInteractor->SetSelectionTolerance();
-        SVTK_InteractorStyleSALOME* aStyle = anInteractor->GetInteractorStyleSALOME();
-        if (aStyle) {
-          aStyle->setPreselectionProp();
-        }
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : GeometryGUI::SetSettings()
-// purpose  : Called when GEOM module is activated [static]
-//=================================================================================
-bool GeometryGUI::SetSettings()
-{
-  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 ) {
-    SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( window );
-    if ( vw ) {
-      SVTK_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  :
 //=======================================================================
-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  )
 {
-  QIcon 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.toLatin1().constData() ) );
-  else
-    pix = resMgr->loadPixmap( "GEOM", tr( (QString( "ICO_" )+po_id).toLatin1().constData() ), false );
-  if ( !pix.isNull() )
-    icon = QIcon( pix );
-
-  QString tooltip    = tr( (QString( "TOP_" )+po_id).toLatin1().constData() ),
-          menu       = tr( (QString( "MEN_" )+po_id).toLatin1().constData() ),
-          status_bar = tr( (QString( "STB_" )+po_id).toLatin1().constData() );
-
-  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() )  );
 }
 
 
@@ -771,366 +588,383 @@ void GeometryGUI::initialize( CAM_Application* app )
 
   // ----- create actions --------------
 
-  createGeomAction( 111, "IMPORT", "", (CTRL + Key_I) );
-  createGeomAction( 121, "EXPORT", "", (CTRL + Key_E) );
-
-  createGeomAction( 33, "DELETE", "", Qt::Key_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" ); DEPRECATED
-  createGeomAction( 4020, "LOCAL_CS" );
-
-  createGeomAction( 4021, "BOX" );
-  createGeomAction( 4022, "CYLINDER" );
-  createGeomAction( 4023, "SPHERE" );
-  createGeomAction( 4024, "TORUS" );
-  createGeomAction( 4025, "CONE" );
-  createGeomAction( 4026, "FACE" );
-  createGeomAction( 4027, "DISK" );
-
-  createGeomAction( 4031, "EXTRUSION" );
-  createGeomAction( 4032, "REVOLUTION" );
-  createGeomAction( 4033, "FILLING" );
-  createGeomAction( 4034, "PIPE" );
-
-  createGeomAction( 800, "GROUP_CREATE" );
-  createGeomAction( 801, "GROUP_EDIT" );
-
-  createGeomAction( 5029, "RELOAD_IMPORTED" );
-
-  createGeomAction( 9997, "Q_FACE" );
-  createGeomAction( 9999, "HEX_SOLID" );
-
-  createGeomAction( 404, "SKETCH" );
-  createGeomAction( 405, "3DSKETCH" );
-  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( 508, "GET_SHAPES_ON_SHAPES" );
-  createGeomAction( 510, "FILLET_1D" );
-  createGeomAction( 509, "FILLET_2D" );
-
-  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( 611, "CHANGE_ORIENTATION" );
-  createGeomAction( 612, "REMOVE_EXTRA_EDGES" );
-
-  createGeomAction( 708, "POINT_COORDS" );
-  createGeomAction( 701, "BASIC_PROPS" );
-  createGeomAction( 702, "MASS_CENTER" );
-  createGeomAction( 703, "INERTIA" );
-  createGeomAction( 704, "NORMALE" );
-  createGeomAction( 7041, "BND_BOX" );
-  createGeomAction( 7042, "MIN_DIST" );
-  createGeomAction( 7043, "MEASURE_ANGLE" );
-
-  createGeomAction( 705, "TOLERANCE" );
-  createGeomAction( 706, "WHAT_IS" );
-  createGeomAction( 707, "CHECK" );
-  createGeomAction( 7072, "CHECK_COMPOUND" );
+  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::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_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::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( 5103, "CHECK_GEOMETRY" );
+  createGeomAction( GEOMOp::OpCheckGeom,        "CHECK_GEOMETRY" );
 #endif
-  createGeomAction( 412, "SHADING_COLOR" );
-
-  createGeomAction( 211, "SHADING" );
-  createGeomAction( 212, "DISPLAY_ALL" );
-  createGeomAction( 214, "ERASE_ALL" );
-  createGeomAction( 216, "DISPLAY" );
-  createGeomAction( 218, "VECTOR_MODE");
-  createGeomAction( 2171, "VERTEX_SEL_ONLY" ,"", 0, true );
-  createGeomAction( 2172, "EDGE_SEL_ONLY", "", 0, true );
-  createGeomAction( 2173, "WIRE_SEL_ONLY", "",  0, true );
-  createGeomAction( 2174, "FACE_SEL_ONLY", "", 0, true );
-  createGeomAction( 2175, "SHELL_SEL_ONLY", "",  0, true );
-  createGeomAction( 2176, "SOLID_SEL_ONLY", "", 0, true );
-  createGeomAction( 2177, "COMPOUND_SEL_ONLY", "",  0, true );
-  createGeomAction( 2178, "ALL_SEL_ONLY", "",  0, true );
-  createGeomAction( 213, "DISPLAY_ONLY" );
-  createGeomAction( 215, "ERASE" );
-
-  createGeomAction( 901, "POP_RENAME", "", Qt::Key_F2 );
-  createGeomAction( 80311, "POP_WIREFRAME", "", 0, true );
-  createGeomAction( 80312, "POP_SHADING", "", 0, true );
-  createGeomAction( 80313, "POP_VECTORS", "", 0, true );
-  createGeomAction( 8031, "POP_DEFLECTION" );
-  createGeomAction( 8032, "POP_COLOR" );
-  createGeomAction( 8033, "POP_TRANSPARENCY" );
-  createGeomAction( 8034, "POP_ISOS" );
-  createGeomAction( 8035, "POP_AUTO_COLOR" );
-  createGeomAction( 8036, "POP_DISABLE_AUTO_COLOR" );
-  createGeomAction( 8001, "POP_CREATE_GROUP" );
-  createGeomAction( 8037, "POP_SHOW_CHILDREN" );
-  createGeomAction( 8038, "POP_HIDE_CHILDREN" );
-  createGeomAction( 8039, "POP_POINT_MARKER" );
-
-  // 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 --------------------------
+
+  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" );
+
+  // ---- 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 ); DEPRECATED
-  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 );
 
   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( 4026, primId, -1 );
-  createMenu( 4027, 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 );
+
   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( 405, 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( 508, operId, -1 );
-  createMenu( separator(), operId, -1 );
-  createMenu( 510, transId, -1 );
-  createMenu( 509, transId, -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( 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( 611, repairId, -1 );
-  createMenu( 612, 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::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( 704, measurId, -1 );
-  // NPAL16572: move "Check free boundaries" and "Check free faces" from "Repair" to "Measure"
-  createMenu( separator(), measurId, -1 );
-  createMenu( 609, measurId, -1 );
-  createMenu( 610, measurId, -1 );
-  // NPAL16572 END
-  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( 7043, dimId, -1 );
-  createMenu( separator(), measurId, -1 );
+  createMenu( GEOMOp::OpBoundingBox, dimId, -1 );
+  createMenu( GEOMOp::OpMinDistance, dimId, -1 );
+  createMenu( GEOMOp::OpAngle,       dimId, -1 );
 
-  createMenu( 705, measurId, -1 );
-  createMenu( separator(), measurId, -1 );
-  createMenu( 706, measurId, -1 );
-  createMenu( 707, measurId, -1 );
-  createMenu( 7072, measurId, -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 );
+  createMenu( separator(),         toolsId, -1 );
+  createMenu( GEOMOp::OpCheckGeom, toolsId, -1 );
 #endif
-  //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( separator(), prefId, -1 );
 
   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(), dispmodeId, -1 );
-  createMenu( 218, dispmodeId, -1 );
+  createMenu( GEOMOp::OpDisplayMode,   dispmodeId, -1 );
+  createMenu( separator(),             dispmodeId, -1 );
+  createMenu( GEOMOp::OpSwitchVectors, dispmodeId, -1 );
 
-  createMenu( separator(), viewId, -1 );
-  createMenu( 212, viewId, -1 );
-  createMenu( 214, viewId, -1 );
-  createMenu( separator(), viewId, -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( 216, viewId, -1 );
-  createMenu( 213, viewId, -1 );
-  createMenu( 215, viewId, -1 );
+  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 ); DEPRECATED
-  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 );
 
   int primTbId = createTool( tr( "TOOL_PRIMITIVES" ) );
-  createTool( 4021, primTbId );
-  createTool( 4022, primTbId );
-  createTool( 4023, primTbId );
-  createTool( 4024, primTbId );
-  createTool( 4025, primTbId );
-  createTool( 4026, primTbId );
-  createTool( 4027, 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( 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 );
 
   // ---- create popup menus --------------------------
 
@@ -1144,93 +978,92 @@ void GeometryGUI::initialize( CAM_Application* app )
     "(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 ), QString("$type in {'Shape' 'Group'} and selcount=1"), QtxPopupMgr::VisibleRule );
-  mgr->insert( action(   33 ), -1, -1 );  // delete
-  mgr->setRule( action(  33 ), QString("$type in {'Shape' 'Group'} and selcount>0"), QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8001 ), -1, -1 ); // create group
-  mgr->setRule( action( 8001 ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true"), QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8037 ), -1, -1 ); // show children
-  mgr->setRule( action( 8037 ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and hasHiddenChildren=true"), QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8038 ), -1, -1 ); // hide children
-  mgr->setRule( action( 8038 ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and hasShownChildren=true"), QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  801 ), -1, -1 );  // edit group
-  mgr->setRule( action( 801 ),  QString("client='ObjectBrowser' and type='Group' and selcount=1 and isOCC=true"), QtxPopupMgr::VisibleRule );
+  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 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
-  mgr->setRule( action( 80311 ), clientOCCorVTK + " and displaymode='Wireframe'", QtxPopupMgr::ToggleRule );
-  mgr->insert( action(  80312 ), dispmodeId, -1 ); // shading
-  mgr->setRule( action( 80312 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
-  mgr->setRule( action( 80312 ), clientOCCorVTK + " and displaymode='Shading'", QtxPopupMgr::ToggleRule );
+  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(  80313 ), dispmodeId, -1 ); // vectors
-  mgr->setRule( action( 80313 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
-  mgr->setRule( action( 80313 ), clientOCCorVTK + " and isVectorsMode", QtxPopupMgr::ToggleRule );
+  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(  8032 ), -1, -1 ); // color
-  mgr->setRule( action( 8032 ), clientOCCorVTKorOB_AndSomeVisible + " and ($component={'GEOM'})", QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8033 ), -1, -1 ); // transparency
-  mgr->setRule( action( 8033 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8034 ), -1, -1 ); // isos
-  mgr->setRule( action( 8034 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8031 ), -1, -1 ); // deflection
-  mgr->setRule( action( 8031 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8039 ), -1, -1 ); // point marker
-  mgr->setRule( action( 8039 ), QString( "selcount>0 and $typeid in {%1}" ).arg( GEOM_POINT ), QtxPopupMgr::VisibleRule );
+  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 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", 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->insert( separator(), -1, -1 );     // -----------
-  mgr->insert( action(  8035 ), -1, -1 ); // auto color
-  mgr->setRule( action( 8035 ), autoColorPrefix + " and isAutoColor=false", QtxPopupMgr::VisibleRule );
-  mgr->insert( action(  8036 ), -1, -1 ); // disable auto color
-  mgr->setRule( action( 8036 ), autoColorPrefix + " and isAutoColor=true", QtxPopupMgr::VisibleRule );
+  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(  216 ), -1, -1 ); // display
-  mgr->setRule( action( 216 ), rule.arg( types ).arg( "not isVisible" ), QtxPopupMgr::VisibleRule );
+  mgr->insert( action(  GEOMOp::OpShow ), -1, -1 ); // display
+  mgr->setRule( action( GEOMOp::OpShow ), rule.arg( types ).arg( "not isVisible" ), QtxPopupMgr::VisibleRule );
 
-  mgr->insert( action(  215 ), -1, -1 ); // erase
-  mgr->setRule( action( 215 ), rule.arg( types ).arg( "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(  214 ), -1, -1 ); // erase All
-  mgr->setRule( action( 214 ), clientOCCorVTK, 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 selectolnyId = mgr->insert( tr("MEN_SELECT_ONLY"), -1, -1);                //select only menu
-  mgr->insert( action(2171), selectolnyId, -1);                                  //Vertex
-  mgr->setRule(action(2171), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2171), selectOnly + " and selectionmode='VERTEX'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2172), selectolnyId, -1);                                  //Edge
-  mgr->setRule(action(2172), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2172), selectOnly + " and selectionmode='EDGE'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2173), selectolnyId, -1);                                  //Wire
-  mgr->setRule(action(2173), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2173), selectOnly + " and selectionmode='WIRE'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2174), selectolnyId, -1);                                  //Face
-  mgr->setRule(action(2174), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2174), selectOnly + " and selectionmode='FACE'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2175), selectolnyId, -1);                                  //Shell
-  mgr->setRule(action(2175), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2175), selectOnly + " and selectionmode='SHELL'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2176), selectolnyId, -1);                                  //Solid
-  mgr->setRule(action(2176), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2176), selectOnly + " and selectionmode='SOLID'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(2177), selectolnyId, -1);                                  //Compound
-  mgr->setRule(action(2177), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2177), selectOnly + " and selectionmode='COMPOUND'", QtxPopupMgr::ToggleRule);
+  mgr->insert( action(GEOMOp::OpSelectVertex),   selectolnyId, -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),     selectolnyId, -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),     selectolnyId, -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),     selectolnyId, -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),    selectolnyId, -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),    selectolnyId, -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), selectolnyId, -1);                                  //Compound
+  mgr->setRule(action(GEOMOp::OpSelectCompound), selectOnly, QtxPopupMgr::VisibleRule);
+  mgr->setRule(action(GEOMOp::OpSelectCompound), selectOnly + " and selectionmode='COMPOUND'", QtxPopupMgr::ToggleRule);
   mgr->insert( separator(), selectolnyId, -1);
-  mgr->insert( action(2178), selectolnyId, -1);                                  //Clear selection filter
-  mgr->setRule(action(2178), selectOnly, QtxPopupMgr::VisibleRule);
-  mgr->setRule(action(2178), selectOnly + " and selectionmode='ALL'", QtxPopupMgr::ToggleRule);
-  mgr->insert( action(  213 ), -1, -1 ); // display only
-  mgr->setRule( action( 213 ), rule.arg( types ).arg( "true" ), QtxPopupMgr::VisibleRule );
+  mgr->insert( action(GEOMOp::OpSelectAll),      selectolnyId, -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 ) ) );
@@ -1257,12 +1090,10 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
           this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
 
   // Reset actions accelerator keys
-  //action(111)->setAccel(QKeySequence(CTRL + Key_I)); // Import
-  //action(121)->setAccel(QKeySequence(CTRL + Key_E)); // Export
-  action(111)->setEnabled( true ); // Import: CTRL + Key_I
-  action(121)->setEnabled( true ); // Export: CTRL + Key_E
-  action( 33)->setEnabled( true ); // Delete: Key_Delete
-  action(901)->setEnabled( true ); // Rename: Key_F2
+  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 )
@@ -1335,12 +1166,10 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
     it.value()->deactivate();
 
   // Unset actions accelerator keys
-  //action(111)->setAccel(QKeySequence()); // Import
-  //action(121)->setAccel(QKeySequence()); // Export
-  action(111)->setEnabled( false ); // Import: CTRL + Key_I
-  action(121)->setEnabled( false ); // Export: CTRL + Key_E
-  action( 33)->setEnabled( false ); // Delete: Key_Delete
-  action(901)->setEnabled( false ); // Rename: Key_F2
+  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();
@@ -1353,15 +1182,6 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
   return SalomeApp_Module::deactivateModule( study );
 }
 
-//=======================================================================
-// function : GeometryGUI::BuildPresentation()
-// purpose  :
-//=======================================================================
-void GeometryGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)& io, SUIT_ViewWindow* win )
-{
-  //GEOM_Displayer().Display( io, false, win );
-}
-
 //=======================================================================
 // function : onWindowActivated()
 // purpose  : update menu items' status - disable non-OCC-viewer-compatible actions
@@ -1375,18 +1195,18 @@ void GeometryGUI::onWindowActivated( SUIT_ViewWindow* win )
   //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( 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
@@ -1412,7 +1232,6 @@ void GeometryGUI::onViewManagerAdded( SUIT_ViewManager* vm )
     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 ) );
 
@@ -1536,7 +1355,7 @@ void GeometryGUI::contextMenuPopup( const QString& client, QMenu* menu, QString&
   }
 
   if (isImported) {
-    menu->addAction(action(5029)); // Reload imported shape
+    menu->addAction(action(GEOMOp::OpReimport)); // Reload imported shape
   }
 }
 
@@ -2102,7 +1921,7 @@ void GeometryGUI::restoreVisualParameters (int savePoint)
 void GeometryGUI::onViewAboutToShow()
 {
   SUIT_ViewWindow* window = application()->desktop()->activeWindow();
-  QAction* a = action( 218 );
+  QAction* a = action( GEOMOp::OpSwitchVectors );
   if ( window ) {
     a->setEnabled(true);
     bool vmode = window->getCustomData("VectorsMode").toBool();
index 249359762b11c8ca05366cc67d85e052f6323122..2195f5b21b3a257736e563528a45da4b7a038936 100644 (file)
@@ -50,8 +50,6 @@
 // minimum allowed value for deflection coefficient
 #define DEFLECTION_MIN 1e-06
 
-typedef QMap<QString, GEOMGUI*> GUIMap;
-
 class QDialog;
 class QMenu;
 class GEOMGUI_OCCSelector;
@@ -81,17 +79,14 @@ public:
 
   static Handle(Graphic3d_HArray1OfBytes) getTexture( SalomeApp_Study*, int, int&, int& );
 
-  static bool                 InitGeomGen();   //BugID IPAL9186: SRN: To be called by Python scripts
+  static bool                 InitGeomGen();
 
-  static  GEOM::GEOM_Gen_var  GetGeomGen();//        { return GeometryGUI::myComponentGeom; }
+  static  GEOM::GEOM_Gen_var  GetGeomGen();
 
   static CORBA::Object_var    ClientSObjectToObject (_PTR(SObject) theSObject);
   static SALOMEDS::Study_var  ClientStudyToStudy (_PTR(Study) theStudy);
 
   GEOM_Client&                GetShapeReader()    { return myShapeReader; }
-  Standard_CString&           GetFatherior()      { return myFatherior; }
-  //void                        SetState( const int state ) { myState = state; }
-  //int                         GetState() const    { return myState; }
 
   // Get active dialog box
   QDialog*                    GetActiveDialogBox(){ return myActiveDialogBox; }
@@ -103,16 +98,9 @@ public:
   void                        EmitSignalCloseAllDialogs();
   void                        EmitSignalDefaultStepValueChanged( double newVal );
 
+  // Process action
   void                        OnGUIEvent( int id );
 
-//  virtual bool                SetSettings();
-//  virtual void                SupportedViewType ( int* buffer, int bufferSize );
-  virtual void                BuildPresentation( const Handle(SALOME_InteractiveObject)&, SUIT_ViewWindow* = 0 );
-
-//  virtual void                DefinePopup( QString & theContext, QString & theParent, QString & theObject);
-//  virtual bool                CustomPopup( QAD_Desktop* parent, QMenu* popup, const QString& theContext,
-//                                         const QString& theParent, const QString& theObject );
-
   // The Working Plane management
   void                        SetWorkingPlane( gp_Ax3 wp ) { myWorkingPlane = wp;   }
   gp_Ax3                      GetWorkingPlane()            { return myWorkingPlane; }
@@ -171,12 +159,11 @@ private:
 
   typedef QMap<long, Handle(Graphic3d_HArray1OfBytes)> TextureMap;
   typedef QMap<long, TextureMap> StudyTextureMap;
-  
+  typedef QMap<QString, GEOMGUI*> GUIMap;
+
   GUIMap                      myGUIMap;          // GUI libraries map
   QDialog*                    myActiveDialogBox; // active dialog box
   GEOM_Client                 myShapeReader;     // geom shape reader
-  Standard_CString            myFatherior;
-  int                         myState;           // identify a method
   gp_Ax3                      myWorkingPlane;
   QMap<int,QString>           myRules;           // popup rules
   static StudyTextureMap      myTextureMap;      // texture map
diff --git a/src/GEOMGUI/GeometryGUI_Operations.h b/src/GEOMGUI/GeometryGUI_Operations.h
new file mode 100644 (file)
index 0000000..33b5e18
--- /dev/null
@@ -0,0 +1,162 @@
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : GeometryGUI_Operations.h
+//  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+//
+
+#ifndef GEOMETRYGUI_OPERATIONS_H
+#define GEOMETRYGUI_OPERATIONS_H
+
+namespace GEOMOp {
+  enum {
+    // ToolsGUI
+    OpImport            = 1000,   // MENU FILE  - IMPORT
+    OpExport            = 1001,   // MENU FILE  - EXPORT
+    OpDelete            = 1020,   // MENU EDIT  - DELETE
+    OpCheckGeom         = 1030,   // MENU TOOLS - CHECK GEOMETRY
+    OpSelectVertex      = 1100,   // POPUP MENU - SELECT ONLY - VERTEX
+    OpSelectEdge        = 1101,   // POPUP MENU - SELECT ONLY - EDGE
+    OpSelectWire        = 1102,   // POPUP MENU - SELECT ONLY - WIRE
+    OpSelectFace        = 1103,   // POPUP MENU - SELECT ONLY - FACE
+    OpSelectShell       = 1104,   // POPUP MENU - SELECT ONLY - SHELL
+    OpSelectSolid       = 1105,   // POPUP MENU - SELECT ONLY - SOLID
+    OpSelectCompound    = 1106,   // POPUP MENU - SELECT ONLY - COMPOUND
+    OpSelectAll         = 1107,   // POPUP MENU - SELECT ONLY - SELECT ALL
+    OpDeflection        = 1200,   // POPUP MENU - DEFLECTION COEFFICIENT
+    OpColor             = 1201,   // POPUP MENU - COLOR
+    OpTransparency      = 1202,   // POPUP MENU - TRANSPARENCY
+    OpIsos              = 1203,   // POPUP MENU - ISOS
+    OpAutoColor         = 1204,   // POPUP MENU - AUTO COLOR
+    OpNoAutoColor       = 1205,   // POPUP MENU - DISABLE AUTO COLOR
+    OpPointMarker       = 1206,   // POPUP MENU - POINT MARKER
+    OpShowChildren      = 1250,   // POPUP MENU - SHOW CHILDREN
+    OpHideChildren      = 1251,   // POPUP MENU - HIDE CHILDREN
+    OpRename            = 1252,   // POPUP MENU - RENAME
+    // DisplayGUI
+    OpDisplayMode       = 2000,   // MENU VIEW  - DISPLAY MODE - WIREFRAME/SHADING
+    OpSwitchVectors     = 2001,   // MENU VIEW  - DISPLAY MODE - SHOW/HIDE EDGE DIRECTION
+    OpShowAll           = 2002,   // MENU VIEW  - SHOW ALL
+    OpHideAll           = 2003,   // MENU VIEW  - HIDE ALL
+    OpShow              = 2100,   // POPUP MENU - SHOW
+    OpShowOnly          = 2101,   // POPUP MENU - SHOW ONLY
+    OpHide              = 2102,   // POPUP MENU - HIDE
+    OpWireframe         = 2200,   // POPUP MENU - DISPLAY MODE - WIREFRAME
+    OpShading           = 2201,   // POPUP MENU - DISPLAY MODE - SHADING
+    OpVectors           = 2202,   // POPUP MENU - DISPLAY MODE - SHOW EDGE DIRECTION
+    // BasicGUI
+    OpPoint             = 3000,   // MENU NEW ENTITY - BASIC - POINT
+    OpLine              = 3001,   // MENU NEW ENTITY - BASIC - LINE
+    OpCircle            = 3002,   // MENU NEW ENTITY - BASIC - CIRCLE
+    OpEllipse           = 3003,   // MENU NEW ENTITY - BASIC - ELLIPSE
+    OpArc               = 3004,   // MENU NEW ENTITY - BASIC - ARC
+    OpVector            = 3005,   // MENU NEW ENTITY - BASIC - VECTOR
+    OpPlane             = 3006,   // MENU NEW ENTITY - BASIC - PLANE
+    OpCurve             = 3007,   // MENU NEW ENTITY - BASIC - CURVE
+    OpLCS               = 3008,   // MENU NEW ENTITY - BASIC - LOCAL COORDINATE SYSTEM
+    // PrimitiveGUI
+    OpBox               = 3100,   // MENU NEW ENTITY - PRIMITIVES - BOX
+    OpCylinder          = 3101,   // MENU NEW ENTITY - PRIMITIVES - CYLINDER
+    OpSphere            = 3102,   // MENU NEW ENTITY - PRIMITIVES - SPHERE
+    OpTorus             = 3103,   // MENU NEW ENTITY - PRIMITIVES - TORUS
+    OpCone              = 3104,   // MENU NEW ENTITY - PRIMITIVES - CONE
+    OpRectangle         = 3105,   // MENU NEW ENTITY - PRIMITIVES - FACE
+    OpDisk              = 3106,   // MENU NEW ENTITY - PRIMITIVES - DISK
+    // GenerationGUI
+    OpPrism             = 3200,   // MENU NEW ENTITY - GENERATION - EXTRUSION
+    OpRevolution        = 3201,   // MENU NEW ENTITY - GENERATION - REVOLUTION
+    OpFilling           = 3202,   // MENU NEW ENTITY - GENERATION - FILLING
+    OpPipe              = 3203,   // MENU NEW ENTITY - GENERATION - EXTRUSION ALONG PATH
+    // EntityGUI
+    Op2dSketcher        = 3300,   // MENU NEW ENTITY - SKETCHER
+    Op3dSketcher        = 3301,   // MENU NEW ENTITY - 3D SKETCHER
+    OpExplode           = 3302,   // MENU NEW ENTITY - EXPLODE
+    // BuildGUI
+    OpEdge              = 3400,   // MENU NEW ENTITY - BUILD - EDGE
+    OpWire              = 3401,   // MENU NEW ENTITY - BUILD - WIRE
+    OpFace              = 3402,   // MENU NEW ENTITY - BUILD - FACE
+    OpShell             = 3403,   // MENU NEW ENTITY - BUILD - SHELL
+    OpSolid             = 3404,   // MENU NEW ENTITY - BUILD - SOLID
+    OpCompound          = 3405,   // MENU NEW ENTITY - BUILD - COMPOUND
+    // BooleanGUI
+    OpFuse              = 3500,   // MENU OPERATIONS - BOOLEAN - FUSE
+    OpCommon            = 3501,   // MENU OPERATIONS - BOOLEAN - COMMON
+    OpCut               = 3502,   // MENU OPERATIONS - BOOLEAN - CUT
+    OpSection           = 3503,   // MENU OPERATIONS - BOOLEAN - SECTION
+    // TransformationGUI
+    OpTranslate         = 3600,   // MENU OPERATIONS - TRANSFORMATION - TRANSLATION
+    OpRotate            = 3601,   // MENU OPERATIONS - TRANSFORMATION - ROTATION
+    OpChangeLoc         = 3602,   // MENU OPERATIONS - TRANSFORMATION - LOCATION
+    OpMirror            = 3603,   // MENU OPERATIONS - TRANSFORMATION - MIRROR
+    OpScale             = 3604,   // MENU OPERATIONS - TRANSFORMATION - SCALE
+    OpOffset            = 3605,   // MENU OPERATIONS - TRANSFORMATION - OFFSET
+    OpMultiTranslate    = 3606,   // MENU OPERATIONS - TRANSFORMATION - MULTI-TRANSLATION
+    OpMultiRotate       = 3607,   // MENU OPERATIONS - TRANSFORMATION - MULTI-ROTATION
+    OpReimport          = 3608,   // POPUP MENU - RELOAD IMPORTED
+    // OperationGUI
+    OpPartition         = 3700,   // MENU OPERATION - PARTITION
+    OpArchimede         = 3701,   // MENU OPERATION - ARCHIMEDE
+    OpFillet3d          = 3702,   // MENU OPERATION - FILLET
+    OpChamfer           = 3703,   // MENU OPERATION - CHAMFER
+    OpShapesOnShape     = 3704,   // MENU OPERATION - GET SHAPES ON SHAPE
+    OpFillet2d          = 3705,   // MENU OPERATION - FILLET 2D
+    OpFillet1d          = 3706,   // MENU OPERATION - FILLET 1D
+    OpClipping          = 3707,   // MENU OPERATION - CLIPPING RANGE
+    // RepairGUI
+    OpSewing            = 4000,   // MENU REPAIR - SEWING
+    OpSuppressFaces     = 4001,   // MENU REPAIR - SUPPRESS FACES
+    OpSuppressHoles     = 4002,   // MENU REPAIR - SUPPRESS HOLES
+    OpShapeProcess      = 4003,   // MENU REPAIR - SHAPE PROCESSING
+    OpCloseContour      = 4004,   // MENU REPAIR - CLOSE CONTOUR
+    OpRemoveIntWires    = 4005,   // MENU REPAIR - REMOVE INTERNAL WIRES
+    OpAddPointOnEdge    = 4006,   // MENU REPAIR - ADD POINT ON EDGE
+    OpFreeBoundaries    = 4007,   // MENU MEASURES - FREE BOUNDARIES
+    OpFreeFaces         = 4008,   // MENU MEASURES - FREE FACES
+    OpOrientation       = 4009,   // MENU REPAIR - CHANGE ORIENTATION
+    OpGlueFaces         = 4010,   // MENU REPAIR - GLUE FACES
+    OpRemoveExtraEdges  = 4011,   // MENU REPAIR - REMOVE EXTRA EDGES
+    // MeasureGUI
+    OpProperties        = 5000,   // MENU MEASURES - PROPERTIES
+    OpCenterMass        = 5001,   // MENU MEASURES - CENTRE OF MASS
+    OpInertia           = 5002,   // MENU MEASURES - INERTIA
+    OpNormale           = 5003,   // MENU MEASURES - NORMALE
+    OpBoundingBox       = 5004,   // MENU MEASURES - BOUNDING BOX
+    OpMinDistance       = 5005,   // MENU MEASURES - MIN DISTANCE
+    OpAngle             = 5006,   // MENU MEASURES - ANGLE
+    OpTolerance         = 5007,   // MENU MEASURES - TOLERANCE
+    OpWhatIs            = 5008,   // MENU MEASURES - WHAT IS
+    OpCheckShape        = 5009,   // MENU MEASURES - CHECK
+    OpCheckCompound     = 5010,   // MENU MEASURES - CHECK COMPOUND OF BLOCKS
+    OpPointCoordinates  = 5011,   // MENU MEASURES - POINT COORDINATES
+    // GroupGUI
+    OpGroupCreate       = 6000,   // MENU GROUP - CREATE
+    OpGroupEdit         = 6001,   // MENU GROUP - EDIT
+    OpGroupCreatePopup  = 6002,   // POPUP MENU - CREATE GROUP
+    // BlocksGUI
+    OpHexaSolid         = 6100,   // MENU BLOCKS - HEXAHEDRAL SOLID
+    OpMultiTransform    = 6101,   // MENU BLOCKS - MULTI-TRANSFORMATION
+    OpQuadFace          = 6102,   // MENU BLOCKS - QUADRANGLE FACE
+    OpPropagate         = 6103,   // MENU BLOCKS - PROPAGATE
+    OpExplodeBlock      = 6104,   // MENU BLOCKS - EXPLODE ON BLOCKS
+  };
+} 
+
+#endif // GEOMETRYGUI_OPERATIONS_H
index acb2cc00951ad45b63d9c46dee49d4e18aab93bc..331483c78ae99c9fa56cc590281614d06e315b41 100644 (file)
@@ -32,6 +32,7 @@ lib_LTLIBRARIES = libGEOM.la
 # header files 
 salomeinclude_HEADERS =        \
        GeometryGUI.h           \
+       GeometryGUI_Operations.h\
        GEOMGUI.h               \
        GEOM_Displayer.h        \
        GEOMGUI_OCCSelector.h   \