]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
improve export dialog and start import
authorfps <fps@opencascade.com>
Thu, 11 Apr 2013 15:50:20 +0000 (15:50 +0000)
committerfps <fps@opencascade.com>
Thu, 11 Apr 2013 15:50:20 +0000 (15:50 +0000)
22 files changed:
idl/GEOM_Gen.idl
idl/GEOM_Superv.idl
resources/GEOMCatalog.xml.in
resources/Makefile.am
resources/exportxao.png [new file with mode: 0644]
resources/importxao.png [new file with mode: 0644]
src/GEOMGUI/GEOM_images.ts
src/GEOMGUI/GEOM_msg_en.ts
src/GEOMGUI/GEOM_msg_fr.ts
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI_Operations.h
src/GEOMImpl/GEOMImpl_IImportExportOperations.cxx
src/GEOMImpl/GEOMImpl_IImportExportOperations.hxx
src/GEOM_I/GEOM_IImportExportOperations_i.cc
src/GEOM_I/GEOM_IImportExportOperations_i.hh
src/GEOM_I_Superv/GEOM_Superv_i.cc
src/GEOM_I_Superv/GEOM_Superv_i.hh
src/GEOM_SWIG/geompyDC.py
src/ImportExportGUI/ImportExportGUI.cxx
src/ImportExportGUI/ImportExportGUI_ExportXAODlg.cxx
src/ImportExportGUI/ImportExportGUI_ExportXAODlg.h
src/Makefile.am

index 1e7b044857224026ebd56f45712777fdf5a239a3..2949b27ef9317ee6cf5511a5f8265df5d94f9987 100644 (file)
@@ -4013,15 +4013,26 @@ module GEOM
   {
     /*!
      *  Export a shape to XAO Format
-     *  \param exportingShape Shape to export
      *  \param fileName The name of the exported file
-     *  \param groups List of groups to export
-     *  \param fields List of fields to export
+     *  \param shape The shape to export
+     *  \param groups The list of groups to export
+     *  \param fields The list of fields to export
      *  \return boolean indicating if export was succeful.
      */
 
-     boolean ExportXAO(in GEOM_Object shape, in string fileName, in ListOfGO groups, in ListOfGO fields);
+     boolean ExportXAO(in string fileName, in GEOM_Object shape, in ListOfGO groups, in ListOfGO fields);
 
+     /*!
+      *  Import a shape from XAO Format
+      *  \param fileName The name of the imported file
+      *  \param shape The imported shape
+      *  \param groups The list of imported groups
+      *  \param fields The list of imported fields
+      *  \return boolean indicating if import was succeful.
+      */
+
+      //boolean ImportXAO(in string fileName, out GEOM_Object shape, out ListOfGO groups, out ListOfGO fields);
+     
     /*@@ insert new functions before this line @@ do not remove this line @@*/
   };
 
index 0ba232316bab42d9a916217457ce98610550299c..8ab115aab55907cff12cfe01d7451a2f7e01e992 100644 (file)
@@ -626,7 +626,10 @@ module GEOM
     //-----------------------------------------------------------//
     // ImportExportOperations                                    //
     //-----------------------------------------------------------//
-    boolean ExportXAO(in GEOM_Object exportingShape, in string fileName, in GEOM_List groups, in GEOM_List fields);
+    boolean ExportXAO(in string fileName, in GEOM_Object exportingShape,
+            in GEOM_List groups, in GEOM_List fields);
+//    boolean ImportXAO(in string fileName, out GEOM_Object exportingShape,
+//            out GEOM_List groups, out GEOM_List fields);
 
     /*@@ insert new functions before this line @@ do not remove this line @@*/
  };
index 36e2b904b0e979451369c192a3538f69477f5fc9..ecf47afeb3397c7fc3db8307b59e2baf0b0f0084 100644 (file)
                         <service-comment>unknown</service-comment>
                         <service-by-default>0</service-by-default>
                         <inParameter-list>
-                            <inParameter>
-                                <inParameter-name>theExportingShape</inParameter-name>
-                                <inParameter-type>GEOM_Object</inParameter-type>
-                                <inParameter-comment>Shape to export</inParameter-comment>
-                            </inParameter>
                             <inParameter>
                                 <inParameter-name>theFileName</inParameter-name>
                                 <inParameter-type>string</inParameter-type>
                                 <inParameter-comment>The name of the exported file</inParameter-comment>
                             </inParameter>
+                            <inParameter>
+                                <inParameter-name>theExportingShape</inParameter-name>
+                                <inParameter-type>GEOM_Object</inParameter-type>
+                                <inParameter-comment>Shape to export</inParameter-comment>
+                            </inParameter>
                             <inParameter>
                                 <inParameter-name>thelGroups</inParameter-name>
                                 <inParameter-type>GEOM_List</inParameter-type>
index c8090b63d8dfeb9f7b385c7d21a927a0562274f9..fca8dfb7ff9a5d3f199e5708edb5309c70342c3b 100644 (file)
@@ -256,8 +256,8 @@ ADVANCED_RESOURCES += dlg_pipetshapefilletl2.png dlg_pipetshapefilletr2.png dlg_
 ADVANCED_RESOURCES += dlg_pipetshapefilletrf.png
 # ADVANCED_RESOURCES += divideddisk.png divideddisk_r_ratio.png tree_divideddisk.png
 ADVANCED_RESOURCES += dividedcylinder.png dividedcylinder_r_h.png
+ADVANCED_RESOURCES += exportxao.png importxao.png
 # tree_dividedcylinder.png
-#IMPORTEXPORT_RESOURCES += exportxao.png exportxao_exportingshape_filename_lgroups_lfields.png tree_exportxao.png
 ##@@ insert new functions before this line @@ do not remove this line @@##
 
 dist_salomeres_DATA += $(ADVANCED_RESOURCES)
diff --git a/resources/exportxao.png b/resources/exportxao.png
new file mode 100644 (file)
index 0000000..25e5b3d
Binary files /dev/null and b/resources/exportxao.png differ
diff --git a/resources/importxao.png b/resources/importxao.png
new file mode 100644 (file)
index 0000000..bfb0e07
Binary files /dev/null and b/resources/importxao.png differ
index 44f455d7126fe3f4caacfa7c3cf4cc52e356571c..86a6b68947b919f30df784e263bd64faac70fb57 100644 (file)
             <source>DLG_PIPETSHAPE_W2</source>
             <translation>dlg_pipetshapew2.png</translation>
         </message>
-        
+
         <message>
             <source>DLG_PIPETSHAPE_FILLET</source>
             <translation>dlg_pipetshapefillet.png</translation>
             <source>DLG_PIPETSHAPE_FILLET_RF</source>
             <translation>dlg_pipetshapefilletrf.png</translation>
         </message>
-        
+
         <message>
             <source>DLG_PIPETSHAPE_CHAMFER</source>
             <translation>dlg_pipetshapechamfer.png</translation>
             <source>DLG_PIPETSHAPE_CHAMFER_W</source>
             <translation>dlg_pipetshapechamferw.png</translation>
         </message>
-        
+
         <message>
             <source>ICON_OBJBROWSER_ADVANCED_201</source>
             <translation>tree_pipetshape.png</translation>
             <translation>dividedcylinder.png</translation>
         </message>
         <message>
-            <source>ICON_DLG_EXPORTXAO_EXPORTINGSHAPE_FILENAME_LGROUPS_LFIELDS</source>
-            <translation>exportxao_exportingshape_filename_lgroups_lfields.png</translation>
+            <source>ICON_DLG_EXPORTXAO</source>
+            <translation>exportxao.png</translation>
         </message>
         <message>
             <source>ICO_EXPORTXAO</source>
             <translation>exportxao.png</translation>
         </message>
         <message>
-            <source>ICON_OBJBROWSER_IMPORTEXPORT_200</source>
+            <source>ICON_DLG_IMPORTXAO</source>
+            <translation>importxao.png</translation>
+        </message>
+        <message>
+            <source>ICO_IMPORTXAO</source>
+            <translation>importxao.png</translation>
+        </message>
+        <message>
+            <source>ICON_OBJBROWSER_IMPORTEXPORT_204</source>
             <translation>tree_exportxao.png</translation>
         </message>
        <!-- @@ insert new functions before this line @@ do not remove this line @@ -->
index 6588919010e2ba61d3029684215c674b67e603b7..9a9da47b3dc6ddea4161f96ce42c5b406aa8f498 100644 (file)
@@ -4856,6 +4856,42 @@ be specified in meters).</translation>
         <source>GEOM_SELECT_IMAGE</source>
         <translation>Select image...</translation>
     </message>
+    <message>
+        <source>MEN_IMPORTEXPORT</source>
+        <translation>Import / Export</translation>
+    </message>
+    <message>
+        <source>TOP_EXPORTXAO</source>
+        <translation>Export to XAO</translation>
+    </message>
+    <message>
+        <source>MEN_EXPORTXAO</source>
+        <translation>Export XAO</translation>
+    </message>
+    <message>
+        <source>STB_EXPORTXAO</source>
+        <translation>Export shape to XAO format</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTXAO</source>
+        <translation>Import from XAO</translation>
+    </message>
+    <message>
+        <source>MEN_IMPORTXAO</source>
+        <translation>Import XAO</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTXAO</source>
+        <translation>Import shape from XAO format</translation>
+    </message>
+    <message>
+        <source>GEOM_IMPORTEXPORT_204</source>
+        <translation>Export XAO</translation>
+    </message>
+    <message>
+        <source>XAO_FILES</source>
+        <translation>XAO files (*.xao)</translation>
+    </message>
 </context>
 <context>
     <name>BasicGUI_CurveDlg</name>
@@ -5745,7 +5781,7 @@ Do you want to create new material?</translation>
     </message>
     <message>
         <source>GEOM_EXPORTXAO_EXPORTINGSHAPE</source>
-        <translation>Exporting Shape</translation>
+        <translation>Shape</translation>
     </message>
     <message>
         <source>GEOM_EXPORTXAO_FILENAME</source>
@@ -5760,27 +5796,4 @@ Do you want to create new material?</translation>
         <translation>List of fields</translation>
     </message>
 </context>
-<context>
-    <name>@default</name>
-    <message>
-        <source>MEN_IMPORTEXPORT</source>
-        <translation>Import / Export</translation>
-    </message>
-    <message>
-        <source>TOP_EXPORTXAO</source>
-        <translation>Export to XAO</translation>
-    </message>
-    <message>
-        <source>MEN_EXPORTXAO</source>
-        <translation>Export XAO</translation>
-    </message>
-    <message>
-        <source>STB_EXPORTXAO</source>
-        <translation>Export shape to XAO format</translation>
-    </message>
-    <message>
-        <source>GEOM_IMPORTEXPORT_204</source>
-        <translation>Export XAO</translation>
-    </message>
-</context>
 </TS>
index 81d5072c6818abd543cab4b26fe64c05f8bfc715..dea9cceb514a91c310c2c773361fd9ee7d781aa6 100644 (file)
@@ -4855,6 +4855,42 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
         <source>GEOM_SELECT_IMAGE</source>
         <translation>Sélectionner une image...</translation>
     </message>
+    <message>
+        <source>MEN_IMPORTEXPORT</source>
+        <translation>Import / Export</translation>
+    </message>
+    <message>
+        <source>TOP_EXPORTXAO</source>
+        <translation>Export XAO</translation>
+    </message>
+    <message>
+        <source>MEN_EXPORTXAO</source>
+        <translation>Export XAO</translation>
+    </message>
+    <message>
+        <source>STB_EXPORTXAO</source>
+        <translation>Exporter une forme au format XAO</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTXAO</source>
+        <translation>Import XAO</translation>
+    </message>
+    <message>
+        <source>MEN_IMPORTXAO</source>
+        <translation>Import XAO</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTXAO</source>
+        <translation>Importer une forme au format XAO</translation>
+    </message>
+    <message>
+        <source>GEOM_IMPORTEXPORT_204</source>
+        <translation>Export XAO</translation>
+    </message>
+    <message>
+        <source>XAO_FILES</source>
+        <translation>Fichiers XAO (*.xao)</translation>
+    </message>
 </context>
 <context>
     <name>BasicGUI_CurveDlg</name>
index 37528db55eb2d7527dd39fd2c82184289a15c316..1da02642a9bda95245673d15cc1ce3d393f4e485 100644 (file)
@@ -580,6 +580,7 @@ void GeometryGUI::OnGUIEvent( int id )
     libName = "AdvancedGUI";
     break;
   case GEOMOp::OpExportXAO:           // MENU NEW ENTITY - IMPORTEXPORT - EXPORTXAO
+  case GEOMOp::OpImportXAO:           // MENU NEW ENTITY - IMPORTEXPORT - IMPORTXAO
     libName = "ImportExportGUI";
     break;
   default:
@@ -910,6 +911,7 @@ void GeometryGUI::initialize( CAM_Application* app )
   createGeomAction( GEOMOp::OpDividedDisk, "DIVIDEDDISK" );
   createGeomAction( GEOMOp::OpDividedCylinder, "DIVIDEDCYLINDER" );
   createGeomAction( GEOMOp::OpExportXAO, "EXPORTXAO" );
+  createGeomAction( GEOMOp::OpImportXAO, "IMPORTXAO" );
   //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
 
   // ---- create menus --------------------------
@@ -961,7 +963,8 @@ void GeometryGUI::initialize( CAM_Application* app )
 
    int impexpId = createMenu( tr( "MEN_IMPORTEXPORT" ), newEntId, -1 );
 
-  createMenu( GEOMOp::OpExportXAO, impexpId, -1 );
+   createMenu( GEOMOp::OpExportXAO, impexpId, -1 );
+   createMenu( GEOMOp::OpImportXAO, impexpId, -1 );
   //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
 
   createMenu( separator(), newEntId, -1 );
@@ -1234,7 +1237,8 @@ void GeometryGUI::initialize( CAM_Application* app )
 
    int impexpTbId = createTool( tr( "TOOL_IMPORTEXPORT" ) );
 
-  createTool( GEOMOp::OpExportXAO, impexpTbId );
+   createTool( GEOMOp::OpExportXAO, impexpTbId );
+   createTool( GEOMOp::OpImportXAO, impexpTbId );
   //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@ do not remove this line @@//
 
   // ---- create popup menus --------------------------
index f08bb5653955bbc34f37f6c868d011b290992eb9..e648539f95b9292a000238aadc02f10f5e211961 100644 (file)
@@ -194,6 +194,7 @@ namespace GEOMOp {
     OpDividedCylinder     = 10004,  // MENU NEW ENTITY - ADVANCED - DIVIDEDCYLINDER
     // ImportExport ----------------//--------------------------------
     OpExportXAO           = 10005,  // MENU NEW ENTITY - IMPORTEXPORT - EXPORTXAO
+    OpImportXAO           = 10006,  // MENU NEW ENTITY - IMPORTEXPORT - IMPORTXAO
     //@@ insert new functions before this line @@ do not remove this line @@//
   };
 }
index b2bb65309beb0e86e71f4ae21a55ff1ff5939c4c..01b7f80be2242a456d2fe4b352ae6f9629991d22 100644 (file)
@@ -111,15 +111,15 @@ GEOMImpl_IImportExportOperations::~GEOMImpl_IImportExportOperations()
 //=============================================================================
 /*!
  *  Export a shape to XAO Format
- *  \param shape The shape to export
  *  \param fileName The name of the exported file
- *  \param groupList The list of groups to export
- *  \param fieldList The list of fields to export
- *  \return New GEOM_Object, containing the created shape.
+ *  \param shape The shape to export
+ *  \param groups The list of groups to export
+ *  \param fields The list of fields to export
+ *  \return boolean indicating if export was succeful.
  */
 //=============================================================================
-bool GEOMImpl_IImportExportOperations::ExportXAO(Handle(GEOM_Object) shape,
-        const std::string fileName,
+bool GEOMImpl_IImportExportOperations::ExportXAO(const std::string fileName,
+        Handle(GEOM_Object) shape,
         std::list<Handle(GEOM_Object)> groupList,
         std::list<Handle(GEOM_Object)> fieldList)
 {
@@ -271,4 +271,25 @@ bool GEOMImpl_IImportExportOperations::ExportXAO(Handle(GEOM_Object) shape,
 
     return true;
 }
+
+//=============================================================================
+/*!
+ *  Import a shape from XAO Format
+ *  \param fileName The name of the imported file
+ *  \param shape The imported shape
+ *  \param groups The list of imported groups
+ *  \param fields The list of imported fields
+ *  \return boolean indicating if import was succeful.
+ */
+//=============================================================================
+//bool GEOMImpl_IImportExportOperations::ImportXAO(const std::string fileName,
+//        Handle(GEOM_Object) shape,
+//        std::list<Handle(GEOM_Object)> groupList,
+//        std::list<Handle(GEOM_Object)> fieldList)
+//{
+//    SetErrorCode(KO);
+//    return true;
+//}
+
+
 /*@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@*/
index 6167f3571989b358f0e5ea67fff5a85638813dea..fcc19c39d1cb0630ac1dc3fb9983c8bc5503a48e 100644 (file)
 
 #include <list>
 
-/*class GEOMImpl_IBasicOperations;
- class GEOMImpl_IBooleanOperations;
- class GEOMImpl_IShapesOperations;
- class GEOMImpl_ITransformOperations;
- class GEOMImpl_IBlocksOperations;
- class GEOMImpl_I3DPrimOperations;
- class GEOMImpl_ILocalOperations;
- class GEOMImpl_IHealingOperations;*/
 class GEOMImpl_IShapesOperations;
 class GEOMImpl_IGroupOperations;
 
@@ -44,14 +36,7 @@ class GEOMImpl_IImportExportOperations: public GEOM_IOperations
 {
 
 private:
-    /*GEOMImpl_IBasicOperations*     myBasicOperations;
-     GEOMImpl_IBooleanOperations*   myBooleanOperations;
-     GEOMImpl_IShapesOperations*    myShapesOperations;
-     GEOMImpl_ITransformOperations* myTransformOperations;
-     GEOMImpl_IBlocksOperations*    myBlocksOperations;
-     GEOMImpl_I3DPrimOperations*    my3DPrimOperations;
-     GEOMImpl_ILocalOperations*     myLocalOperations;
-     GEOMImpl_IHealingOperations*   myHealingOperations;*/
+
     GEOMImpl_IShapesOperations* m_shapesOperations;
     GEOMImpl_IGroupOperations* m_groupOperations;
 
@@ -59,10 +44,14 @@ public:
     Standard_EXPORT GEOMImpl_IImportExportOperations(GEOM_Engine* engine, int docID);
     Standard_EXPORT ~GEOMImpl_IImportExportOperations();
 
-    Standard_EXPORT bool ExportXAO (Handle(GEOM_Object) shape,
-            const std::string fileName,
+    Standard_EXPORT bool ExportXAO (const std::string fileName,
+            Handle(GEOM_Object) shape,
             std::list<Handle(GEOM_Object)> groupList,
             std::list<Handle(GEOM_Object)> fieldList);
+//    Standard_EXPORT bool ImportXAO (const std::string fileName,
+//            Handle(GEOM_Object) shape,
+//            std::list<Handle(GEOM_Object)> groupList,
+//            std::list<Handle(GEOM_Object)> fieldList);
     /*@@ insert new functions before this line @@ do not remove this line @@*/
 };
 #endif
index 5621e006be225a7fcb4673f622db7a6140c53625..e9c257a4868276f8840de1a07d22c6c8af1a2b0e 100644 (file)
  *   constructor:
  */
 //=============================================================================
-GEOM_IImportExportOperations_i::GEOM_IImportExportOperations_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, ::GEOMImpl_IImportExportOperations* theImpl)
-:GEOM_IOperations_i(thePOA, theEngine, theImpl)
+GEOM_IImportExportOperations_i::GEOM_IImportExportOperations_i(PortableServer::POA_ptr thePOA,
+        GEOM::GEOM_Gen_ptr theEngine, ::GEOMImpl_IImportExportOperations* theImpl)
+:
+        GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
-  MESSAGE("GEOM_IImportExportOperations_i::GEOM_IImportExportOperations_i");
+    MESSAGE("GEOM_IImportExportOperations_i::GEOM_IImportExportOperations_i");
 }
 
 //=============================================================================
@@ -49,55 +51,74 @@ GEOM_IImportExportOperations_i::GEOM_IImportExportOperations_i(PortableServer::P
 //=============================================================================
 GEOM_IImportExportOperations_i::~GEOM_IImportExportOperations_i()
 {
-  MESSAGE("GEOM_IImportExportOperations_i::~GEOM_IImportExportOperations_i");
+    MESSAGE("GEOM_IImportExportOperations_i::~GEOM_IImportExportOperations_i");
 }
 
 //=============================================================================
 /*!
  *  Export a shape to XAO Format
- *  \param theExportingShape Shape to export
- *  \param theFileName The name of the exported file
- *  \param thelGroups List of groups to export
- *  \param thelFields List of fields to export
- *  \return New GEOM_Object, containing the created shape.
+ *  \param fileName The name of the exported file
+ *  \param shape The shape to export
+ *  \param groups The list of groups to export
+ *  \param fields The list of fields to export
+ *  \return boolean indicating if export was succeful.
  */
 //=============================================================================
-CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO (GEOM::GEOM_Object_ptr theExportingShape, const char* theFileName, const GEOM::ListOfGO& thelGroups, const GEOM::ListOfGO& thelFields)
+CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
+        GEOM::GEOM_Object_ptr shape, const GEOM::ListOfGO& groups, const GEOM::ListOfGO& fields)
 {
-  bool isGood = false;
-  //Set a not done flag
-  GetOperations()->SetNotDone();
-  
-  // Get the reference shape
-  Handle(GEOM_Object) aReference = GetObjectImpl(theExportingShape);
-  
-  //Get the reference groups
-  int ind = 0;
-  int aLenGroup = thelGroups.length();
-  std::list<Handle(GEOM_Object)> aGroups;
-  for (; ind < aLenGroup; ind++) {
-    Handle(GEOM_Object) aGroup = GetObjectImpl(thelGroups[ind]);
-    if (aGroup.IsNull()) return false;
-    aGroups.push_back(aGroup);
-  }
-  
-  //Get the reference point
-  ind = 0;
-  int aLenField = thelFields.length();
-  std::list<Handle(GEOM_Object)> aFields;
-  for (; ind < aLenField; ind++) {
-    Handle(GEOM_Object) aField = GetObjectImpl(thelFields[ind]);
-    if (aField.IsNull()) return false;
-    aFields.push_back(aField);
-  }
-  
-  if (!aReference.IsNull())
-  {
-    // Export XAO
-    isGood = GetOperations()->ExportXAO(aReference, theFileName, aGroups, aFields);
-  }
+    bool isGood = false;
+    //Set a not done flag
+    GetOperations()->SetNotDone();
 
-  return isGood;
+    // Get the reference shape
+    Handle(GEOM_Object) reference = GetObjectImpl(shape);
+
+    //Get the reference groups
+    int ind = 0;
+    std::list<Handle(GEOM_Object)> groupsObj;
+    for (; ind < groups.length(); ind++)
+    {
+        Handle(GEOM_Object) gobj = GetObjectImpl(groups[ind]);
+        if (gobj.IsNull()) return false;
+        groupsObj.push_back(gobj);
+    }
+
+    //Get the reference point
+    ind = 0;
+    std::list<Handle(GEOM_Object)> fieldsObj;
+    for (; ind < fields.length(); ind++)
+    {
+        Handle(GEOM_Object) fobj = GetObjectImpl(fields[ind]);
+        if (fobj.IsNull()) return false;
+        fieldsObj.push_back(fobj);
+    }
+
+    if (!reference.IsNull())
+    {
+        // Export XAO
+        isGood = GetOperations()->ExportXAO(fileName, reference, groupsObj, fieldsObj);
+    }
+
+    return isGood;
 }
 
+//=============================================================================
+/*!
+ *  Import a shape from XAO Format
+ *  \param fileName The name of the imported file
+ *  \param shape The imported shape
+ *  \param groups The list of imported groups
+ *  \param fields The list of imported fields
+ *  \return boolean indicating if import was succeful.
+ */
+//=============================================================================
+//bool GEOMImpl_IImportExportOperations::ImportXAO(const std::string fileName,
+//        Handle(GEOM_Object),
+//        std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > groups,
+//        std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > fields)
+//{
+//    return true;
+//}
+
 /*@@ insert new functions before this line @@ do not remove this line @@*/
index dbcc9f7a277b29d88a6d703cafb39f3bd4ddbdd5..f47460bd8ae1013acb521a4d277e6a1163ad6152 100644 (file)
 #include "GEOMImpl_IImportExportOperations.hxx"
 
 class GEOM_I_EXPORT GEOM_IImportExportOperations_i :
-    public virtual POA_GEOM::GEOM_IImportExportOperations,
-    public virtual GEOM_IOperations_i
+public virtual POA_GEOM::GEOM_IImportExportOperations,
+public virtual GEOM_IOperations_i
 {
- public:
-  GEOM_IImportExportOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine,
-                           ::GEOMImpl_IImportExportOperations* theImpl);
-  ~GEOM_IImportExportOperations_i();
-
-  CORBA::Boolean ExportXAO (GEOM::GEOM_Object_ptr theExportingShape, const char* theFileName, const GEOM::ListOfGO& thelGroups, const GEOM::ListOfGO& thelFields);
-  /*@@ insert new functions before this line @@ do not remove this line @@*/
-
-  ::GEOMImpl_IImportExportOperations* GetOperations()
-  { return (::GEOMImpl_IImportExportOperations*)GetImpl(); }
+public:
+    GEOM_IImportExportOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine,
+            ::GEOMImpl_IImportExportOperations* theImpl);
+    ~GEOM_IImportExportOperations_i();
+
+    CORBA::Boolean ExportXAO (const char* fileName,
+            GEOM::GEOM_Object_ptr shape,
+            const GEOM::ListOfGO& groups,
+            const GEOM::ListOfGO& fields);
+    CORBA::Boolean ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape,
+            GEOM::ListOfGO_out groups,
+            GEOM::ListOfGO_out fields);
+    /*@@ insert new functions before this line @@ do not remove this line @@*/
+
+    ::GEOMImpl_IImportExportOperations* GetOperations()
+    {   return (::GEOMImpl_IImportExportOperations*)GetImpl();}
 };
 
 #endif
index f6905d3b173ab80de973236094d916d7371f2c26..6846808ac10a81a296496193379fd7ece7e6b715 100644 (file)
@@ -3451,18 +3451,19 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR,
 //=============================================================================
 //  ExportXAO
 //=============================================================================
-CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr theExportingShape, const char* theFileName, GEOM::GEOM_List_ptr thelGroups, GEOM::GEOM_List_ptr thelFields)
+CORBA::Boolean GEOM_Superv_i::ExportXAO (const char* fileName, GEOM::GEOM_Object_ptr shape,
+        GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields)
 {
   beginService( " GEOM_Superv_i::ExportXAO" );
   MESSAGE("GEOM_Superv_i::ExportXAO");
   getImportExportOp();
-  if (GEOM_List_i<GEOM::ListOfGO>* aListImplG =
-      dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelGroups, myPOA).in()))
+  if (GEOM_List_i<GEOM::ListOfGO>* groupList =
+      dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(groups, myPOA).in()))
   {
-    if (GEOM_List_i<GEOM::ListOfGO>* aListImplF =
-        dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelFields, myPOA).in()))
+    if (GEOM_List_i<GEOM::ListOfGO>* fieldList =
+        dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(fields, myPOA).in()))
     {
-      CORBA::Boolean isGood = myImportExportOp->ExportXAO(theExportingShape, theFileName, aListImplG->GetList(), aListImplF->GetList());
+      CORBA::Boolean isGood = myImportExportOp->ExportXAO(fileName, shape, groupList->GetList(), fieldList->GetList());
       endService( " GEOM_Superv_i::ExportXAO" );
       return isGood;
     }
@@ -3470,6 +3471,15 @@ CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr theExportingShape
   endService( " GEOM_Superv_i::ExportXAO" );
   return false;
 }
+
+//=============================================================================
+//  ImportXAO
+//=============================================================================
+//CORBA::Boolean GEOM_Superv_i::ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape,
+//        GEOM::GEOM_List_out groups, GEOM::GEOM_List_out fields)
+//{
+//  return false;
+//}
 /*@@ insert new functions before this line @@ do not remove this line @@*/
 
 //=====================================================================================
index bd6b4cf85351180e6bc60ca7793f7cfec13cc215..f66cfbcf5aadf809d133326d80dc2301424bf12a 100644 (file)
@@ -715,7 +715,10 @@ public:
   //-----------------------------------------------------------//
   // ImportExport Operations                                   //
   //-----------------------------------------------------------//
-  CORBA::Boolean ExportXAO (GEOM::GEOM_Object_ptr theExportingShape, const char* theFileName, GEOM::GEOM_List_ptr thelGroups, GEOM::GEOM_List_ptr thelFields);
+  CORBA::Boolean ExportXAO(const char* fileName,
+          GEOM::GEOM_Object_ptr shape, GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields);
+//  CORBA::Boolean ImportXAO(const char* fileName, GEOM::GEOM_Object_out shape,
+//          GEOM::GEOM_List_out groups, GEOM::GEOM_List_out fields);
   /*@@ insert new functions before this line @@ do not remove this line @@*/
 
 private:
index f515c9e1b48550eab8243df1d870d3ba189a0612..00c0fa5e180b6e668fcd928f88a69050b9e07799 100644 (file)
@@ -9074,16 +9074,16 @@ class geompyDC(GEOM._objref_GEOM_Gen):
             return anObj
 
         ## Export a shape to XAO Format
-        #  @param theExportingShape Shape to export
-        #  @param theFileName The name of the exported file
-        #  @param thelGroups List of groups to export
-        #  @param thelFields List of fields to export
-        #  @return New GEOM_Object, containing the created shape.
+        #  @param shape Shape to export
+        #  @param fileName The name of the exported file
+        #  @param groups List of groups to export
+        #  @param fields List of fields to export
+        #  @return boolean
         #
         #  @ref tui_creation_exportxao "Example"
-        def ExportXAO(self, theExportingShape, theFileName, thelGroups, thelFields):
-            theExportingShape, theFileName, thelGroups, thelFields, Parameters = ParseParameters(theExportingShape, theFileName, thelGroups, thelFields)
-            isGood = self.ImpExpOp.ExportXAO(theExportingShape, theFileName, thelGroups, thelFields)
+        def ExportXAO(self, fileName, shape, groups, fields):
+            fileName, shape, groups, fields, Parameters = ParseParameters(fileName, shape, groups, fields)
+            isGood = self.ImpExpOp.ExportXAO(fileName, shape, groups, fields)
             RaiseIfFailed("ExportXAO", self.ImpExpOp)
             #if Parameters: anObj.SetParameters(Parameters)
             return isGood
index a79265304ed58bc790efb78c1032c0defc482c6d..b6b1bb9f3194e3be10ed87786963ce07ee0c2463 100644 (file)
@@ -71,6 +71,8 @@ bool ImportExportGUI::OnGUIEvent(int commandId, SUIT_Desktop* parent)
         case GEOMOp::OpExportXAO:
             dialog = new ImportExportGUI_ExportXAODlg(getGeometryGUI(), parent);
             break;
+        case GEOMOp::OpImportXAO:
+            break;
             //@@ insert new functions before this line @@ do not remove this line @@ do not remove this line @@//
         default:
             app->putInfo(tr("GEOM_PRP_COMMAND").arg(commandId));
index 4e069442d7623b0eaa64d744a07e41a798065407..845f74243d86150ee40d1f52cecc5cb1481c2472 100644 (file)
@@ -30,6 +30,7 @@
 #include <QLineEdit>
 #include <QButtonGroup>
 #include <QListWidget>
+#include <QFileDialog>
 #include <QMap>
 //#include <ui_ImportExportGUI_1Sel1LineEdit2ListWidget_QTD.h>
 
@@ -54,7 +55,7 @@ ImportExportGUI_ExportXAODlg::ImportExportGUI_ExportXAODlg(GeometryGUI* geometry
     m_mainObj = GEOM::GEOM_Object::_nil();
 
     SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
-    QPixmap imageOp(resMgr->loadPixmap("GEOM", tr("ICON_DLG_EXPORTXAO_EXPORTINGSHAPE_FILENAME_LGROUPS_LFIELDS")));
+    QPixmap imageOp(resMgr->loadPixmap("GEOM", tr("ICON_DLG_EXPORTXAO")));
     QPixmap iconSelect(resMgr->loadPixmap("GEOM", tr("ICON_SELECT")));
 
     setWindowTitle(tr("GEOM_EXPORTXAO_TITLE"));
@@ -67,57 +68,76 @@ ImportExportGUI_ExportXAODlg::ImportExportGUI_ExportXAODlg(GeometryGUI* geometry
     mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose);
     mainFrame()->RadioButton3->close();
 
+    // hide name
+    mainFrame()->GroupBoxName->hide();
+
+    //****************************
+    // Selection Group box
     QGroupBox* gbxExport = new QGroupBox(parent);
 
-    QGridLayout *gridLayoutExport = new QGridLayout(gbxExport);
+    QGridLayoutgridLayoutExport = new QGridLayout(gbxExport);
 #ifndef Q_OS_MAC
     gridLayoutExport->setSpacing(6);
-#endif
-#ifndef Q_OS_MAC
     gridLayoutExport->setContentsMargins(9, 9, 9, 9);
 #endif
     gridLayoutExport->setObjectName(QString::fromUtf8("gridLayoutExport"));
 
-    //****************************
-    QLabel* txtLabel1 = new QLabel(tr("GEOM_EXPORTXAO_EXPORTINGSHAPE"), gbxExport);
-    gridLayoutExport->addWidget(txtLabel1, 0, 0, 1, 1);
-
-    btnSelect = new QPushButton(gbxExport);
-    btnSelect->setIcon(iconSelect);
-    gridLayoutExport->addWidget(btnSelect, 0, 1, 1, 1);
-
+    // Line 0
+    QLabel* lblShape = new QLabel(tr("GEOM_EXPORTXAO_EXPORTINGSHAPE"), gbxExport);
+    btnShapeSelect = new QPushButton(gbxExport);
+    btnShapeSelect->setIcon(iconSelect);
     ledShape = new QLineEdit(gbxExport);
     ledShape->setMinimumSize(QSize(100, 0));
-    gridLayoutExport->addWidget(ledShape, 0, 2, 1, 1);
 
-    //****************************
-    QLabel* txtLabel2 = new QLabel(tr("GEOM_EXPORTXAO_FILENAME"), gbxExport);
-    gridLayoutExport->addWidget(txtLabel2, 1, 0, 1, 1);
+    gridLayoutExport->addWidget(lblShape, 0, 0, 1, 1);
+    gridLayoutExport->addWidget(btnShapeSelect, 0, 1, 1, 1);
+    gridLayoutExport->addWidget(ledShape, 0, 2, 1, 1);
 
+    // Line 1
+    QLabel* lblFileName = new QLabel(tr("GEOM_EXPORTXAO_FILENAME"), gbxExport);
+    btnFileSelect = new QPushButton(gbxExport);
     ledFileName = new QLineEdit(gbxExport);
-    gridLayoutExport->addWidget(ledFileName, 1, 1, 1, 2);
+    btnFileSelect->setText("...");
+
+    gridLayoutExport->addWidget(lblFileName, 1, 0, 1, 1);
+    gridLayoutExport->addWidget(btnFileSelect, 1, 1, 1, 1);
+    gridLayoutExport->addWidget(ledFileName, 1, 2, 1, 1);
 
     //****************************
-    QLabel* txtLabel3 = new QLabel(tr("GEOM_EXPORTXAO_LGROUPS"), gbxExport);
-    gridLayoutExport->addWidget(txtLabel3, 2, 0, 1, 2);
+    // Filter Group box
+    QGroupBox* gbxFilter = new QGroupBox(parent);
+
+    QGridLayout* gridLayoutFilter = new QGridLayout(gbxFilter);
+#ifndef Q_OS_MAC
+    gridLayoutFilter->setSpacing(6);
+    gridLayoutFilter->setContentsMargins(9, 9, 9, 9);
+#endif
+    gridLayoutFilter->setObjectName(QString::fromUtf8("gbxFilter"));
+
+    // Line 0
+    QLabel* lblGroups = new QLabel(tr("GEOM_EXPORTXAO_LGROUPS"), gbxFilter);
+    QLabel* lblFields = new QLabel(tr("GEOM_EXPORTXAO_LFIELDS"), gbxFilter);
 
-    lstGroups = new QListWidget(gbxExport);
-    gridLayoutExport->addWidget(lstGroups, 3, 0, 1, 2);
+    gridLayoutFilter->addWidget(lblGroups, 0, 0, 1, 1);
+    gridLayoutFilter->addWidget(lblFields, 0, 1, 1, 1);
 
-    QLabel* txtLabel4 = new QLabel(tr("GEOM_EXPORTXAO_LFIELDS"), gbxExport);
-    gridLayoutExport->addWidget(txtLabel4, 2, 2, 1, 1);
+    // Line 1
+    lstGroups = new QListWidget(gbxFilter);
+    lstGroups->setSelectionMode(QAbstractItemView::ExtendedSelection);
+    lstFields = new QListWidget(gbxFilter);
+    lstFields   ->setSelectionMode(QAbstractItemView::ExtendedSelection);
 
-    lstFields = new QListWidget(gbxExport);
-    gridLayoutExport->addWidget(lstFields, 3, 2, 1, 1);
+    gridLayoutFilter->addWidget(lstGroups, 1, 0, 1, 1);
+    gridLayoutFilter->addWidget(lstFields, 1, 1, 1, 1);
 
+    //****************************
     QVBoxLayout* layout = new QVBoxLayout(centralWidget());
     layout->setMargin(0);
     layout->setSpacing(6);
     layout->addWidget(gbxExport);
+    layout->addWidget(gbxFilter);
 
-    //QWidget::setTabOrder(PushButton1, LineEdit1);
-    //QWidget::setTabOrder(LineEdit1, LineEdit2);
-
+    // set help
     setHelpFileName("create_exportxao_page.html");
 
     Init();
@@ -145,10 +165,13 @@ void ImportExportGUI_ExportXAODlg::Init()
     connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
     connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
 
-    connect(btnSelect, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+    connect(btnShapeSelect, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
     connect(((SalomeApp_Application*) (SUIT_Session::session()->activeApplication()))->selectionMgr(),
             SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
 
+    connect(btnFileSelect, SIGNAL(clicked()), this, SLOT(btnFileSelectClicked()));
+
+
     initName(tr("GEOM_EXPORTXAO"));
     SelectionIntoArgument();
 }
@@ -159,22 +182,33 @@ void ImportExportGUI_ExportXAODlg::Init()
 //=================================================================================
 void ImportExportGUI_ExportXAODlg::processObject()
 {
+    lstGroups->clear();
+    lstFields->clear();
+    m_groups.clear();
+    m_fields.clear();
+
     if (m_mainObj->_is_nil())
     {
         ledShape->setText("");
-        ledFileName->setText("");
     }
     else
     {
         ledShape->setText(GEOMBase::GetName(m_mainObj));
         GEOM::GEOM_IShapesOperations_var shapeOp = getGeomEngine()->GetIShapesOperations(getStudyId());
-        GEOM::ListOfGO_var groups = shapeOp->GetExistingSubObjects(m_mainObj, true);
+
         // add groups names
+        GEOM::ListOfGO_var groups = shapeOp->GetExistingSubObjects(m_mainObj, true);
         for (int i = 0, n = groups->length(); i < n; i++)
         {
-            lstGroups->addItem(GEOMBase::GetName(groups[i]));
+            QListWidgetItem* item = new QListWidgetItem();
+            item->setData(Qt::UserRole, QVariant(i));
+            item->setText(GEOMBase::GetName(groups[i]));
+            lstGroups->addItem(item);
             m_groups.append(GEOM::GeomObjPtr(groups[i].in()));
         }
+        lstGroups->sortItems(Qt::AscendingOrder);
+
+        // TODO: add fields
     }
 }
 
@@ -214,20 +248,11 @@ void ImportExportGUI_ExportXAODlg::SelectionIntoArgument()
     SALOME_ListIO selList;
     selMgr->selectedObjects(selList);
 
-    if (selList.Extent() != 1)
+    if (selList.Extent() == 1)
     {
-        processObject();
-        return;
+        m_mainObj = GEOMBase::ConvertIOinGEOMObject(selList.First());
     }
 
-    /*GEOM::GEOM_Object_var aSelectedObject*/m_mainObj = GEOMBase::ConvertIOinGEOMObject(selList.First());
-
-    /*if ( aSelectedObject->_is_nil() ) {
-     processObject();
-     return;
-     }*/
-
-    //myMainObj = aSelectedObject;
     processObject();
 }
 
@@ -241,6 +266,20 @@ void ImportExportGUI_ExportXAODlg::SetEditCurrentArgument()
     myEditCurrentArgument = ledShape;
     SelectionIntoArgument();
 }
+
+//=================================================================================
+// function : btnFileSelectClicked()
+// purpose  :
+//=================================================================================
+void ImportExportGUI_ExportXAODlg::btnFileSelectClicked()
+{
+    QString selFile = QFileDialog::getSaveFileName(this, tr("GEOM_SELECT_XAO"), QString(), tr("XAO_FILES"));
+    if (!selFile.isEmpty())
+    {
+        ledFileName->setText(selFile);
+    }
+}
+
 //=================================================================================
 // function : ActivateThisDialog()
 // purpose  :
@@ -275,11 +314,15 @@ GEOM::GEOM_IOperations_ptr ImportExportGUI_ExportXAODlg::createOperation()
 //=================================================================================
 bool ImportExportGUI_ExportXAODlg::isValid(QString& msg)
 {
-    bool ok = true;
+    // check shape
+    if (ledShape->text().isEmpty())
+        return false;
 
-    //@@ add custom validation actions here @@//
+    // check file name
+    if (ledFileName->text().isEmpty())
+        return false;
 
-    return ok;
+    return true;
 }
 
 //=================================================================================
@@ -290,23 +333,33 @@ bool ImportExportGUI_ExportXAODlg::execute(ObjectList& objects)
 {
     bool res = false;
 
-    GEOM::GEOM_Object_var obj;
-
-    GEOM::GEOM_IImportExportOperations_var ieOp = GEOM::GEOM_IImportExportOperations::_narrow(getOperation());
-    GEOM::GEOM_IShapesOperations_var shapesOp = getGeomEngine()->GetIShapesOperations(getStudyId());
-    GEOM::ListOfGO_var groups = shapesOp->GetExistingSubObjects(m_mainObj, true);
+    // get selected groups
+    QList<QListWidgetItem*> selGroups = lstGroups->selectedItems();
+    GEOM::ListOfGO_var groups = new GEOM::ListOfGO();
+    groups->length(selGroups.count());
+    int i = 0;
+     for (QList<QListWidgetItem*>::iterator it = selGroups.begin(); it != selGroups.end(); ++it)
+     {
+         QListWidgetItem* item = (*it);
+         int index = item->data(Qt::UserRole).toInt();
+         groups[i++] = m_groups[index].copy();
+     }
+
+     // get selected fields
+     QList<QListWidgetItem*> selFields = lstFields->selectedItems();
     GEOM::ListOfGO_var fields = new GEOM::ListOfGO();
-
-    groups->length(m_groups.count());
-    for (int i = 0; i < m_groups.count(); i++)
-        groups[i] = m_groups[i].copy();
-
     fields->length(m_fields.count());
-    for (int i = 0; i < m_fields.count(); i++)
-        fields[i] = m_fields[i].copy();
+    for (QList<QListWidgetItem*>::iterator it = selFields.begin(); it != selFields.end(); ++it)
+    {
+        QListWidgetItem* item = (*it);
+        int index = item->data(Qt::UserRole).toInt();
+        fields[i++] = m_fields[index].copy();
+    }
 
     // call engine function
-    res = ieOp->ExportXAO(m_mainObj, ledFileName->text().toStdString().c_str(), groups, fields);
+    GEOM::GEOM_IImportExportOperations_var ieOp = GEOM::GEOM_IImportExportOperations::_narrow(getOperation());
+    res = ieOp->ExportXAO(ledFileName->text().toStdString().c_str(),
+            m_mainObj, groups, fields);
 
     return res;
 }
index c0c2126735a7cf2187a292d6e2b57776ca4c3ce3..60f5b92adf86ff9ade707f5eb102da0923956527 100644 (file)
@@ -59,7 +59,8 @@ private:
     QLineEdit* ledFileName;
     QListWidget* lstGroups;
     QListWidget* lstFields;
-    QPushButton* btnSelect;
+    QPushButton* btnShapeSelect;
+    QPushButton* btnFileSelect;
 
 private slots:
     void ClickOnOk();
@@ -68,6 +69,7 @@ private slots:
     void LineEditReturnPressed();
     void SelectionIntoArgument();
     void SetEditCurrentArgument();
+    void btnFileSelectClicked();
 };
 
 #endif // IMPORTEXPORTGUI_EXPORTXAODLG_H
index 873ea299c5ecf0c26f49724144ac82a526992a26..0ca45f805dcd89ee7f6dac3d3d2ba1f212ca8ed4 100644 (file)
@@ -35,12 +35,13 @@ if GEOM_ENABLE_GUI
              DisplayGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI \
              BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI    \
              GroupGUI BlocksGUI AdvancedGUI ImportExportGUI GEOM_SWIG_WITHIHM
-endif
 
 if CPPUNIT_IS_OK
   SUBDIRS += XAO/tests
 endif
 
+endif
+
 DIST_SUBDIRS = ARCHIMEDE NMTDS NMTTools GEOMAlgo \
                SKETCHER OCC2VTK GEOM BREPExport \
                BREPImport IGESExport IGESImport STEPExport STEPImport STLExport \