Salome HOME
Merge from rnv/geom_plugin_imp branch
authorvsr <vsr@opencascade.com>
Wed, 27 May 2015 09:05:29 +0000 (12:05 +0300)
committervsr <vsr@opencascade.com>
Wed, 27 May 2015 13:53:23 +0000 (16:53 +0300)
64 files changed:
CMakeLists.txt
DXFPLUGIN_version.h.in [deleted file]
DXFPlugin_version.h.in [new file with mode: 0644]
INSTALL
README
SalomeDXFPLUGINConfig.cmake.in
adm_local/cmake_files/FindDXF.cmake
doc/CMakeLists.txt [new file with mode: 0755]
doc/salome/CMakeLists.txt [new file with mode: 0755]
doc/salome/examples/CMakeLists.txt [new file with mode: 0644]
doc/salome/examples/DXFPlugindemo.py [new file with mode: 0644]
doc/salome/gui/CMakeLists.txt [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/CMakeLists.txt [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/doxyfile.in [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/doxyfile_py.in [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/images/export_dxf.png [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/images/head.png [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/images/import_dxf.png [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/input/index.doc [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/static/footer.html [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/static/header.html.in [new file with mode: 0755]
doc/salome/gui/DXFPLUGIN/static/header_py.html.in [new file with mode: 0644]
doc/salome/gui/DXFPLUGIN/static/salome_extra.css [new file with mode: 0644]
idl/CMakeLists.txt [new file with mode: 0755]
idl/DXFPlugin.idl [new file with mode: 0644]
resources/CMakeLists.txt
resources/DXFPlugin.xml [new file with mode: 0644]
resources/ImportExport [deleted file]
resources/SalomeApp.xml [new file with mode: 0644]
src/CMakeLists.txt
src/DXFExport/CMakeLists.txt [deleted file]
src/DXFExport/DXFExport.cxx [deleted file]
src/DXFImport/CMakeLists.txt [deleted file]
src/DXFImport/DXFImport.cxx [deleted file]
src/DXFPluginBuilder.py [new file with mode: 0644]
src/DXFPlugin_Engine.cxx [new file with mode: 0644]
src/DXFPlugin_Engine.hxx [new file with mode: 0755]
src/DXFPlugin_ExportDriver.cxx [new file with mode: 0644]
src/DXFPlugin_ExportDriver.hxx [new file with mode: 0644]
src/DXFPlugin_GUI.cxx [new file with mode: 0644]
src/DXFPlugin_GUI.h [new file with mode: 0644]
src/DXFPlugin_IECallBack.cxx [new file with mode: 0755]
src/DXFPlugin_IECallBack.hxx [new file with mode: 0644]
src/DXFPlugin_IExport.hxx [new file with mode: 0644]
src/DXFPlugin_IImport.hxx [new file with mode: 0644]
src/DXFPlugin_IOperations.cxx [new file with mode: 0644]
src/DXFPlugin_IOperations.hxx [new file with mode: 0644]
src/DXFPlugin_IOperations_i.cc [new file with mode: 0644]
src/DXFPlugin_IOperations_i.hh [new file with mode: 0644]
src/DXFPlugin_ImportDriver.cxx [new file with mode: 0644]
src/DXFPlugin_ImportDriver.hxx [new file with mode: 0644]
src/DXFPlugin_OperationsCreator.cxx [new file with mode: 0644]
src/DXFPlugin_OperationsCreator.hxx [new file with mode: 0755]
src/DXFPlugin_license.h.in [new file with mode: 0644]
src/__init__.py [new file with mode: 0644]
src/common/CMakeLists.txt [deleted file]
src/common/DXFPLUGIN_exports.h [deleted file]
src/common/DXFPLUGIN_license.h.in [deleted file]
src/resources/DXFPlugin_msg_en.ts [new file with mode: 0644]
src/resources/DXFPlugin_msg_fr.ts [new file with mode: 0644]
src/resources/DXFPlugin_msg_ja.ts [new file with mode: 0644]

index ef7537a9668675dd07e6352fa426c347a4c510b6..689dadc13af17825b2eede6a4fdf85ea8c47758f 100644 (file)
@@ -29,7 +29,7 @@ CMAKE_POLICY(SET CMP0003 NEW)
 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
 
 SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7)
-SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
+SET(${PROJECT_NAME_UC}_MINOR_VERSION 4)
 SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
 SET(${PROJECT_NAME_UC}_VERSION
   ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
@@ -42,6 +42,7 @@ IF(EXISTS ${KERNEL_ROOT_DIR})
   LIST(APPEND CMAKE_MODULE_PATH "${KERNEL_ROOT_DIR}/salome_adm/cmake_files")
   INCLUDE(SalomeMacros)
   FIND_PACKAGE(SalomeKERNEL REQUIRED)
+  KERNEL_WITH_CORBA() #check whether KERNEL builded with CORBA
   ADD_DEFINITIONS(${KERNEL_DEFINITIONS})
   INCLUDE_DIRECTORIES(${KERNEL_INCLUDE_DIRS})
 ELSE(EXISTS ${KERNEL_ROOT_DIR})
@@ -56,9 +57,38 @@ SET(BUILD_SHARED_LIBS TRUE)
 # Local macros:
 LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/adm_local/cmake_files")
 
+# Find GEOM
+# ===========
+SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR} CACHE PATH "Path to the Salome GEOM")
+IF(EXISTS ${GEOM_ROOT_DIR})
+  LIST(APPEND CMAKE_MODULE_PATH "${GEOM_ROOT_DIR}/adm_local/cmake_files")
+  FIND_PACKAGE(SalomeGEOM REQUIRED)
+  ADD_DEFINITIONS(${GEOM_DEFINITIONS})
+  INCLUDE_DIRECTORIES(${GEOM_INCLUDE_DIRS})
+ELSE(EXISTS ${GEOM_ROOT_DIR})
+  MESSAGE(FATAL_ERROR "We absolutely need a Salome GEOM, please define GEOM_ROOT_DIR")
+ENDIF(EXISTS ${GEOM_ROOT_DIR})
+
+SET(SALOME_BUILD_GUI ${SALOME_GEOM_BUILD_GUI})
+
+# Find GUI(optional)
+IF(SALOME_BUILD_GUI)
+  SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI")
+  IF(EXISTS ${GUI_ROOT_DIR})
+    LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files")
+    FIND_PACKAGE(SalomeGUI)
+    FULL_GUI(FALSE) #check whether GUI builded in full mode and with CORBA
+    ADD_DEFINITIONS(${GUI_DEFINITIONS})
+    INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS})
+  ELSE(EXISTS ${GUI_ROOT_DIR})
+    MESSAGE(STATUS "GUI_ROOT_DIR is not well defined, DXFPLUGIN will be built without GUI!!!")
+  ENDIF(EXISTS ${GUI_ROOT_DIR})
+  SALOME_LOG_OPTIONAL_PACKAGE(SalomeGUI SALOME_BUILD_GUI)
+ENDIF(SALOME_BUILD_GUI)
+
 # User options
 # ============
-#OPTION(SALOME_BUILD_DOC "Generate SALOME DXFPLUGIN documentation" ON) #for use in the future
+OPTION(SALOME_BUILD_DOC "Generate SALOME DXFPLUGIN documentation" ON)
 OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON)
 
 IF(SALOME_BUILD_TESTS)
@@ -70,7 +100,7 @@ OPTION(DXF_WRITE_LICENSE "DXF write license key" "")
 
 IF(DXF_READ_LICENSE OR DXF_WRITE_LICENSE)
   IF(NOT DXF_READ_LICENSE)
-    MESSAGE(WARNING "DXF read license keys are not specified! Runtime license will be required!")
+    MESSAGE(WARNING "DXF read license key is not specified! Runtime license will be required!")
   ELSEIF(NOT DXF_WRITE_LICENSE)
     MESSAGE(WARNING "DXF write license key is not specified! Runtime license will be required!") 
   ENDIF() 
@@ -83,8 +113,18 @@ ENDIF()
 ## DXFPLUGIN specifics
 ##
 
+FIND_PACKAGE(SalomePython REQUIRED)
 FIND_PACKAGE(SalomeCAS REQUIRED)
 FIND_PACKAGE(SalomeDXF REQUIRED)
+FIND_PACKAGE(SalomeOmniORB REQUIRED)
+FIND_PACKAGE(SalomeOmniORBPy REQUIRED)
+IF(SALOME_BUILD_GUI)
+  FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui)
+ENDIF()
+IF(SALOME_BUILD_DOC)
+  FIND_PACKAGE(SalomeDoxygen)
+  SALOME_LOG_OPTIONAL_PACKAGE(Doxygen SALOME_BUILD_DOC)
+ENDIF()
 
 # Directories
 # ===========
@@ -95,6 +135,7 @@ SET(SALOME_INSTALL_CMAKE_LOCAL adm_local/cmake_files CACHE PATH
     "Install path: local SALOME CMake files")
 SET(SALOME_INSTALL_RES share/salome/resources CACHE PATH "Install path: SALOME resources")
 SET(SALOME_INSTALL_DOC share/doc/salome CACHE PATH "Install path: SALOME documentation")
+SET(SALOME_INSTALL_PYTHON "${SALOME_INSTALL_PYTHON}" CACHE PATH "Install path: SALOME Python stuff")
 
 # Specific to DXFPLUGIN:
 SET(SALOME_DXFPLUGIN_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/dxfplugin" CACHE PATH.
@@ -104,19 +145,23 @@ MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_HEADERS)
 MARK_AS_ADVANCED(SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES SALOME_INSTALL_DOC)
 
 # Accumulate environment variables for DXFPLUGIN module
+SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON})
 SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
 
 # Sources 
 # ========
-
+ADD_SUBDIRECTORY(idl)
 ADD_SUBDIRECTORY(adm_local)
 ADD_SUBDIRECTORY(resources)
 ADD_SUBDIRECTORY(src)
+IF(SALOME_BUILD_DOC)
+  ADD_SUBDIRECTORY(doc)
+ENDIF()
 
 # Header configuration
 # ====================
 SALOME_XVERSION(${PROJECT_NAME})
-SALOME_CONFIGURE_FILE(DXFPLUGIN_version.h.in DXFPLUGIN_version.h)
+SALOME_CONFIGURE_FILE(DXFPlugin_version.h.in DXFPlugin_version.h INSTALL ${SALOME_INSTALL_HEADERS})
 
 # Configuration export
 # (here only the level 1 prerequisites are exposed)
@@ -126,15 +171,23 @@ INCLUDE(CMakePackageConfigHelpers)
 # List of targets in this project we want to make visible to the rest of the world.
 # They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
 SET(_${PROJECT_NAME}_exposed_targets 
-  DXFExport DXFImport
+  SalomeIDLDXFPlugin DXFPluginEngine
 )
 
+IF(SALOME_BUILD_GUI)
+  LIST(APPEND _${PROJECT_NAME}_exposed_targets 
+    DXFPluginGUI
+    )
+ENDIF()
+
 # Add all targets to the build-tree export set
 EXPORT(TARGETS ${_${PROJECT_NAME}_exposed_targets}
   FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake)
 
 # Ensure the variables are always defined for the configure:
 SET(KERNEL_ROOT_DIR "${KERNEL_ROOT_DIR}")
+SET(GUI_ROOT_DIR "${GUI_ROOT_DIR}")
+SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}")
 SET(DXF_ROOT_DIR "${DXF_ROOT_DIR}")
 SET(OCCLICENSE_ROOT_DIR "${OCCLICENSE_ROOT_DIR}")
 
@@ -142,12 +195,12 @@ SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/inc
 
 # Build variables that will be expanded when configuring Salome<MODULE>Config.cmake:
 SALOME_CONFIGURE_PREPARE(DXF)
-                         
+
 CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in
     ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
     INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
     PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE_LOCAL CMAKE_INSTALL_PREFIX
-    KERNEL_ROOT_DIR DXF_ROOT_DIR OCCLICENSE_ROOT_DIR)
+    KERNEL_ROOT_DIR GUI_ROOT_DIR GEOM_ROOT_DIR DXF_ROOT_DIR OCCLICENSE_ROOT_DIR)
 
 WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
     VERSION ${${PROJECT_NAME_UC}_VERSION}
diff --git a/DXFPLUGIN_version.h.in b/DXFPLUGIN_version.h.in
deleted file mode 100644 (file)
index 09c67f8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2014-2015  OPEN CASCADE
-//
-// 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, or (at your option) any later version.
-//
-// 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
-//
-
-#if !defined(__DXFPLUGIN_VERSION_H)
-#define __DXFPLUGIN_VERSION_H
-
-/*!
-  Specify version of SALOME DXFPLUGIN module, as follows
-
-  DXFPLUGIN_VERSION_MAJOR       : (integer) number identifying major version
-  DXFPLUGIN_VERSION_MINOR       : (integer) number identifying minor version
-  DXFPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version
-  DXFPLUGIN_VERSION_STR         : (string)  complete version number "major.minor.maintenance"
-  DXFPLUGIN_VERSION             : (hex)     complete version number (major << 16) + (minor << 8) + maintenance
-  DXFPLUGIN_DEVELOPMENT         : (integer) indicates development version when set to 1
-*/
-
-#define DXFPLUGIN_VERSION_MAJOR       @SALOMEDXFPLUGIN_MAJOR_VERSION@
-#define DXFPLUGIN_VERSION_MINOR       @SALOMEDXFPLUGIN_MINOR_VERSION@
-#define DXFPLUGIN_VERSION_MAINTENANCE @SALOMEDXFPLUGIN_PATCH_VERSION@
-#define DXFPLUGIN_VERSION_STR         "@SALOMEDXFPLUGIN_VERSION@"
-#define DXFPLUGIN_VERSION             @SALOMEDXFPLUGIN_XVERSION@
-#define DXFPLUGIN_DEVELOPMENT         @SALOMEDXFPLUGIN_VERSION_DEV@
-
-#endif // __DXFPLUGIN_VERSION_H
diff --git a/DXFPlugin_version.h.in b/DXFPlugin_version.h.in
new file mode 100644 (file)
index 0000000..09c67f8
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#if !defined(__DXFPLUGIN_VERSION_H)
+#define __DXFPLUGIN_VERSION_H
+
+/*!
+  Specify version of SALOME DXFPLUGIN module, as follows
+
+  DXFPLUGIN_VERSION_MAJOR       : (integer) number identifying major version
+  DXFPLUGIN_VERSION_MINOR       : (integer) number identifying minor version
+  DXFPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version
+  DXFPLUGIN_VERSION_STR         : (string)  complete version number "major.minor.maintenance"
+  DXFPLUGIN_VERSION             : (hex)     complete version number (major << 16) + (minor << 8) + maintenance
+  DXFPLUGIN_DEVELOPMENT         : (integer) indicates development version when set to 1
+*/
+
+#define DXFPLUGIN_VERSION_MAJOR       @SALOMEDXFPLUGIN_MAJOR_VERSION@
+#define DXFPLUGIN_VERSION_MINOR       @SALOMEDXFPLUGIN_MINOR_VERSION@
+#define DXFPLUGIN_VERSION_MAINTENANCE @SALOMEDXFPLUGIN_PATCH_VERSION@
+#define DXFPLUGIN_VERSION_STR         "@SALOMEDXFPLUGIN_VERSION@"
+#define DXFPLUGIN_VERSION             @SALOMEDXFPLUGIN_XVERSION@
+#define DXFPLUGIN_DEVELOPMENT         @SALOMEDXFPLUGIN_VERSION_DEV@
+
+#endif // __DXFPLUGIN_VERSION_H
diff --git a/INSTALL b/INSTALL
index b5dd7c8d21a31d08db0c546e7a481aff6b4f8881..52afaa3a42cbe586402d47cff92c9a3021b02e7e 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -27,7 +27,7 @@ Pre-requisites
 DXF plugin for SALOME Geometry module requires:
 
 - SALOME, at least KERNEL module (http://www.salome-platform.org).
-- Open CASCADE Technology and OCCT DXF XDE Import/Export product
+- Open CASCADE Technology and OCCT DXF Import/Export XDE product
   (http://www.opencascade.org).
 
 ==================
@@ -42,12 +42,12 @@ In order to build the plugin you have to do the following actions:
 
    - for csh:
 
-   % setenv DXF_ROOT_DIR /path/to/the/DXF-6.7.0
+   % setenv DXF_ROOT_DIR /path/to/the/DXF-6.9.0
    % setenv LD_LIBRARY_PATH ${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH}
 
    - for bash:
    
-   % export DXF_ROOT_DIR=/path/to/the/DXF-6.7.0
+   % export DXF_ROOT_DIR=/path/to/the/DXF-6.9.0
    % export LD_LIBRARY_PATH=${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH}
 
    Note, that OCCT DXF XDE product requires OCCT license library.
diff --git a/README b/README
index 9d5343cee31c4eeef45a12be56ef95347bd3d4ab..7ca460d0a7be941fcf0e923aacdb6a8fffa16e2b 100644 (file)
--- a/README
+++ b/README
@@ -58,12 +58,12 @@ Usage
 
    - for csh:
 
-   % setenv DXF_ROOT_DIR /path/to/the/DXF-6.7.0
+   % setenv DXF_ROOT_DIR /path/to/the/DXF-6.9.0
    % setenv LD_LIBRARY_PATH ${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH}
 
    - for bash:
 
-   % export DXF_ROOT_DIR=/path/to/the/DXF-6.7.0
+   % export DXF_ROOT_DIR=/path/to/the/DXF-6.9.0
    % export LD_LIBRARY_PATH=${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH}
 
    * OCCT DXF XDE product requires also an OCCT license library.
index d1726f26b8110c7d529723bd383f477863831a8e..fcb7203df73ce94d227c3dbc7e4700883d1ac00c 100644 (file)
@@ -29,7 +29,7 @@
 # Load the dependencies for the libraries of @PROJECT_NAME@ 
 # (contains definitions for IMPORTED targets). This is only 
 # imported if we are not built as a subproject (in this case targets are already there)
-IF(NOT TARGET DXFExport AND NOT @PROJECT_NAME@_BINARY_DIR)
+IF(NOT TARGET DXFPluginEngine AND NOT @PROJECT_NAME@_BINARY_DIR)
   INCLUDE("@PACKAGE_SALOME_INSTALL_CMAKE_LOCAL@/@PROJECT_NAME@Targets.cmake")
 ENDIF()   
 
@@ -47,11 +47,13 @@ SET(DXFPLUGIN_DEFINITIONS)
 #### Now the specificities
 
 # Options exported by the package:
-#SET(SALOME_DXFPLUGIN_BUILD_DOC   @SALOME_BUILD_DOC@)
+SET(SALOME_DXFPLUGIN_BUILD_DOC   @SALOME_BUILD_DOC@)
 SET(SALOME_DXFPLUGIN_BUILD_TESTS @SALOME_BUILD_TESTS@)
 
 # Level 1 prerequisites:
 SET_AND_CHECK(KERNEL_ROOT_DIR_EXP "@PACKAGE_KERNEL_ROOT_DIR@")
+SET_AND_CHECK(GUI_ROOT_DIR_EXP "@PACKAGE_GUI_ROOT_DIR@")
+SET_AND_CHECK(GEOM_ROOT_DIR_EXP "@PACKAGE_GEOM_ROOT_DIR@")
 SET_AND_CHECK(DXF_ROOT_DIR_EXP "@PACKAGE_DXF_ROOT_DIR@")
 SET_AND_CHECK(OCCLICENSE_ROOT_DIR_EXP "@PACKAGE_OCCLICENSE_ROOT_DIR@")
 
@@ -94,5 +96,6 @@ SET(SALOME_INSTALL_RES "@SALOME_INSTALL_RES@")
 SET(SALOME_INSTALL_DOC "@SALOME_INSTALL_DOC@")
 
 # Exposed DXFPLUGIN targets:
-SET(DXFPLUGIN_DXFExport DXFExport)
-SET(DXFPLUGIN_DXFImport DXFImport)
\ No newline at end of file
+SET(DXFPLUGIN_SalomeIDLDXFPlugin SalomeIDLDXFPlugin)
+SET(DXFPLUGIN_DXFPluginEngine DXFPluginEngine)
+SET(DXFPLUGIN_DXFPluginGUI DXFPluginGUI)
index bfc743506000daa3a126abb60b7bfedb716b4af8..7301c277e8a59f984cf364256a7f0e31f756c0e4 100644 (file)
@@ -49,14 +49,14 @@ ENDIF(OCCTLICENSE_INCLUDE_DIRS)
 
 FIND_LIBRARY(DXF_TKACIS NAMES TKACIS)
 FIND_LIBRARY(DXF_TKDXF NAMES TKDXF)
-FIND_LIBRARY(DXF_TKOCCLicense NAMES TKOCCLicense)
 FIND_LIBRARY(DXF_TKXDEDXF NAMES TKXDEDXF)
+FIND_LIBRARY(DXF_TKOCCLicense NAMES TKOCCLicense)
 
 SET(DXF_LIBRARIES
   ${DXF_TKACIS}
   ${DXF_TKDXF}
-  ${DXF_TKOCCLicense}
   ${DXF_TKXDEDXF}
+  ${DXF_TKOCCLicense}
 )
 
 INCLUDE(FindPackageHandleStandardArgs)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..0fd283b
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+ADD_SUBDIRECTORY(salome)
diff --git a/doc/salome/CMakeLists.txt b/doc/salome/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..9965b85
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+ADD_SUBDIRECTORY(examples)
+ADD_SUBDIRECTORY(gui)
diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7f8577e
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.py")
+INSTALL(FILES ${files} DESTINATION ${SALOME_INSTALL_DOC}/examples/DXFPLUGIN)
diff --git a/doc/salome/examples/DXFPlugindemo.py b/doc/salome/examples/DXFPlugindemo.py
new file mode 100644 (file)
index 0000000..81dbefe
--- /dev/null
@@ -0,0 +1,23 @@
+# Import/Export DXF
+
+import os
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+    
+# - path to the file
+dxfFile = os.path.join(os.getenv("TEMP", "/tmp"), "testExportImportDXF.dxf")
+    
+# - create shape
+box = geompy.MakeBoxDXDYDZ(100, 100, 100)
+
+# - export shape
+geompy.ExportDXF(box, dxfFile)
+
+# - import shape
+shape = geompy.ImportDXF(dxfFile)
+
+# - publish in study
+geompy.addToStudy(shape, "ImportDXF")
diff --git a/doc/salome/gui/CMakeLists.txt b/doc/salome/gui/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..ceb01a0
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+ADD_SUBDIRECTORY(DXFPLUGIN)
diff --git a/doc/salome/gui/DXFPLUGIN/CMakeLists.txt b/doc/salome/gui/DXFPLUGIN/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..6a72dd1
--- /dev/null
@@ -0,0 +1,52 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+SALOME_CONFIGURE_FILE(doxyfile.in doxyfile)
+SALOME_CONFIGURE_FILE(doxyfile_py.in doxyfile_py)
+SALOME_CONFIGURE_FILE(static/header.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header.html)
+SALOME_CONFIGURE_FILE(static/header_py.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header_py.html)
+
+# Generate a temporary python file, needed for the generation of the documentation
+# of the plugin.
+SALOME_ACCUMULATE_ENVIRONMENT(GEOM_PluginsList NOCHECK DXFPlugin)
+SET(_plugins_cmd_options ${GEOM_ROOT_DIR}/bin/salome/collect_geom_methods.py -d -o tmp/geomBuilder.py DXFPlugin)
+SALOME_GENERATE_ENVIRONMENT_SCRIPT(_plugins_cmd env_script "${PYTHON_EXECUTABLE}" "${_plugins_cmd_options}")
+
+SET(kernel_file "$ENV{KERNEL_ROOT_DIR}/bin/salome/prepare_generating_doc.py")
+IF(WIN32)
+  STRING(REPLACE "/" "\\" kernel_file ${kernel_file})
+ENDIF(WIN32)
+
+ADD_CUSTOM_TARGET(usr_docs ${CMAKE_COMMAND} -E make_directory tmp
+  COMMAND ${PYTHON_EXECUTABLE} ${kernel_file} -o tmp/DXFPluginBuilder.py ${CMAKE_SOURCE_DIR}/src/DXFPluginBuilder.py
+  COMMAND ${_plugins_cmd}
+  COMMAND ${DOXYGEN_EXECUTABLE} doxyfile_py
+  COMMAND ${DOXYGEN_EXECUTABLE} doxyfile
+  COMMAND ${CMAKE_COMMAND} -E remove_directory tmp
+  VERBATIM
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target usr_docs)")
+INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DXFPLUGIN DESTINATION ${SALOME_INSTALL_DOC}/gui)
+INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/DXFPLUGIN)
+INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/DXFPLUGIN/dxfpluginpy_doc)
+
+SET(make_clean_files DXFPLUGIN dxfpluginpy_doc.tag)
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
diff --git a/doc/salome/gui/DXFPLUGIN/doxyfile.in b/doc/salome/gui/DXFPLUGIN/doxyfile.in
new file mode 100755 (executable)
index 0000000..3af1e63
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME      = "SALOME DXFPLUGIN User's Guide"
+OUTPUT_DIRECTORY  = DXFPLUGIN
+CREATE_SUBDIRS   = NO
+OUTPUT_LANGUAGE   = English
+TAB_SIZE          = 5
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET             = NO
+WARNINGS          = YES
+
+#---------------------------------------------------------------------------
+#Input related options
+#---------------------------------------------------------------------------
+INPUT             = @CMAKE_CURRENT_SOURCE_DIR@/input
+FILE_PATTERNS     = *.doc
+EXCLUDE           = 
+IMAGE_PATH        = @CMAKE_CURRENT_SOURCE_DIR@/images
+EXAMPLE_PATH      = @CMAKE_SOURCE_DIR@/doc/salome/examples 
+
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML     = YES
+HTML_OUTPUT       = .
+HTML_HEADER       = @CMAKE_CURRENT_BINARY_DIR@/static/header.html
+HTML_FOOTER       = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html
+HTML_EXTRA_STYLESHEET   = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css
+TOC_EXPAND        = YES
+DISABLE_INDEX     = NO
+GENERATE_TREEVIEW = YES
+TREEVIEW_WIDTH    = 300
+
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool...
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = NO
+CLASS_GRAPH            = NO
+COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = NO
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = NO
+INCLUDED_BY_GRAPH      = NO
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = NO
+DIRECTORY_GRAPH        = NO
+DOT_IMAGE_FORMAT       = jpg
+DOT_FONTNAME           = Arial
+DOT_PATH               =.
+DOTFILE_DIRS           =.
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1200
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+
+
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+#SORT related options
+#---------------------------------------------------------------------------
+SORT_GROUP_NAMES = NO
+
+#---------------------------------------------------------------------------
+#LaTeX related option
+#---------------------------------------------------------------------------
+GENERATE_LATEX    = NO
+EXTRA_PACKAGES    = amsmath
+
+#---------------------------------------------------------------------------
+#RTF related options
+#---------------------------------------------------------------------------
+GENERATE_RTF      = NO
+
+#---------------------------------------------------------------------------
+#External reference options
+#---------------------------------------------------------------------------
+
+TAGFILES          = dxfpluginpy_doc.tag=../DXFPLUGIN/dxfpluginpy_doc
+SEARCHENGINE      = YES
+
+#---------------------------------------------------------------------------
+#Custom commands
+#---------------------------------------------------------------------------
+ALIASES += tui_script{1}="\include \1 <a href=\"../../examples/DXFPLUGIN/\1\">Download this script</a>"
diff --git a/doc/salome/gui/DXFPLUGIN/doxyfile_py.in b/doc/salome/gui/DXFPLUGIN/doxyfile_py.in
new file mode 100755 (executable)
index 0000000..46b644e
--- /dev/null
@@ -0,0 +1,160 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME DXFPLUGIN User's Guide"
+OUTPUT_DIRECTORY       = DXFPLUGIN
+CREATE_SUBDIRS        = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = NO
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 5
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = YES
+BUILTIN_STL_SUPPORT    = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = YES
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+MAX_INITIALIZER_LINES  = 25
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+EXCLUDE_SYMLINKS       = NO
+EXAMPLE_RECURSIVE      = NO
+
+#---------------------------------------------------------------------------
+#Input related options
+#---------------------------------------------------------------------------
+INPUT             = tmp @CMAKE_SOURCE_DIR@/idl/DXFPlugin_Gen.idl
+FILE_PATTERNS     = 
+IMAGE_PATH        = @CMAKE_CURRENT_SOURCE_DIR@/images
+RECURSIVE         = NO
+EXAMPLE_PATH      = @CMAKE_SOURCE_DIR@/src/
+
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML     = YES
+HTML_OUTPUT       = dxfpluginpy_doc
+HTML_HEADER       = @CMAKE_CURRENT_BINARY_DIR@/static/header_py.html
+HTML_FOOTER       = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html
+HTML_EXTRA_STYLESHEET   = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css
+TOC_EXPAND        = YES
+DISABLE_INDEX     = NO
+GENERATE_TREEVIEW = YES
+TREEVIEW_WIDTH    = 300
+
+#---------------------------------------------------------------------------
+#LaTeX related option
+#---------------------------------------------------------------------------
+GENERATE_LATEX    = NO
+
+#---------------------------------------------------------------------------
+#RTF related options
+#---------------------------------------------------------------------------
+GENERATE_RTF      = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool                
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = NO
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_FONTNAME           = Arial
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+#External reference options
+#---------------------------------------------------------------------------
+GENERATE_TAGFILE  = dxfpluginpy_doc.tag
+SEARCHENGINE      = YES
diff --git a/doc/salome/gui/DXFPLUGIN/images/export_dxf.png b/doc/salome/gui/DXFPLUGIN/images/export_dxf.png
new file mode 100644 (file)
index 0000000..d8d7fd1
Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/export_dxf.png differ
diff --git a/doc/salome/gui/DXFPLUGIN/images/head.png b/doc/salome/gui/DXFPLUGIN/images/head.png
new file mode 100755 (executable)
index 0000000..307d9ef
Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/head.png differ
diff --git a/doc/salome/gui/DXFPLUGIN/images/import_dxf.png b/doc/salome/gui/DXFPLUGIN/images/import_dxf.png
new file mode 100644 (file)
index 0000000..ef39d63
Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/import_dxf.png differ
diff --git a/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png b/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png
new file mode 100644 (file)
index 0000000..9d6745d
Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png differ
diff --git a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc
new file mode 100644 (file)
index 0000000..335707b
--- /dev/null
@@ -0,0 +1,29 @@
+/*!
+
+\page dxfplugin_importexport_page Import/Export DXF
+
+For using DXFPLUGIN functionalities in SALOME:
+
+- Run SALOME and activate Geometry module.
+
+- Import the DXF file from menu <b>File/Import/DXF</b>.
+
+  \image html import_dxf.png
+  
+  Browse and select the file and press "Open" button. New object (shape) 
+  will appear in the SALOME object browser.
+
+  \note It is possible to re-load a previously imported shape from the initial file if 
+  the file has been changed on disk. For this, select <b>Reload From Disk</b> item
+  in the Object browser's context menu of the imported shape. The reloaded shape will
+  have the same representation parameters as before this operation.
+
+  \image html reopen_dxf.png
+  
+- Export selected shape to the DXF file via <b>File/Export/DXF</b> menu.
+  
+  \image html export_dxf.png
+  
+  Enter the file name and press "Save" button.
+
+*/
diff --git a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc
new file mode 100644 (file)
index 0000000..3ab4f34
--- /dev/null
@@ -0,0 +1,19 @@
+/*!
+
+\page dxfplugin_python_interface_page Python Interface
+
+Python package DXFPluginBuilder defines several functions that allow
+importing and exporting CAD models in DXF format (*.dxf files).
+
+DXFPLUGIN dynamically adds several methods to the geomBuilder.
+
+Below you can see an example of usage of the DXFPluginBuilder package for 
+import and export CAD models:
+
+\anchor example_DXFPlugin
+<h2>Example of import/export CAD model stored in DXF format (*.dxf files) with DXFPLUGIN:</h2>
+\tui_script{DXFPlugindemo.py}
+
+*/
+
+
diff --git a/doc/salome/gui/DXFPLUGIN/input/index.doc b/doc/salome/gui/DXFPLUGIN/input/index.doc
new file mode 100644 (file)
index 0000000..d5c7812
--- /dev/null
@@ -0,0 +1,16 @@
+/*!
+
+\mainpage Introduction to DXFPLUGIN
+
+The \b DXFPLUGIN implements <b>DXF</b> interface as a plugin for SALOME Geometry module.
+
+It can be used for:
+- Importing CAD models stored in DXF format (*.dxf files) into SALOME study;
+- Exporting CAD models from SALOME to the *.dxf files.
+
+To use functionality of the DXFPLUGIN refer to \subpage dxfplugin_importexport_page.
+
+Also all functionalities of the DXFPLUGIN are accessible via
+\subpage dxfplugin_python_interface_page "DXFPLUGIN Python interface".
+
+*/
diff --git a/doc/salome/gui/DXFPLUGIN/static/footer.html b/doc/salome/gui/DXFPLUGIN/static/footer.html
new file mode 100755 (executable)
index 0000000..a9dd3c1
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- HTML footer for doxygen 1.8.3.1-->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    $navpath
+    <li class="footer">
+      Copyright &copy; 2014-2015  OPEN CASCADE<br>
+    </li>
+  </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/doc/salome/gui/DXFPLUGIN/static/header.html.in b/doc/salome/gui/DXFPLUGIN/static/header.html.in
new file mode 100755 (executable)
index 0000000..6b8c8ff
--- /dev/null
@@ -0,0 +1,23 @@
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<div id="titlearea"><div align="right"><div class="version">Version: @SALOMEDXFPLUGIN_VERSION@</div></div></div>
+<!-- end header part -->
diff --git a/doc/salome/gui/DXFPLUGIN/static/header_py.html.in b/doc/salome/gui/DXFPLUGIN/static/header_py.html.in
new file mode 100644 (file)
index 0000000..0c37666
--- /dev/null
@@ -0,0 +1,24 @@
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<div id="titlearea"><div align="right"><div class="version">Version: @SALOMEDXFPLUGIN_VERSION@</div></div></div>
+<div align="bottom-left"><a href=../index.html>Home</a></div>
+<!-- end header part -->
diff --git a/doc/salome/gui/DXFPLUGIN/static/salome_extra.css b/doc/salome/gui/DXFPLUGIN/static/salome_extra.css
new file mode 100644 (file)
index 0000000..3e8b838
--- /dev/null
@@ -0,0 +1,29 @@
+/* The extra CSS for doxygen 1.8.3.1 */
+
+#titlearea {
+        background-image:url('head.png');
+        background-color: #175783;
+        border: 1px solid;
+        height: 80px;
+        background-repeat: no-repeat;
+       padding: 0px;
+       margin: 0px;
+       width: 99.9%;
+       border-bottom: 1px solid #5373B4;
+}
+
+div.version {
+       border:1px solid #0000FF;
+        color: #CCCCCC;
+       font-family: Arial, Helvetica, sans-serif;
+       font-size: 9pt;
+       text-align: center;
+       width:100px;
+       -moz-border-radius: 8px;
+       margin: 5px;
+}
+
+.navpath li.footer {
+       line-height:15px;
+       text-align: right;
+}
\ No newline at end of file
diff --git a/idl/CMakeLists.txt b/idl/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..c0eff38
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+INCLUDE(UseOmniORB)
+
+INCLUDE_DIRECTORIES(
+  ${KERNEL_INCLUDE_DIRS}
+  ${GEOM_INCLUDE_DIRS}
+  ${OMNIORB_INCLUDE_DIR}
+  ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+IF(WIN32)
+  ADD_DEFINITIONS(-DNOGDI)
+ENDIF(WIN32)
+
+SET(SalomeIDLDXFPlugin_IDLSOURCES
+  DXFPlugin.idl
+)
+
+SET(IDL_INCLUDE_DIRS
+  ${KERNEL_ROOT_DIR}/idl/salome
+  ${GEOM_ROOT_DIR}/idl/salome
+  ${CMAKE_CURRENT_SOURCE_DIR}
+)
+SET(IDL_LINK_FLAGS
+  ${KERNEL_SalomeIDLKernel}
+  ${GEOM_SalomeIDLGEOM}
+)
+
+OMNIORB_ADD_MODULE(SalomeIDLDXFPlugin "${SalomeIDLDXFPlugin_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" "${IDL_LINK_FLAGS}")
+ADD_DEPENDENCIES(SalomeIDLDXFPlugin ${GEOM_SalomeIDLGEOM})
+INSTALL(TARGETS SalomeIDLDXFPlugin EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
diff --git a/idl/DXFPlugin.idl b/idl/DXFPlugin.idl
new file mode 100644 (file)
index 0000000..867adcb
--- /dev/null
@@ -0,0 +1,52 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef __DXFPlugin_IDL__
+#define __DXFPlugin_IDL__
+
+#include "GEOM_Gen.idl"
+
+module DXFPlugin
+{
+  /*!
+   *  \brief Interface for DXFPlugin modeling functions.
+   */
+  interface IDXFOperations : GEOM::GEOM_IOperations
+  {
+    /*!
+     *  \brief Export the given shape into a file with given name in DXF format.
+     *
+     *  \param theObject Shape to be stored in the file.
+     *  \param theFileName Name of the file to store the given shape in.
+     */
+    void ExportDXF( in GEOM::GEOM_Object theObject, 
+                   in string            theFileName );
+      
+    /*!
+     *  \brief Import a shape from the DXF file.
+     *
+     *  \param theFileName The file, containing the shape.
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */              
+    GEOM::ListOfGO ImportDXF( in string theFileName );
+  };
+};
+
+#endif // __DXFPlugin_IDL__
+
index 5275f239c002564b120e916cc6d325fc260d6fde..f7b9b2c61b246788846b1def7e244556aed5228d 100644 (file)
@@ -18,7 +18,8 @@
 #
 
 SET(DXFPLUGIN_RESOURCES_FILES
-  ImportExport
+  SalomeApp.xml
+  DXFPlugin.xml
 )
 
 INSTALL(FILES ${DXFPLUGIN_RESOURCES_FILES} DESTINATION ${SALOME_DXFPLUGIN_INSTALL_RES_DATA})
diff --git a/resources/DXFPlugin.xml b/resources/DXFPlugin.xml
new file mode 100644 (file)
index 0000000..7531e64
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+<!--
+  Copyright (C) 2014-2015  OPEN CASCADE
+
+  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, or (at your option) any later version.
+
+  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
+
+-->
+
+<!--  GUI customization for GEOM component  -->
+
+<geom-plugins>
+
+  <geom-plugin name="DXFPlugin"
+               server-lib="DXFPluginEngine"
+               gui-lib="DXFPluginGUI">
+    <actions>
+      <action label="Import_DXF"
+              menu="FILE/IMPORT:10/IMPORTDXF"
+              status-bar="IMPORTDXF">
+      </action>
+      <action label="Export_DXF"
+              menu="FILE/EXPORT:10/EXPORTDXF"
+              status-bar="EXPORTDXF">
+      </action>
+    </actions>
+  </geom-plugin>
+
+</geom-plugins>
diff --git a/resources/ImportExport b/resources/ImportExport
deleted file mode 100644 (file)
index d4ab129..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Import: DXF
-Export: DXF
-
-DXF.Import: DXFImport
-DXF.Export: DXFExport
-DXF.Pattern: DXF Files ( *.dxf )
diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml
new file mode 100644 (file)
index 0000000..ba8da96
--- /dev/null
@@ -0,0 +1,32 @@
+<!--
+  Copyright (C) 2014-2015  OPEN CASCADE
+
+  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
+
+-->
+<document>
+  <section name="resources">
+    <parameter name="DXFPlugin" value="${DXFPLUGIN_ROOT_DIR}/share/salome/resources/dxfplugin"/>
+  </section>
+  <section name="GEOM">
+    <!-- Default GEOM module plugins -->
+    <parameter name="plugins" value="DXFPlugin"/>
+  </section>
+  <section name="geom_help" >
+    <parameter name="Plug-ins/DXF plugin User's Guide" value="${DXFPLUGIN_ROOT_DIR}/share/doc/salome/gui/DXFPLUGIN/index.html"/>
+  </section>
+</document>
index 0b556b6c05b30f56234a1c43b58987c1b63b4e32..52332c64edd7cc65f6b91da2f47139293df767d1 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(common)
-ADD_SUBDIRECTORY(DXFExport)
-ADD_SUBDIRECTORY(DXFImport)
+IF(SALOME_BUILD_GUI)
+  INCLUDE(UseQt4Ext)
+  INCLUDE(${QT_USE_FILE})
+ENDIF()
+
+# --- options ---
+
+# additional include directories
+INCLUDE_DIRECTORIES(
+  ${CAS_INCLUDE_DIRS}
+  ${DXF_INCLUDE_DIRS}
+  ${KERNEL_INCLUDE_DIRS}
+  ${PROJECT_BINARY_DIR}
+  ${PROJECT_BINARY_DIR}/idl
+  )
+  
+IF(SALOME_BUILD_GUI)
+  INCLUDE_DIRECTORIES(
+    ${QT_INCLUDE_DIRS}
+    ${GUI_INCLUDE_DIRS}
+    ${GEOM_INCLUDE_DIRS}
+    )
+ENDIF()
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(
+  ${CAS_DEFINITIONS}
+  )
+  
+IF(SALOME_BUILD_GUI)
+ADD_DEFINITIONS(
+  ${QT_DEFINITIONS}
+  )
+ENDIF()
+
+# libraries to link to
+SET(_link_engine_LIBRARIES
+  ${CAS_TKXSBase}
+  ${DXF_LIBRARIES}
+  ${KERNEL_SALOMEBasics}
+  ${KERNEL_SALOMELocalTrace}
+  ${KERNEL_OpUtil}
+  ${GEOM_SalomeIDLGEOM}
+  ${GEOM_GEOMEngine}
+  ${GEOM_GEOMImpl}
+  ${GEOM_GEOMClient}
+  SalomeIDLDXFPlugin
+  )
+  
+IF(SALOME_BUILD_GUI)
+  SET(_link_gui_LIBRARIES
+    SalomeIDLDXFPlugin
+    ${GEOM_GEOMObject}
+    ${GEOM_GEOMBase}
+    ${GEOM_GEOMBase}
+    )
+ENDIF()
+
+
+# --- headers ---
+
+SET(DXFPluginEngine_HEADERS
+  DXFPlugin_IOperations_i.hh
+  DXFPlugin_Engine.hxx
+  DXFPlugin_OperationsCreator.hxx
+  DXFPlugin_IOperations.hxx
+  DXFPlugin_IExport.hxx 
+  DXFPlugin_IImport.hxx
+  DXFPlugin_ImportDriver.hxx 
+  DXFPlugin_ExportDriver.hxx
+  DXFPlugin_IECallBack.hxx
+  )
+
+IF(SALOME_BUILD_GUI)  
+  # header files / to be processed by moc
+  SET(_moc_HEADERS
+    DXFPlugin_GUI.h
+    )
+ENDIF()
+
+# --- sources ---
+
+IF(SALOME_BUILD_GUI)
+  # sources / moc wrappings
+  QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
+
+  SET(DXFPluginGUI_SOURCES
+    DXFPlugin_GUI.cxx
+    ${_moc_SOURCES}
+    )
+ENDIF()
+  
+SET(DXFPluginEngine_SOURCES
+  DXFPlugin_Engine.cxx
+  DXFPlugin_OperationsCreator.cxx
+  DXFPlugin_IOperations_i.cc
+  DXFPlugin_IOperations.cxx
+  DXFPlugin_ExportDriver.cxx
+  DXFPlugin_ImportDriver.cxx
+  DXFPlugin_IECallBack.cxx
+  )
+  
+# resource files / to be processed by lrelease
+SET(DXFPlugin_RESOURCES
+  resources/DXFPlugin_msg_en.ts
+  resources/DXFPlugin_msg_fr.ts
+  resources/DXFPlugin_msg_ja.ts
+  )
+
+# DXF plugin scripts
+SET(_python_DXF_SCRIPTS
+  DXFPluginBuilder.py
+  __init__.py
+)
+
+# --- rules ---
+
+# install Engine library
+ADD_LIBRARY(DXFPluginEngine ${DXFPluginEngine_SOURCES})
+TARGET_LINK_LIBRARIES(DXFPluginEngine ${_link_engine_LIBRARIES})
+INSTALL(TARGETS DXFPluginEngine EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+
+# install GUI library
+IF(SALOME_BUILD_GUI)
+  ADD_LIBRARY(DXFPluginGUI ${DXFPluginGUI_SOURCES})
+  TARGET_LINK_LIBRARIES(DXFPluginGUI ${_link_gui_LIBRARIES})
+  INSTALL(TARGETS DXFPluginGUI EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+  # install resources
+  QT4_INSTALL_TS_RESOURCES("${DXFPlugin_RESOURCES}" "${SALOME_DXFPLUGIN_INSTALL_RES_DATA}")
+ENDIF()
+
+# install headers
+INSTALL(FILES ${DXFPluginEngine_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+
+# install python scripts
+SALOME_INSTALL_SCRIPTS("${_python_DXF_SCRIPTS}" ${SALOME_INSTALL_PYTHON}/salome/DXFPlugin DEF_PERMS)
+
+# configure license file
+CONFIGURE_FILE(DXFPlugin_license.h.in DXFPlugin_license.h)
diff --git a/src/DXFExport/CMakeLists.txt b/src/DXFExport/CMakeLists.txt
deleted file mode 100644 (file)
index 8d5fe39..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2014-2015  OPEN CASCADE
-#
-# 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, or (at your option) any later version.
-#
-# 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
-#
-
-# --- options ---
-
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${CAS_INCLUDE_DIRS}
-  ${DXF_INCLUDE_DIRS}
-  ${CMAKE_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}/src/common
-  ${CMAKE_SOURCE_DIR}/src/common
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  ${CAS_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${CAS_TKernel} 
-  ${CAS_TKXSBase}
-  ${DXF_LIBRARIES}
-  ${KERNEL_SALOMEBasics}
-)
-
-# --- sources ---
-
-# sources / static
-SET(DXFExport_SOURCES
-  DXFExport.cxx
-)
-
-# --- rules ---
-
-ADD_LIBRARY(DXFExport ${DXFExport_SOURCES})
-TARGET_LINK_LIBRARIES(DXFExport ${_link_LIBRARIES} )
-INSTALL(TARGETS DXFExport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
diff --git a/src/DXFExport/DXFExport.cxx b/src/DXFExport/DXFExport.cxx
deleted file mode 100644 (file)
index 6e267ad..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright (C) 2014-2015  OPEN CASCADE
-//
-// 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, or (at your option) any later version.
-//
-// 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
-//
-
-#include <DXFPLUGIN_exports.h>
-#include <DXFPLUGIN_version.h>
-
-#include <Basics_Utils.hxx>
-
-#include <DxfControl_Writer.hxx>
-#include <IFSelect_ReturnStatus.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TopoDS_Shape.hxx>
-
-#ifdef DXF_HASLICENSE
-#include <DXFPLUGIN_license.h>
-
-#include <Standard_LicenseError.hxx>
-#include <OCCLicense_Activate.hxx>
-#endif // DXF_HASLICENSE
-
-extern "C"
-{
-  /*!
-    \brief Get version of the plugin.
-    \return the version of the plugin
-  */
-  DXFPLUGIN_EXPORT
-  int GetVersion()
-  {
-    return DXFPLUGIN_VERSION;
-  }
-
-  /*!
-    \brief Get version of the plugin.
-    \return the string representation of the plugin's version
-  */
-  DXFPLUGIN_EXPORT
-  char* GetVersionStr()
-  {
-    return (char*)DXFPLUGIN_VERSION_STR;
-  }
-
-  /*!
-    \brief Export shape to the DXF format.
-    \param theShape shape being exported
-    \param theFileName file path
-    \param theFormatName file format signature
-    \return error status (0 in case of success)
-  */
-  DXFPLUGIN_EXPORT
-  int Export(const TopoDS_Shape& theShape,
-             const TCollection_AsciiString& theFileName,
-             const TCollection_AsciiString& theFormatName)
-  {
-#ifdef DXF_HASLICENSE
-    try {
-      OCCLicense_Activate("DXF-W-"OCC_VERSION_STRING, DXF_WRITE_LICENSE);
-    } 
-    catch (Standard_LicenseError) {
-      return 1;
-    }
-#endif // DXF_HASLICENSE
-    
-    // Set "C" numeric locale to save numbers correctly
-    Kernel_Utils::Localizer loc;
-    
-    DxfControl_Writer aWriter;
-    
-    try {
-      IFSelect_ReturnStatus status ;
-      status = aWriter.TransferShape(theShape);
-      if ( status == IFSelect_RetDone )
-       status = aWriter.WriteFile( theFileName.ToCString() ) ;
-      if ( status == IFSelect_RetDone ) 
-       return 1;
-    }
-    catch(Standard_Failure) {
-      return 1;
-    }
-    return 0;
-  }
-} // end of extern "C"
diff --git a/src/DXFImport/CMakeLists.txt b/src/DXFImport/CMakeLists.txt
deleted file mode 100644 (file)
index f089f2b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2014-2015  OPEN CASCADE
-#
-# 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, or (at your option) any later version.
-#
-# 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
-#
-
-# --- options ---
-
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${CAS_INCLUDE_DIRS}
-  ${DXF_INCLUDE_DIRS}
-  ${CMAKE_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}/src/common
-  ${CMAKE_SOURCE_DIR}/src/common
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  ${CAS_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${CAS_TKernel} 
-  ${CAS_TKXSBase}
-  ${CAS_TKCAF}
-  ${CAS_TKLCAF}
-  ${CAS_TKMath}
-  ${CAS_TKBRep}
-  ${DXF_LIBRARIES}
-  ${KERNEL_SALOMEBasics}
-)
-
-# --- sources ---
-
-# sources / static
-SET(DXFImport_SOURCES
-  DXFImport.cxx
-)
-
-# --- rules ---
-
-ADD_LIBRARY(DXFImport ${DXFImport_SOURCES})
-TARGET_LINK_LIBRARIES(DXFImport ${_link_LIBRARIES} )
-INSTALL(TARGETS DXFImport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
diff --git a/src/DXFImport/DXFImport.cxx b/src/DXFImport/DXFImport.cxx
deleted file mode 100644 (file)
index b7e6a9e..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (C) 2014-2015  OPEN CASCADE
-//
-// 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, or (at your option) any later version.
-//
-// 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
-//
-
-#include <DXFPLUGIN_exports.h>
-#include <DXFPLUGIN_version.h>
-
-#include <Basics_Utils.hxx>
-
-#include <DxfControl_Reader.hxx>
-#include <DxfSection_Block.hxx>
-#include <DxfSection_HSequenceOfObject.hxx>
-#include <DxfSection_Model.hxx>
-#include <DxfSection_Section.hxx>
-#include <IFSelect_ReturnStatus.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_HAsciiString.hxx>
-#include <TDF_Label.hxx>
-#include <TDataStd_Name.hxx>
-#include <TNaming_Builder.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TransferBRep.hxx>
-#include <Transfer_Binder.hxx>
-#include <Transfer_TransientProcess.hxx>
-#include <XSControl_TransferReader.hxx>
-#include <XSControl_WorkSession.hxx>
-
-#ifdef DXF_HASLICENSE
-#include <DXFPLUGIN_license.h>
-
-#include <Standard_LicenseError.hxx>
-#include <OCCLicense_Activate.hxx>
-#endif // DXF_HASLICENSE
-
-extern "C"
-{
-  /*!
-    \brief Get version of the plugin.
-    \return the version of the plugin
-  */
-  DXFPLUGIN_EXPORT
-  int GetVersion()
-  {
-    return DXFPLUGIN_VERSION;
-  }
-
-  /*!
-    \brief Get version of the plugin.
-    \return the string representation of the plugin's version
-  */
-  DXFPLUGIN_EXPORT
-  char* GetVersionStr()
-  {
-    return (char*)DXFPLUGIN_VERSION_STR;
-  }
-
-  /*!
-    \brief Import shape from the DXF format.
-    \param theFileName file path
-    \param theFormatName file format signature
-    \param theError error description, if there's any, is returned via this parameter
-    \param theShapeLabel a label in the CAF tree where shape attributes are set to
-    \return imported shape
-  */
-  DXFPLUGIN_EXPORT
-  TopoDS_Shape Import(const TCollection_AsciiString& theFileName,
-                     const TCollection_AsciiString& /*theFormatName*/,
-                     TCollection_AsciiString&       theError,
-                     const TDF_Label& theShapeLabel)
-  {
-    TopoDS_Shape aResShape;
-    
-#ifdef DXF_HASLICENSE
-    try {
-      OCCLicense_Activate( "DXF-R-"OCC_VERSION_STRING, DXF_READ_LICENSE);
-    }
-    catch (Standard_LicenseError) {
-      return aResShape;
-    }
-#endif
-    
-    // Set "C" numeric locale to save numbers correctly
-    Kernel_Utils::Localizer loc;
-    
-    DxfControl_Reader aReader;
-    
-    try {
-      IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.ToCString());
-      if (status == IFSelect_RetDone) {
-       aReader.TransferRoots();
-       aResShape = aReader.OneShape();
-       
-       // ATTENTION: this is a workaround for mantis issue 0020442 remark 0010776
-       // It should be removed after patching OCCT for bug OCC22436
-       // (fix for OCCT is expected in service pack next to OCCT6.3sp12)
-       if (aResShape.ShapeType() == TopAbs_COMPOUND) {
-         int nbSub1 = 0;
-         TopoDS_Shape currShape;
-         TopoDS_Iterator It (aResShape, Standard_True, Standard_True);
-         for (; It.More(); It.Next()) {
-           nbSub1++;
-           currShape = It.Value();
-         }
-         if (nbSub1 == 1)
-           aResShape = currShape;
-       }
-       Handle(DxfSection_Model) aModel = Handle(DxfSection_Model)::DownCast( aReader.WS()->Model() );
-       Handle(XSControl_TransferReader) TR = aReader.WS()->TransferReader();
-       if (!TR.IsNull()) {
-         Handle(Transfer_TransientProcess) TP = TR->TransientProcess();
-         
-         Handle(DxfSection_Section) aBlocks = aModel->FindSection("BLOCKS");
-         if (aBlocks.IsNull()) return aResShape;
-         
-         Handle(DxfSection_HSequenceOfObject) anObjects = aBlocks->GetObjects();
-         if (anObjects.IsNull()) return aResShape;
-         
-         for (Standard_Integer i = 1; i <= anObjects->Length(); i++) {
-           Handle(DxfSection_Block) aBlock = Handle(DxfSection_Block)::DownCast(anObjects->Value(i));
-           if (aBlock.IsNull()) continue;
-           Handle(TCollection_HAsciiString) aName = aBlock->GetBlockName1();
-           if (aName.IsNull()) continue;
-           
-           Handle(Transfer_Binder) binder = TP->Find ( aBlock );
-           if (binder.IsNull()) continue;
-           TopoDS_Shape aResShape = TransferBRep::ShapeResult (binder);
-           if (aResShape.IsNull()) continue;
-    
-           // create label and set shape
-           TDF_Label L;
-           TDF_TagSource aTag;
-           L = aTag.NewChild(theShapeLabel);
-           TNaming_Builder tnBuild(L);
-           tnBuild.Generated(aResShape);
-           
-           // set a name
-           TCollection_ExtendedString str(aName->ToCString());
-           TDataStd_Name::Set(L,str);
-         }
-       }
-      }
-      else {
-       theError = "Wrong format of the imported file. Can't import file.";
-       aResShape.Nullify();
-      }
-    }
-    catch (Standard_Failure) {
-      Handle(Standard_Failure) aFail = Standard_Failure::Caught();
-      theError = aFail->GetMessageString();
-      aResShape.Nullify();
-    }
-    return aResShape;
-  }
-} // end of extern "C"
-
diff --git a/src/DXFPluginBuilder.py b/src/DXFPluginBuilder.py
new file mode 100644 (file)
index 0000000..ff92dd7
--- /dev/null
@@ -0,0 +1,101 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2014-2015  OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+from DXFPlugin import IDXFOperations
+
+# Engine Library Name
+__libraryName__ = "DXFPluginEngine"
+
+## Get DXF plugin operations interface
+#  @return an instance of DXF plugin operations interface
+def GetDXFPluginOperations(self):
+    """
+    Get DXF plugin operations interface.
+
+    Returns:
+        An instance of DXF plugin operations interface
+    """
+    anOp = self.GetPluginOperations(self.myStudyId, __libraryName__)
+    return anOp._narrow(IDXFOperations)
+
+## Export the given shape into a file with given name in DXF format.
+#  @param theObject Shape to be stored in the file.
+#  @param theFileName Name of the file to store the given shape in.
+#  @sa ImportDXF
+def ExportDXF(self, theObject, theFileName):
+    """
+    Export the given shape into a file with given name in DXF format.
+
+    Parameters: 
+        theObject Shape to be stored in the file.
+        theFileName Name of the file to store the given shape in.
+    """
+    anOp = GetDXFPluginOperations(self)
+    anOp.ExportDXF(theObject, theFileName)
+    if anOp.IsDone() == 0:
+        raise RuntimeError,  "Export : " + anOp.GetErrorCode()
+        pass
+    pass
+
+
+## Import a shape from the DXF file
+#  @param theFileName The file, containing the shape.
+#  @param theName Object name; when specified, this parameter is used
+#         for result publication in the study. Otherwise, if automatic
+#         publication is switched on, default value is used for result name.
+#
+#  @return New GEOM.GEOM_Object, containing the imported shape.
+#          If material names are imported it returns the list of
+#          objects. The first one is the imported object followed by
+#          material groups.
+#
+#  @note Auto publishing is allowed for the shape itself. Imported
+#        material groups are not automatically published.
+#
+#  @sa ExportDXF
+def ImportDXF(self, theFileName, theName=None):
+    """
+    Import a shape from the DXF file
+
+    Parameters: 
+        theFileName The file, containing the shape.
+        theName Object name; when specified, this parameter is used
+                for result publication in the study. Otherwise, if automatic
+                publication is switched on, default value is used for result name.
+
+    Returns:
+        New GEOM.GEOM_Object, containing the imported shape.
+        If material names are imported it returns the list of
+        objects. The first one is the imported object followed by
+        material groups.
+    Note:
+        Auto publishing is allowed for the shape itself. Imported
+        material groups are not automatically published.
+    """
+    from salome.geom.geomBuilder import RaiseIfFailed
+    anOp = GetDXFPluginOperations(self)
+    aListObj = anOp.ImportDXF(theFileName)
+    RaiseIfFailed("ImportDXF", anOp)
+    aNbObj = len(aListObj)
+    if aNbObj > 0:
+        self._autoPublish(aListObj[0], theName, "imported")
+    if aNbObj == 1:
+        return aListObj[0]
+    return aListObj
diff --git a/src/DXFPlugin_Engine.cxx b/src/DXFPlugin_Engine.cxx
new file mode 100644 (file)
index 0000000..c85b284
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_Engine.hxx"
+#include "DXFPlugin_OperationsCreator.hxx"
+
+extern "C"
+{
+  DXFPLUGINENGINE_EXPORT
+  GEOM_GenericOperationsCreator* GetOperationsCreator()
+  {
+    return new DXFPlugin_OperationsCreator();
+  }
+}
diff --git a/src/DXFPlugin_Engine.hxx b/src/DXFPlugin_Engine.hxx
new file mode 100755 (executable)
index 0000000..5e166b6
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPLUGIN_ENGINE_HXX_
+#define _DXFPLUGIN_ENGINE_HXX_
+
+#ifdef WIN32
+ #if defined DXFPLUGINENGINE_EXPORTS || defined DXFPluginEngine_EXPORTS
+   #define DXFPLUGINENGINE_EXPORT __declspec( dllexport )
+ #else
+   #define DXFPLUGINENGINE_EXPORT __declspec( dllimport )
+ #endif 
+#else
+   #define DXFPLUGINENGINE_EXPORT
+#endif
+
+#endif
diff --git a/src/DXFPlugin_ExportDriver.cxx b/src/DXFPlugin_ExportDriver.cxx
new file mode 100644 (file)
index 0000000..9682266
--- /dev/null
@@ -0,0 +1,132 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_ExportDriver.hxx"
+#include "DXFPlugin_IExport.hxx"
+
+// KERNEL includes
+#include <Basics_Utils.hxx>
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOM_Function.hxx>
+
+// OOCT includes
+#include <IFSelect_ReturnStatus.hxx>
+#include <DxfControl_Writer.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TopoDS_Shape.hxx>
+
+#ifdef DXF_HASLICENSE
+#include "DXFPlugin_license.h"
+
+#include <OCCLicense_Activate.hxx>
+#include <Standard_LicenseError.hxx>
+#endif // DXF_HASLICENSE
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& DXFPlugin_ExportDriver::GetID()
+{
+  static Standard_GUID aGUID("5bad3191-8af9-4b90-9e95-31f5fdb65304");
+  return aGUID;
+}
+
+//=======================================================================
+//function : DXFPlugin_ExportDriver
+//purpose  :
+//=======================================================================
+DXFPlugin_ExportDriver::DXFPlugin_ExportDriver()
+{
+}
+
+//=======================================================================
+//function : Execute
+//purpose  :
+//=======================================================================
+Standard_Integer DXFPlugin_ExportDriver::Execute( TFunction_Logbook& log ) const
+{
+#ifdef DXF_HASLICENSE
+  try {
+    OCCLicense_Activate("DXF-W-"OCC_VERSION_STRING, DXF_WRITE_LICENSE);
+  }
+  catch (Standard_LicenseError) {
+    return 1;
+  }
+#endif // DXF_HASLICENSE
+
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() );
+
+  DXFPlugin_IExport aData (aFunction);
+
+  // retrieve the being exported shape
+  TopoDS_Shape aShape;
+  Handle(GEOM_Function) aRefFunction = aData.GetOriginal();
+  if( aRefFunction.IsNull() ) return 0;
+  aShape = aRefFunction->GetValue();
+  if( aShape.IsNull() ) return 0;
+  // set the result of function to be used by next operations
+  aFunction->SetValue( aShape );
+
+  TCollection_AsciiString aFileName = aData.GetFileName();
+
+  MESSAGE("Export DXF into file " << aFileName.ToCString());
+
+  // Set "C" numeric locale to save numbers correctly
+  Kernel_Utils::Localizer loc;
+
+  DxfControl_Writer aWriter;
+
+  IFSelect_ReturnStatus status ;
+  status = aWriter.TransferShape( aShape );
+  if ( status == IFSelect_RetDone )
+       status = aWriter.WriteFile( aFileName.ToCString() ) ;
+  if ( status == IFSelect_RetDone )
+       return 1;
+  else
+    return 0;
+}
+
+//=======================================================================
+//function : MustExecute
+//purpose  :
+//=======================================================================
+Standard_Boolean DXFPlugin_ExportDriver::MustExecute( const TFunction_Logbook& ) const
+{
+  return Standard_True;
+}
+
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+bool DXFPlugin_ExportDriver::
+GetCreationInformation( std::string&             theOperationName,
+                        std::vector<GEOM_Param>& theParams )
+{
+  return false;
+}
+
+IMPLEMENT_STANDARD_HANDLE( DXFPlugin_ExportDriver,GEOM_BaseDriver );
+IMPLEMENT_STANDARD_RTTIEXT( DXFPlugin_ExportDriver,GEOM_BaseDriver );
diff --git a/src/DXFPlugin_ExportDriver.hxx b/src/DXFPlugin_ExportDriver.hxx
new file mode 100644 (file)
index 0000000..6f95e3c
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_ExportDriver_HXX
+#define _DXFPlugin_ExportDriver_HXX
+
+// GEOM includes
+#include <GEOM_BaseDriver.hxx>
+
+// OCCT includes
+#ifndef _TFunction_Logbook_HeaderFile
+#include <TFunction_Logbook.hxx>
+#endif
+
+DEFINE_STANDARD_HANDLE( DXFPlugin_ExportDriver, GEOM_BaseDriver );
+
+class DXFPlugin_ExportDriver : public GEOM_BaseDriver
+{
+public:
+  DXFPlugin_ExportDriver();
+  ~DXFPlugin_ExportDriver() {};
+
+  static const Standard_GUID& GetID();
+  virtual Standard_Integer    Execute( TFunction_Logbook& log ) const;
+  Standard_Boolean            MustExecute( const TFunction_Logbook& ) const;
+  virtual void                Validate( TFunction_Logbook& ) const {}
+
+  virtual bool                GetCreationInformation( std::string& theOperationName,
+                                                      std::vector<GEOM_Param>& params );
+
+DEFINE_STANDARD_RTTI( DXFPlugin_ExportDriver )
+};
+
+#endif // _DXFPlugin_ExportDriver_HXX
diff --git a/src/DXFPlugin_GUI.cxx b/src/DXFPlugin_GUI.cxx
new file mode 100644 (file)
index 0000000..e4a64cc
--- /dev/null
@@ -0,0 +1,265 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_GUI.h"
+
+// GUI includes
+#include <SUIT_Desktop.h>
+#include <SUIT_FileDlg.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_Tools.h>
+#include <LightApp_SelectionMgr.h>
+#include <SalomeApp_Application.h>
+#include <SalomeApp_Study.h>
+#include <SALOME_ListIO.hxx>
+
+// GEOM includes
+#include "GeometryGUI.h"
+#include "GEOM_Operation.h"
+#include "GEOMBase.h"
+#include "GEOM_Displayer.h"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(DXFPlugin)
+
+//=======================================================================
+// function : DXFPlugin_GUI()
+// purpose  : Constructor
+//=======================================================================
+DXFPlugin_GUI::DXFPlugin_GUI( GeometryGUI* parent ) : GEOMPluginGUI( parent )
+{
+}
+
+//=======================================================================
+// function : ~DXFPlugin_GUI
+// purpose  : Destructor
+//=======================================================================
+DXFPlugin_GUI::~DXFPlugin_GUI()
+{
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose  : 
+//=======================================================================
+bool DXFPlugin_GUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
+{
+  QString cmd;
+  switch ( theCommandID ) {
+  case 1:
+    cmd = "Export_DXF";
+  case 2:
+    cmd = "Import_DXF";
+  default:
+    break;
+  }
+  return OnGUIEvent( cmd, parent );
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose  :
+//=======================================================================
+bool DXFPlugin_GUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent )
+{
+  bool result = false;
+
+  if ( theCommandID == "Export_DXF" )
+  {
+    result = exportDXF( parent );
+  }
+  else if ( theCommandID == "Import_DXF" )
+  {
+    result = importDXF( parent );
+  }
+  else
+  {
+    getGeometryGUI()->getApp()->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) );
+  }
+  return result;
+}
+
+//=======================================================================
+// function : importDXF
+// purpose  :
+//=======================================================================
+bool DXFPlugin_GUI::importDXF( SUIT_Desktop* parent )
+{
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if ( !app ) return false;
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*> ( app->activeStudy() );
+  if ( !study ) return false;
+
+  SALOMEDS::Study_var dsStudy = GeometryGUI::ClientStudyToStudy( study->studyDS() );
+  GEOM::GEOM_IOperations_var op = GeometryGUI::GetGeomGen()->GetPluginOperations( dsStudy->StudyId(), "DXFPluginEngine" );
+  DXFPlugin::IDXFOperations_var dxfOp = DXFPlugin::IDXFOperations::_narrow( op );
+  if ( CORBA::is_nil( dxfOp ) ) return false;
+
+  QStringList fileNames = app->getOpenFileNames( SUIT_FileDlg::getLastVisitedPath().isEmpty() ? QDir::currentPath() : QString(""),
+                                                 tr( "DXF_FILES" ),
+                                                 tr( "IMPORT_TITLE" ),
+                                                 parent );
+  if ( fileNames.count() > 0 )
+  {
+    QStringList entryList;
+    QStringList errors;
+
+    foreach( QString fileName, fileNames )
+    {
+      SUIT_OverrideCursor wc;
+      GEOM_Operation transaction( app, dxfOp.in() );
+
+      try
+      {
+        app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( fileName ) );
+        transaction.start();
+        GEOM::ListOfGO_var result = dxfOp->ImportDXF( fileName.toUtf8().constData() );
+        if ( result->length() > 0 && dxfOp->IsDone() )
+        {
+          GEOM::GEOM_Object_var main = result[0];
+          QString publishName = GEOMBase::GetDefaultName( SUIT_Tools::file( fileName, true ) );
+          SALOMEDS::SObject_var so = GeometryGUI::GetGeomGen()->PublishInStudy( dsStudy,
+                                                  SALOMEDS::SObject::_nil(),
+                                                  main.in(),
+                                                  publishName.toUtf8().constData() );
+
+          entryList.append( so->GetID() );
+          transaction.commit();
+          GEOM_Displayer( study ).Display( main.in() );
+        }
+        else
+        {
+          transaction.abort();
+          errors.append( QString( "%1 : %2" ).arg( fileName ).arg( dxfOp->GetErrorCode() ) );
+        }
+      }
+      catch( const SALOME::SALOME_Exception& e )
+      {
+        transaction.abort();
+      }
+    }
+    getGeometryGUI()->updateObjBrowser( true );
+    app->browseObjects( entryList );
+
+    if ( errors.count() > 0 )
+    {
+      SUIT_MessageBox::critical( parent,
+                                tr( "GEOM_ERROR" ),
+                                tr( "GEOM_IMPORT_ERRORS" ) + "\n" + errors.join( "\n" ) );
+    }
+  }
+  return fileNames.count() > 0;
+}
+
+//=======================================================================
+// function : exportDXF
+// purpose  :
+//=======================================================================
+bool DXFPlugin_GUI::exportDXF( SUIT_Desktop* parent )
+{
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if ( !app ) return false;
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*> ( app->activeStudy() );
+  if ( !study ) return false;
+
+  SALOMEDS::Study_var dsStudy = GeometryGUI::ClientStudyToStudy( study->studyDS() );
+  GEOM::GEOM_IOperations_var op = GeometryGUI::GetGeomGen()->GetPluginOperations( dsStudy->StudyId(), "DXFPluginEngine" );
+  DXFPlugin::IDXFOperations_var dxfOp = DXFPlugin::IDXFOperations::_narrow( op );
+  if ( CORBA::is_nil( dxfOp ) ) return false;
+
+  LightApp_SelectionMgr* sm = app->selectionMgr();
+  if ( !sm ) return false;
+
+  SALOME_ListIO selectedObjects;
+  sm->selectedObjects( selectedObjects );
+  bool ok = false;
+
+  SALOME_ListIteratorOfListIO it( selectedObjects );
+  for ( ; it.More(); it.Next() )
+  {
+    Handle(SALOME_InteractiveObject) io = it.Value();
+    GEOM::GEOM_Object_var obj = GEOMBase::ConvertIOinGEOMObject( io );
+
+    if ( CORBA::is_nil( obj ) ) continue;
+
+    QString fileName = app->getFileName( false,
+                                         QString( io->getName() ),
+                                         tr( "DXF_FILES" ),
+                                         tr( "EXPORT_TITLE" ),
+                                         parent );
+
+    if ( fileName.isEmpty() )
+      return false;
+
+    SUIT_OverrideCursor wc;
+
+    GEOM_Operation transaction( app, dxfOp.in() );
+
+    try
+    {
+      app->putInfo( tr( "GEOM_PRP_EXPORT" ).arg( fileName ) );
+      transaction.start();
+
+      dxfOp->ExportDXF( obj, fileName.toUtf8().constData() );
+
+      if ( dxfOp->IsDone() )
+      {
+        transaction.commit();
+      }
+      else
+      {
+        transaction.abort();
+        SUIT_MessageBox::critical( parent,
+                                   tr( "GEOM_ERROR" ),
+                                   tr( "GEOM_PRP_ABORT" ) + "\n" + tr( dxfOp->GetErrorCode() ) );
+        return false;
+      }
+    }
+    catch ( const SALOME::SALOME_Exception& e )
+    {
+      transaction.abort();
+      return false;
+    }
+    ok = true;
+  }
+
+  if ( !ok )
+  {
+    SUIT_MessageBox::warning( parent,
+                              tr( "WRN_WARNING" ),
+                              tr( "GEOM_WRN_NO_APPROPRIATE_SELECTION" ) );
+  }
+  return ok;
+}
+
+//=====================================================================================
+// EXPORTED METHODS
+//=====================================================================================
+extern "C"
+{
+#ifdef WIN32
+    __declspec( dllexport )
+#endif
+  GEOMGUI* GetLibGUI( GeometryGUI* parent )
+  {
+    return new DXFPlugin_GUI( parent );
+  }
+}
diff --git a/src/DXFPlugin_GUI.h b/src/DXFPlugin_GUI.h
new file mode 100644 (file)
index 0000000..8ccd209
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef DXFPlugin_GUI_H
+#define DXFPlugin_GUI_H
+
+#include <GEOMPluginGUI.h>
+
+class DXFPlugin_GUI: public GEOMPluginGUI
+{
+  Q_OBJECT
+public:
+  DXFPlugin_GUI( GeometryGUI* parent );
+  ~DXFPlugin_GUI();
+
+  bool OnGUIEvent( int commandId, SUIT_Desktop* );
+  bool OnGUIEvent( const QString&, SUIT_Desktop* );
+
+private:
+  bool importDXF( SUIT_Desktop* );
+  bool exportDXF( SUIT_Desktop* );
+};
+
+#endif // DXFPlugin_GUI_H
diff --git a/src/DXFPlugin_IECallBack.cxx b/src/DXFPlugin_IECallBack.cxx
new file mode 100755 (executable)
index 0000000..4411ef1
--- /dev/null
@@ -0,0 +1,71 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_IECallBack.hxx"
+#include "DXFPlugin_IOperations.hxx"
+#include "DXFPlugin_OperationsCreator.hxx"
+
+//=============================================================================
+/*!
+ *  constructor
+ */
+//=============================================================================
+DXFPlugin_IECallBack::DXFPlugin_IECallBack()
+{
+}
+
+//=============================================================================
+/*!
+ *  destructor
+ */
+//=============================================================================
+DXFPlugin_IECallBack::~DXFPlugin_IECallBack()
+{
+}
+
+//=============================================================================
+/*!
+ *  Export
+ */
+//=============================================================================
+bool DXFPlugin_IECallBack::Export( int theDocId,
+                                   const Handle(GEOM_Object) theOriginal,
+                                   const TCollection_AsciiString& theFileName,
+                                   const TCollection_AsciiString& theFormatName )
+{
+  DXFPlugin_IOperations* aPluginOperations = DXFPlugin_OperationsCreator::get( GetEngine(), theDocId );
+  aPluginOperations->ExportDXF( theOriginal, theFileName );
+  return true;
+}
+
+//=============================================================================
+/*!
+ *  Import
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfTransient)
+DXFPlugin_IECallBack::Import( int theDocId,
+                              const TCollection_AsciiString& theFormatName,
+                              const TCollection_AsciiString& theFileName )
+{
+  DXFPlugin_IOperations* aPluginOperations = DXFPlugin_OperationsCreator::get( GetEngine(), theDocId );
+  return aPluginOperations->ImportDXF( theFileName );
+}
+
diff --git a/src/DXFPlugin_IECallBack.hxx b/src/DXFPlugin_IECallBack.hxx
new file mode 100644 (file)
index 0000000..a3710a4
--- /dev/null
@@ -0,0 +1,49 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_IECallBack_HXX_
+#define _DXFPlugin_IECallBack_HXX_
+
+// internal includes
+#include "DXFPlugin_IOperations.hxx"
+
+// GEOM includes
+#include <GEOM_Object.hxx>
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCC includes
+#include <TCollection_AsciiString.hxx>
+
+class DXFPLUGINENGINE_EXPORT DXFPlugin_IECallBack : public GEOMImpl_IECallBack
+{
+public:
+  DXFPlugin_IECallBack();
+  ~DXFPlugin_IECallBack();
+  
+  bool Export( int theDocId,
+               const Handle(GEOM_Object) theOriginal,
+               const TCollection_AsciiString& theFileName,
+               const TCollection_AsciiString& theFormatName );
+
+  Handle(TColStd_HSequenceOfTransient) Import( int theDocId,
+                                               const TCollection_AsciiString& theFormatName,
+                                               const TCollection_AsciiString& theFileName );
+};
+
+#endif
diff --git a/src/DXFPlugin_IExport.hxx b/src/DXFPlugin_IExport.hxx
new file mode 100644 (file)
index 0000000..27bb469
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_IExport_HXX_
+#define _DXFPlugin_IExport_HXX_
+
+#include "GEOM_Function.hxx"
+
+#define EXPORTDXF_ARG_ORIGINAL   1
+#define EXPORTDXF_ARG_FILENAME   2
+
+class DXFPlugin_IExport
+{
+public:
+  DXFPlugin_IExport( Handle(GEOM_Function) theFunction )
+    : _func(theFunction) {}
+
+  void SetOriginal( Handle( GEOM_Function ) theOriginal)
+    { _func->SetReference( EXPORTDXF_ARG_ORIGINAL, theOriginal ); }
+  Handle( GEOM_Function ) GetOriginal()
+    { return _func->GetReference( EXPORTDXF_ARG_ORIGINAL ); }
+
+  void SetFileName( const TCollection_AsciiString& theFileName )
+    { _func->SetString( EXPORTDXF_ARG_FILENAME, theFileName ); }
+  TCollection_AsciiString GetFileName()
+    { return _func->GetString( EXPORTDXF_ARG_FILENAME ); }
+  
+private:
+  Handle(GEOM_Function) _func;
+};
+
+#endif // _DXFPlugin_IExport_HXX_
diff --git a/src/DXFPlugin_IImport.hxx b/src/DXFPlugin_IImport.hxx
new file mode 100644 (file)
index 0000000..8a1ab26
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_IImport_HXX_
+#define _DXFPlugin_IImport_HXX_
+
+#include "GEOM_Function.hxx"
+
+#define IMPORTDXF_ARG_FILENAME 1
+
+class DXFPlugin_IImport
+{
+public:
+  DXFPlugin_IImport( Handle(GEOM_Function) theFunction)
+    : _func(theFunction) {}
+
+  void SetFileName( const TCollection_AsciiString& theFileName )
+    { _func->SetString( IMPORTDXF_ARG_FILENAME, theFileName ); }
+  TCollection_AsciiString GetFileName()
+    { return _func->GetString( IMPORTDXF_ARG_FILENAME ); }
+  
+private:
+  Handle(GEOM_Function) _func;
+};
+
+#endif // _DXFPlugin_IImport_HXX_
diff --git a/src/DXFPlugin_IOperations.cxx b/src/DXFPlugin_IOperations.cxx
new file mode 100644 (file)
index 0000000..7a49fa6
--- /dev/null
@@ -0,0 +1,165 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_IOperations.hxx"
+#include "DXFPlugin_ExportDriver.hxx"
+#include "DXFPlugin_ImportDriver.hxx"
+#include "DXFPlugin_IExport.hxx"
+#include "DXFPlugin_IImport.hxx"
+
+// KERNEL includes
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOM_PythonDump.hxx>
+#include <GEOMImpl_Types.hxx>
+
+#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+
+//=============================================================================
+/*!
+ *  Constructor
+ */
+//=============================================================================
+DXFPlugin_IOperations::DXFPlugin_IOperations( GEOM_Engine* theEngine, int theDocID )
+: GEOMImpl_IBaseIEOperations( theEngine, theDocID )
+{
+  MESSAGE( "DXFPlugin_IOperations::DXFPlugin_IOperations" );
+}
+
+//=============================================================================
+/*!
+ *  Destructor
+ */
+//=============================================================================
+DXFPlugin_IOperations::~DXFPlugin_IOperations()
+{
+  MESSAGE( "DXFPlugin_IOperations::~DXFPlugin_IOperations" );
+}
+
+//=============================================================================
+/*!
+ *  ExportDXF
+ *  Export a shape to DXF format
+ *  \param theOriginal The shape to export
+ *  \param theFileName The name of the file to exported
+ */
+//=============================================================================
+void DXFPlugin_IOperations::ExportDXF( const Handle(GEOM_Object)      theOriginal,
+                                       const TCollection_AsciiString& theFileName )
+{
+  SetErrorCode(KO);
+  if( theOriginal.IsNull() ) return;
+
+  Handle(GEOM_Function) aRefFunction = theOriginal->GetLastFunction();
+  if( aRefFunction.IsNull() ) return;  //There is no function which creates an object to be exported
+
+  //Add a new result object
+  Handle(GEOM_Object) result = GetEngine()->AddObject( GetDocID(), GEOM_IMPORT);
+
+  //Add an Export function
+  Handle(GEOM_Function) aFunction = result->AddFunction( DXFPlugin_ExportDriver::GetID(), EXPORT_SHAPE );
+  if( aFunction.IsNull() ) return;
+
+  //Check if the function is set correctly
+  if( aFunction->GetDriverGUID() != DXFPlugin_ExportDriver::GetID() ) return;
+
+  //Set parameters
+  DXFPlugin_IExport aCI( aFunction );
+  aCI.SetOriginal( aRefFunction );
+  aCI.SetFileName( theFileName );
+
+  //Perform the Export
+  try {
+    OCC_CATCH_SIGNALS;
+    if( !GetSolver()->ComputeFunction( aFunction ) ) {
+      SetErrorCode( "Not enough space on disk, or you haven't permissions to write this directory" );
+      return;
+    }
+  }
+  catch( Standard_Failure ) {
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+    SetErrorCode( aFail->GetMessageString() );
+    return;
+  }
+
+  //Make a Python command
+  GEOM::TPythonDump(aFunction) << "geompy.ExportDXF(" << theOriginal << ", \""
+    << theFileName.ToCString() << "\" )";
+
+  SetErrorCode(OK);
+}
+
+//=============================================================================
+/*!
+ *  ImportDXF
+ *  Import a shape from DXF format
+ *  \param theFileName The name of the file to import
+ *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfTransient)
+DXFPlugin_IOperations::ImportDXF( const TCollection_AsciiString& theFileName )
+{
+  SetErrorCode(KO);
+  if( theFileName.IsEmpty() ) return NULL;
+
+  //Add a new result object
+  Handle(GEOM_Object) anImported = GetEngine()->AddObject( GetDocID(), GEOM_IMPORT );
+
+  //Add an Import function
+  Handle(GEOM_Function) aFunction =
+    anImported->AddFunction( DXFPlugin_ImportDriver::GetID(), IMPORT_SHAPE);
+  if (aFunction.IsNull()) return NULL;
+
+  //Check if the function is set correctly
+  if (aFunction->GetDriverGUID() != DXFPlugin_ImportDriver::GetID()) return NULL;
+
+  //Set parameters
+  DXFPlugin_IImport aCI( aFunction );
+  aCI.SetFileName( theFileName );
+
+  //Perform the Import
+  Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient;
+
+  try {
+    OCC_CATCH_SIGNALS;
+    if( !GetSolver()->ComputeFunction( aFunction ) ) {
+      SetErrorCode( "Import driver failed" );
+      return NULL;
+    }
+    aSeq->Append(anImported);
+
+    // Greate material groups.
+    //MakeMaterialGroups( anImported, aSeq );
+  }
+  catch( Standard_Failure ) {
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+    SetErrorCode( aFail->GetMessageString() );
+    return NULL;
+  }
+
+  //Make a Python command
+  GEOM::TPythonDump pd (aFunction);
+  pd << aSeq << " = geompy.ImportDXF(\"" << theFileName.ToCString() << "\" )";
+  SetErrorCode(OK);
+
+  return aSeq;
+}
diff --git a/src/DXFPlugin_IOperations.hxx b/src/DXFPlugin_IOperations.hxx
new file mode 100644 (file)
index 0000000..65e5633
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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 : DXFPlugin_IOperations.hxx
+
+#ifndef _DXFPlugin_IOperations_HXX_
+#define _DXFPlugin_IOperations_HXX_
+
+// internal includes
+#include "DXFPlugin_Engine.hxx"
+
+// GEOM includes
+#include <GEOMImpl_IBaseIEOperations.hxx>
+
+class DXFPLUGINENGINE_EXPORT DXFPlugin_IOperations: public GEOMImpl_IBaseIEOperations
+{
+public:
+  DXFPlugin_IOperations( GEOM_Engine*, int );
+  ~DXFPlugin_IOperations();
+
+  void ExportDXF( const Handle(GEOM_Object),
+                  const TCollection_AsciiString& );
+
+  Handle(TColStd_HSequenceOfTransient) ImportDXF( const TCollection_AsciiString& );
+};
+
+#endif
diff --git a/src/DXFPlugin_IOperations_i.cc b/src/DXFPlugin_IOperations_i.cc
new file mode 100644 (file)
index 0000000..c04fb8c
--- /dev/null
@@ -0,0 +1,109 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_IOperations_i.hh"
+#include "DXFPlugin_IOperations.hxx"
+#include "DXFPlugin_version.h"
+
+// KERNEL includes
+#include <utilities.h>
+
+//=============================================================================
+/*!
+ *   constructor:
+ */
+//=============================================================================
+DXFPlugin_IOperations_i::DXFPlugin_IOperations_i( PortableServer::POA_ptr  thePOA,
+                                                  GEOM::GEOM_Gen_ptr       theEngine,
+                                                  ::DXFPlugin_IOperations* theImpl )
+:GEOM_IOperations_i( thePOA, theEngine, theImpl )
+{
+  MESSAGE( "DXFPlugin_Operations_i::DXFPlugin_Operations_i" );
+}
+
+//=============================================================================
+/*!
+ *  destructor
+ */
+//=============================================================================
+DXFPlugin_IOperations_i::~DXFPlugin_IOperations_i()
+{
+  MESSAGE( "DXFPlugin_Operations_i::~DXFPlugin_Operations_i" );
+}
+
+//=============================================================================
+/*!
+ *  ExportDXF
+ *  Export a shape to DXF format
+ *  \param theOriginal The shape to export
+ *  \param theFileName The name of the exported file
+ */
+//=============================================================================
+void DXFPlugin_IOperations_i::ExportDXF( GEOM::GEOM_Object_ptr theOriginal,
+                                         const char*           theFileName )
+{
+  // duplicate the original shape
+  GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate( theOriginal );
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the reference shape
+  Handle(GEOM_Object) anOriginal = GetObjectImpl( theOriginal );
+  if (anOriginal.IsNull()) return;
+
+  //Export the shape to the file
+  GetOperations()->ExportDXF( anOriginal, theFileName );
+}
+
+//=============================================================================
+/*!
+ *  ImportDXF
+ *  Import a shape from DXF format
+ *  \param theFileName The name of the file to import
+ *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+ */
+//=============================================================================
+GEOM::ListOfGO* DXFPlugin_IOperations_i::ImportDXF( const char* theFileName )
+{
+  GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Import the shape from the file
+  Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->ImportDXF( theFileName );
+
+  if( !GetOperations()->IsDone() || aHSeq.IsNull() )
+    return aSeq._retn();
+
+  // Copy created objects.
+  Standard_Integer aLength = aHSeq->Length();
+  aSeq->length( aLength );
+  for( Standard_Integer i = 1; i <= aLength; i++ )
+    aSeq[i-1] = GetObject( Handle(GEOM_Object)::DownCast( aHSeq->Value(i) ) );
+
+  return aSeq._retn();
+}
+
+DXFPlugin_IOperations* DXFPlugin_IOperations_i::GetOperations()
+{
+  return (DXFPlugin_IOperations*)GetImpl();
+}
diff --git a/src/DXFPlugin_IOperations_i.hh b/src/DXFPlugin_IOperations_i.hh
new file mode 100644 (file)
index 0000000..fcf7acc
--- /dev/null
@@ -0,0 +1,52 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_IOperations_i_HeaderFile
+#define _DXFPlugin_IOperations_i_HeaderFile
+
+// idl includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER( GEOM_Gen )
+#include CORBA_SERVER_HEADER( DXFPlugin )
+
+// internal includes
+#include "DXFPlugin_Engine.hxx"
+
+// GEOM includes
+#include <GEOM_IOperations_i.hh>
+
+class DXFPlugin_IOperations;
+
+class DXFPLUGINENGINE_EXPORT DXFPlugin_IOperations_i :
+      public virtual POA_DXFPlugin::IDXFOperations,
+      public virtual GEOM_IOperations_i
+{
+public:
+  DXFPlugin_IOperations_i( PortableServer::POA_ptr thePOA,
+                           GEOM::GEOM_Gen_ptr theEngine,
+                           DXFPlugin_IOperations* theImpl );
+  ~DXFPlugin_IOperations_i();
+
+  void            ExportDXF( GEOM::GEOM_Object_ptr, const char* );
+  GEOM::ListOfGO* ImportDXF( const char* );
+
+  DXFPlugin_IOperations* GetOperations();
+};
+
+#endif // _DXFPlugin_IOperations_i_HeaderFile
diff --git a/src/DXFPlugin_ImportDriver.cxx b/src/DXFPlugin_ImportDriver.cxx
new file mode 100644 (file)
index 0000000..c69c82e
--- /dev/null
@@ -0,0 +1,215 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_ImportDriver.hxx"
+#include "DXFPlugin_IImport.hxx"
+
+// KERNEL includes
+#include <Basics_Utils.hxx>
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOM_Function.hxx>
+#include <GEOMImpl_Types.hxx>
+
+// OOCT includes
+#include <DxfControl_Reader.hxx>
+#include <DxfSection_Block.hxx>
+#include <DxfSection_HSequenceOfObject.hxx>
+#include <DxfSection_Model.hxx>
+#include <DxfSection_Section.hxx>
+#include <IFSelect_ReturnStatus.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TDF_Label.hxx>
+#include <TDataStd_Name.hxx>
+#include <TNaming_Builder.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Iterator.hxx>
+#include <TransferBRep.hxx>
+#include <Transfer_Binder.hxx>
+#include <Transfer_TransientProcess.hxx>
+#include <XSControl_TransferReader.hxx>
+#include <XSControl_WorkSession.hxx>
+
+#include <StdFail_NotDone.hxx>
+
+#ifdef DXF_HASLICENSE
+#include "DXFPlugin_license.h"
+
+#include <OCCLicense_Activate.hxx>
+#include <Standard_LicenseError.hxx>
+#endif // DXF_HASLICENSE
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& DXFPlugin_ImportDriver::GetID()
+{
+  static Standard_GUID aGUID("dc74f282-3542-419f-a755-c5ab6aba17c5");
+  return aGUID;
+}
+
+//=======================================================================
+//function : DXFPlugin_ImportDriver
+//purpose  :
+//=======================================================================
+DXFPlugin_ImportDriver::DXFPlugin_ImportDriver()
+{
+}
+
+//=======================================================================
+//function : Execute
+//purpose  :
+//=======================================================================
+Standard_Integer DXFPlugin_ImportDriver::Execute( TFunction_Logbook& log ) const
+{
+  if( Label().IsNull() ) return 0;
+  Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() );
+
+  DXFPlugin_IImport aData( aFunction );
+
+  TCollection_AsciiString aFileName = aData.GetFileName().ToCString();
+
+  MESSAGE("Import DXF from file " << aFileName);
+
+  TopoDS_Shape aResShape;
+
+#ifdef DXF_HASLICENSE
+  try {
+    OCCLicense_Activate( "DXF-R-"OCC_VERSION_STRING, DXF_READ_LICENSE);
+  }
+  catch (Standard_LicenseError) {
+    return aResShape;
+  }
+#endif
+
+  // Set "C" numeric locale to save numbers correctly
+  Kernel_Utils::Localizer loc;
+
+  DxfControl_Reader aReader;
+
+  IFSelect_ReturnStatus status = aReader.ReadFile( aFileName.ToCString() );
+  if (status == IFSelect_RetDone) {
+       aReader.TransferRoots();
+       aResShape = aReader.OneShape();
+
+       // ATTENTION: this is a workaround for mantis issue 0020442 remark 0010776
+       // It should be removed after patching OCCT for bug OCC22436
+       // (fix for OCCT is expected in service pack next to OCCT6.3sp12)
+       if (aResShape.ShapeType() == TopAbs_COMPOUND) {
+         int nbSub1 = 0;
+         TopoDS_Shape currShape;
+         TopoDS_Iterator It (aResShape, Standard_True, Standard_True);
+         for (; It.More(); It.Next()) {
+           nbSub1++;
+           currShape = It.Value();
+         }
+         if (nbSub1 == 1)
+           aResShape = currShape;
+       }
+       Handle(DxfSection_Model) aModel = Handle(DxfSection_Model)::DownCast( aReader.WS()->Model() );
+       Handle(XSControl_TransferReader) TR = aReader.WS()->TransferReader();
+       if (!TR.IsNull()) {
+         Handle(Transfer_TransientProcess) TP = TR->TransientProcess();
+
+         Handle(DxfSection_Section) aBlocks = aModel->FindSection("BLOCKS");
+         if( !aBlocks.IsNull() ) {
+           Handle(DxfSection_HSequenceOfObject) anObjects = aBlocks->GetObjects();
+           for (Standard_Integer i = 1; i <= anObjects->Length(); i++) {
+             Handle(DxfSection_Block) aBlock = Handle(DxfSection_Block)::DownCast(anObjects->Value(i));
+             if (aBlock.IsNull()) continue;
+             Handle(TCollection_HAsciiString) aName = aBlock->GetBlockName1();
+             if (aName.IsNull()) continue;
+
+             Handle(Transfer_Binder) binder = TP->Find ( aBlock );
+             if (binder.IsNull()) continue;
+             TopoDS_Shape aResShape = TransferBRep::ShapeResult (binder);
+             if (aResShape.IsNull()) continue;
+
+             // create label and set shape
+             TDF_Label L;
+             TDF_TagSource aTag;
+             L = aTag.NewChild(aFunction->GetNamingEntry());
+             TNaming_Builder tnBuild(L);
+             tnBuild.Generated(aResShape);
+
+             // set a name
+             TCollection_ExtendedString str( aName->ToCString() );
+             TDataStd_Name::Set(L,str);
+           }
+         }
+       }
+  }
+  else {
+    TCollection_AsciiString anError = "Wrong format of the imported file. Can't import file.";
+    StdFail_NotDone::Raise( anError.ToCString() );
+    aResShape.Nullify();
+  }
+
+  if( aResShape.IsNull() ) return 0;
+
+  aFunction->SetValue( aResShape );
+
+  log.SetTouched( Label() );
+
+  return 1;
+}
+
+//=======================================================================
+//function : MustExecute
+//purpose  :
+//=======================================================================
+Standard_Boolean DXFPlugin_ImportDriver::MustExecute( const TFunction_Logbook& ) const
+{
+  return Standard_True;
+}
+
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool DXFPlugin_ImportDriver::
+GetCreationInformation( std::string&             theOperationName,
+                        std::vector<GEOM_Param>& theParams )
+{
+  if( Label().IsNull() ) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction( Label() );
+
+  DXFPlugin_IImport aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "ImportDXF";
+
+  switch ( aType ) {
+  case IMPORT_SHAPE:
+    AddParam( theParams, "File name", aCI.GetFileName() );
+    break;
+  default:
+    return false;
+  }
+  return true;
+}
+
+IMPLEMENT_STANDARD_HANDLE( DXFPlugin_ImportDriver, GEOM_BaseDriver );
+IMPLEMENT_STANDARD_RTTIEXT( DXFPlugin_ImportDriver, GEOM_BaseDriver );
diff --git a/src/DXFPlugin_ImportDriver.hxx b/src/DXFPlugin_ImportDriver.hxx
new file mode 100644 (file)
index 0000000..8d03716
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _DXFPlugin_ImportDriver_HXX
+#define _DXFPlugin_ImportDriver_HXX
+
+// GEOM includes
+#include <GEOM_BaseDriver.hxx>
+
+// OCCT includes
+#ifndef _TFunction_Logbook_HeaderFile
+#include <TFunction_Logbook.hxx>
+#endif
+
+DEFINE_STANDARD_HANDLE( DXFPlugin_ImportDriver, GEOM_BaseDriver );
+
+class DXFPlugin_ImportDriver : public GEOM_BaseDriver
+{
+public:
+  DXFPlugin_ImportDriver();
+  ~DXFPlugin_ImportDriver() {};
+
+  static const Standard_GUID& GetID();
+  virtual Standard_Integer    Execute( TFunction_Logbook& log ) const;
+  Standard_Boolean            MustExecute( const TFunction_Logbook& ) const;
+  virtual void                Validate( TFunction_Logbook& ) const {}
+  virtual bool                GetCreationInformation( std::string& theOperationName,
+                                                      std::vector<GEOM_Param>& params );
+
+DEFINE_STANDARD_RTTI( DXFPlugin_ImportDriver )
+};
+
+#endif // _DXFPlugin_ImportDriver_HXX
diff --git a/src/DXFPlugin_OperationsCreator.cxx b/src/DXFPlugin_OperationsCreator.cxx
new file mode 100644 (file)
index 0000000..33f396d
--- /dev/null
@@ -0,0 +1,71 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+// internal includes
+#include "DXFPlugin_OperationsCreator.hxx"
+#include "DXFPlugin_IOperations_i.hh"
+#include "DXFPlugin_ExportDriver.hxx"
+#include "DXFPlugin_ImportDriver.hxx"
+#include "DXFPlugin_IECallBack.hxx"
+
+// KERNEL includes
+#include <Utils_ExceptHandlers.hxx>
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCCT includes
+#include <TFunction_DriverTable.hxx>
+
+std::map <int, DXFPlugin_IOperations*> DXFPlugin_OperationsCreator::_mapOfOperations;
+
+DXFPlugin_OperationsCreator::DXFPlugin_OperationsCreator()
+{
+  // Register drivers
+  TFunction_DriverTable::Get()->AddDriver( DXFPlugin_ExportDriver::GetID(),
+                                           new DXFPlugin_ExportDriver() );
+  TFunction_DriverTable::Get()->AddDriver( DXFPlugin_ImportDriver::GetID(),
+                                           new DXFPlugin_ImportDriver() );
+  // Register callback
+  DXFPlugin_IECallBack* callback = new DXFPlugin_IECallBack();
+  GEOMImpl_IECallBack::Register( "DXF", callback );
+}
+
+DXFPlugin_OperationsCreator::~DXFPlugin_OperationsCreator()
+{
+}
+
+GEOM_IOperations_i* DXFPlugin_OperationsCreator::Create( PortableServer::POA_ptr thePOA,
+                                                         int                     theStudyId,
+                                                         GEOM::GEOM_Gen_ptr      theEngine,
+                                                         ::GEOMImpl_Gen*         theGenImpl )
+{
+  Unexpect aCatch( SALOME_SalomeException );
+  MESSAGE( "DXFPlugin_OperationsCreator::Create" );
+  return new DXFPlugin_IOperations_i( thePOA, theEngine, get( theGenImpl, theStudyId ) );
+}
+
+DXFPlugin_IOperations* DXFPlugin_OperationsCreator::get( ::GEOMImpl_Gen* theGenImpl,
+                                                         int             theStudyId )
+{
+  if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() )
+    _mapOfOperations[theStudyId] = new DXFPlugin_IOperations( theGenImpl, theStudyId );
+  return _mapOfOperations[theStudyId];
+}
diff --git a/src/DXFPlugin_OperationsCreator.hxx b/src/DXFPlugin_OperationsCreator.hxx
new file mode 100755 (executable)
index 0000000..9b941ae
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#ifndef _GEOM_DXFPlugin_OperationsCreator_HXX_
+#define _GEOM_DXFPlugin_OperationsCreator_HXX_
+
+// internal includes
+#include "DXFPlugin_Engine.hxx"
+
+// GEOM includes
+#include "GEOM_Gen_i.hh"
+
+// C++ includes
+#include <map>
+
+class DXFPlugin_IOperations;
+
+//=====================================================================
+// Operations creator
+//=====================================================================
+class DXFPLUGINENGINE_EXPORT DXFPlugin_OperationsCreator : public GEOM_GenericOperationsCreator
+{
+public:
+  DXFPlugin_OperationsCreator();
+  ~DXFPlugin_OperationsCreator();
+
+  GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA,
+                              int                     theStudyId,
+                              GEOM::GEOM_Gen_ptr      theEngine,
+                              ::GEOMImpl_Gen*         theGenImpl );
+
+private:
+  static DXFPlugin_IOperations* get( ::GEOMImpl_Gen* theGenImpl,
+                                     int             theStudyId );
+
+  static std::map <int, DXFPlugin_IOperations*>  _mapOfOperations;
+
+  friend class DXFPlugin_IECallBack;
+};
+
+#endif
diff --git a/src/DXFPlugin_license.h.in b/src/DXFPlugin_license.h.in
new file mode 100644 (file)
index 0000000..60a4cde
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2014-2015  OPEN CASCADE
+//
+// 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, or (at your option) any later version.
+//
+// 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
+//
+
+#if !defined(__DXFPLUGIN_LICENSE_H)
+#define __DXFPLUGIN_LICENSE_H
+
+#define DXF_READ_LICENSE  "@DXF_READ_LICENSE@"
+#define DXF_WRITE_LICENSE "@DXF_WRITE_LICENSE@"
+
+#endif // __DXFPLUGIN_LICENSE_H
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644 (file)
index 0000000..523c423
--- /dev/null
@@ -0,0 +1,23 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2014-2015 OPEN CASCADE
+#
+# 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, or (at your option) any later version.
+#
+# 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
+#
+
+#  DXFPLUGIN : binding of C++ implementation with Python
+#  File   : __init__.py
+#
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
deleted file mode 100644 (file)
index a642ab1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2014-2015  OPEN CASCADE
-#
-# 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, or (at your option) any later version.
-#
-# 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
-#
-
-CONFIGURE_FILE(DXFPLUGIN_license.h.in DXFPLUGIN_license.h)
diff --git a/src/common/DXFPLUGIN_exports.h b/src/common/DXFPLUGIN_exports.h
deleted file mode 100644 (file)
index 63950eb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014-2015  OPEN CASCADE
-//
-// 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, or (at your option) any later version.
-//
-// 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
-//
-
-#if !defined (__DXFPLUGIN_EXPORTS_H)
-#define __DXFPLUGIN_EXPORTS_H
-
-#ifdef WIN32
-#  if defined DXFExport_EXPORTS || defined DXFXPORTS_EXPORTS || defined DXFImport_EXPORTS || defined DXFIMPORT_EXPORTS
-#    define DXFPLUGIN_EXPORT __declspec(dllexport)
-#  else
-#    define DXFPLUGIN_EXPORT __declspec(dllimport)
-#  endif
-#else  // WIN32
-#  define DXFPLUGIN_EXPORT
-#endif // WIN32
-
-#endif // __DXFPLUGIN_EXPORTS_H
diff --git a/src/common/DXFPLUGIN_license.h.in b/src/common/DXFPLUGIN_license.h.in
deleted file mode 100644 (file)
index 60a4cde..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2014-2015  OPEN CASCADE
-//
-// 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, or (at your option) any later version.
-//
-// 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
-//
-
-#if !defined(__DXFPLUGIN_LICENSE_H)
-#define __DXFPLUGIN_LICENSE_H
-
-#define DXF_READ_LICENSE  "@DXF_READ_LICENSE@"
-#define DXF_WRITE_LICENSE "@DXF_WRITE_LICENSE@"
-
-#endif // __DXFPLUGIN_LICENSE_H
diff --git a/src/resources/DXFPlugin_msg_en.ts b/src/resources/DXFPlugin_msg_en.ts
new file mode 100644 (file)
index 0000000..6021633
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_EXPORTDXF</source>
+        <translation>DXF</translation>
+    </message>
+    <message>
+        <source>TOP_EXPORTDXF</source>
+        <translation>Export DXF</translation>
+    </message>
+    <message>
+        <source>STB_EXPORTDXF</source>
+        <translation>Export DXF</translation>
+    </message>
+    <message>
+        <source>MEN_IMPORTDXF</source>
+        <translation>DXF</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTDXF</source>
+        <translation>Import DXF</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTDXF</source>
+        <translation>Import DXF</translation>
+    </message>
+</context>
+<context>
+    <name>DXFPlugin_GUI</name>
+    <message>
+        <source>DXF_FILES</source>
+        <translation>DXF files( *.dxf )</translation>
+    </message>
+    <message>
+        <source>EXPORT_TITLE</source>
+        <translation>Export DXF</translation>
+    </message>
+    <message>
+        <source>IMPORT_TITLE</source>
+        <translation>Import DXF</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/resources/DXFPlugin_msg_fr.ts b/src/resources/DXFPlugin_msg_fr.ts
new file mode 100644 (file)
index 0000000..54f35a2
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_EXPORTDXF</source>
+        <translation>DXF</translation>
+    </message>
+    <message>
+        <source>TOP_EXPORTDXF</source>
+        <translation>Exporter DXF</translation>
+    </message>
+    <message>
+        <source>STB_EXPORTDXF</source>
+        <translation>Exporter DXF</translation>
+    </message>
+    <message>
+        <source>MEN_IMPORTDXF</source>
+        <translation>DXF</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTDXF</source>
+        <translation>Importer DXF</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTDXF</source>
+        <translation>Importer DXF</translation>
+    </message>
+</context>
+<context>
+    <name>DXFPlugin_GUI</name>
+    <message>
+        <source>DXF_FILES</source>
+        <translation>DXF Fichiers( *.dxf )</translation>
+    </message>
+    <message>
+        <source>EXPORT_TITLE</source>
+        <translation>Exporter DXF</translation>
+    </message>
+    <message>
+        <source>IMPORT_TITLE</source>
+        <translation>Importer DXF</translation>
+    </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/src/resources/DXFPlugin_msg_ja.ts b/src/resources/DXFPlugin_msg_ja.ts
new file mode 100644 (file)
index 0000000..6c6461e
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_EXPORTDXF</source>
+        <translation type="unfinished">DXF</translation>
+    </message>
+    <message>
+        <source>TOP_EXPORTDXF</source>
+        <translation type="unfinished">Export DXF</translation>
+    </message>
+    <message>
+        <source>STB_EXPORTDXF</source>
+        <translation type="unfinished">Export DXF</translation>
+    </message>
+    <message>
+        <source>MEN_IMPORTDXF</source>
+        <translation type="unfinished">DXF</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTDXF</source>
+        <translation type="unfinished">Import DXF</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTDXF</source>
+        <translation type="unfinished">Import DXF</translation>
+    </message>
+</context>
+<context>
+    <name>DXFPlugin_GUI</name>
+    <message>
+        <source>DXF_FILES</source>
+        <translation type="unfinished">DXF files( *.dxf )</translation>
+    </message>
+    <message>
+        <source>EXPORT_TITLE</source>
+        <translation type="unfinished">Export DXF</translation>
+    </message>
+    <message>
+        <source>IMPORT_TITLE</source>
+        <translation type="unfinished">Import DXF</translation>
+    </message>
+</context>
+</TS>
\ No newline at end of file