Salome HOME
Implementation of XTPLUGIN as a GEOM plugin (added files)
authormpa <mpa@opencascade.com>
Thu, 4 Sep 2014 11:57:51 +0000 (15:57 +0400)
committermpa <mpa@opencascade.com>
Thu, 4 Sep 2014 11:57:51 +0000 (15:57 +0400)
42 files changed:
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/XTPlugindemo.py [new file with mode: 0644]
doc/salome/gui/CMakeLists.txt [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/CMakeLists.txt [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/doxyfile.in [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/doxyfile_py.in [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/images/head.png [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/images/import_xt.png [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/images/reopen_xt.png [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/input/index.doc [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/static/footer.html [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/static/header.html.in [new file with mode: 0755]
doc/salome/gui/XTPLUGIN/static/header_py.html.in [new file with mode: 0644]
doc/salome/gui/XTPLUGIN/static/salome_extra.css [new file with mode: 0644]
idl/CMakeLists.txt [new file with mode: 0755]
idl/XTPlugin_Gen.idl [new file with mode: 0644]
resources/SalomeApp.xml [new file with mode: 0644]
resources/XTPlugin.xml [new file with mode: 0644]
src/XTPluginBuilder.py [new file with mode: 0644]
src/XTPluginEngine.cxx [new file with mode: 0644]
src/XTPluginGUI.cxx [new file with mode: 0644]
src/XTPluginGUI.h [new file with mode: 0644]
src/XTPlugin_IECallBack.cxx [new file with mode: 0755]
src/XTPlugin_IECallBack.hxx [new file with mode: 0644]
src/XTPlugin_IImport.hxx [new file with mode: 0644]
src/XTPlugin_IOperations.cxx [new file with mode: 0644]
src/XTPlugin_IOperations.hxx [new file with mode: 0644]
src/XTPlugin_ImportDlg.cxx [new file with mode: 0644]
src/XTPlugin_ImportDlg.h [new file with mode: 0644]
src/XTPlugin_ImportDriver.hxx [new file with mode: 0644]
src/XTPlugin_OperationsCreator.cc [new file with mode: 0644]
src/XTPlugin_OperationsCreator.hh [new file with mode: 0755]
src/XTPlugin_Operations_i.cc [new file with mode: 0644]
src/XTPlugin_Operations_i.hh [new file with mode: 0644]
src/__init__.py [new file with mode: 0644]
src/resources/XTPlugin_msg_en.ts [new file with mode: 0644]
src/resources/XTPlugin_msg_fr.ts [new file with mode: 0644]
src/resources/XTPlugin_msg_ja.ts [new file with mode: 0644]

diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..7eb84fe
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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..957d7ef
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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)
\ No newline at end of file
diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bd1eaf9
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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/XTPLUGIN)
diff --git a/doc/salome/examples/XTPlugindemo.py b/doc/salome/examples/XTPlugindemo.py
new file mode 100644 (file)
index 0000000..f223b41
--- /dev/null
@@ -0,0 +1,27 @@
+# Import XT
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+# Example of import file in XT format
+
+print "Test Import XT ..."
+
+dir = "" # please define import directory here
+if dir != "":   
+    # File for Import testing
+    fileImport = dir + "" # please define file name here
+    if fileImport != dir:
+        # import shape
+        Shape1 = geompy.ImportXT(fileImport)
+        geompy.addToStudy(Shape1, "ImportXT_1")
+        # It is possible also to use next format of importing and publishing in study
+        Shape2 = geompy.ImportXT(fileImport,"ImportXT_2")
+        print "OK"
+    else:
+        print "please define file name in python file"
+else:
+    print "please define import directory in python file"
\ No newline at end of file
diff --git a/doc/salome/gui/CMakeLists.txt b/doc/salome/gui/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..f123072
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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(XTPLUGIN)
diff --git a/doc/salome/gui/XTPLUGIN/CMakeLists.txt b/doc/salome/gui/XTPLUGIN/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..aab2ca7
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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)
+
+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/XTPluginBuilder.py ${CMAKE_SOURCE_DIR}/src/XTPluginBuilder.py
+  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}/XTPLUGIN DESTINATION ${SALOME_INSTALL_DOC}/gui)
+INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/XTPLUGIN)
+INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/XTPLUGIN/xtpluginpy_doc)
+
+SET(make_clean_files XTPLUGIN xtpluginpy_doc.tag)
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
diff --git a/doc/salome/gui/XTPLUGIN/doxyfile.in b/doc/salome/gui/XTPLUGIN/doxyfile.in
new file mode 100755 (executable)
index 0000000..e4e9e35
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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 XTPLUGIN User's Guide"
+OUTPUT_DIRECTORY  = XTPLUGIN
+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          = xtpluginpy_doc.tag=../XTPLUGIN/xtpluginpy_doc
+SEARCHENGINE      = YES
+
+#---------------------------------------------------------------------------
+#Custom commands
+#---------------------------------------------------------------------------
+ALIASES += tui_script{1}="\include \1 <a href=\"../../examples/XTPLUGIN/\1\">Download this script</a>"
diff --git a/doc/salome/gui/XTPLUGIN/doxyfile_py.in b/doc/salome/gui/XTPLUGIN/doxyfile_py.in
new file mode 100755 (executable)
index 0000000..8d6157f
--- /dev/null
@@ -0,0 +1,160 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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 XTPLUGIN User's Guide"
+OUTPUT_DIRECTORY       = XTPLUGIN
+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/XTPlugin_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       = xtpluginpy_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  = xtpluginpy_doc.tag
+SEARCHENGINE      = YES
diff --git a/doc/salome/gui/XTPLUGIN/images/head.png b/doc/salome/gui/XTPLUGIN/images/head.png
new file mode 100755 (executable)
index 0000000..307d9ef
Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/head.png differ
diff --git a/doc/salome/gui/XTPLUGIN/images/import_xt.png b/doc/salome/gui/XTPLUGIN/images/import_xt.png
new file mode 100644 (file)
index 0000000..161bbde
Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/import_xt.png differ
diff --git a/doc/salome/gui/XTPLUGIN/images/reopen_xt.png b/doc/salome/gui/XTPLUGIN/images/reopen_xt.png
new file mode 100644 (file)
index 0000000..9d6745d
Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/reopen_xt.png differ
diff --git a/doc/salome/gui/XTPLUGIN/input/index.doc b/doc/salome/gui/XTPLUGIN/input/index.doc
new file mode 100644 (file)
index 0000000..0b30547
--- /dev/null
@@ -0,0 +1,16 @@
+/*!
+
+\mainpage Introduction to XTPLUGIN
+
+\b Parasolid interface to be used as plugin for SALOME Geometry 
+module. 
+It is destined for:
+- Importing CAD models stored in Parasolid format ( *.x_t and *.xt files ) into 
+SALOME study;
+
+To manage parameters of the XTPLUGIN use \subpage xtplugin_import_page.
+
+Also all XTPLUGIN functionalities are accessible via
+\subpage xtplugin_python_interface_page "XTPLUGIN Python interface".
+
+*/
diff --git a/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc b/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc
new file mode 100644 (file)
index 0000000..d0e754d
--- /dev/null
@@ -0,0 +1,23 @@
+/*!
+
+\page xtplugin_import_page Import XT
+
+For using XTPLUGIN functionalities in SALOME:
+
+- Run SALOME and activate Geometry module.
+
+- Import the XT file from menu <b>File/Import/XT</b>.
+
+  \image html import_xt.png
+  
+  Browse and select the file and click "Open" button. New object (shape) 
+  will appears in the SALOME object browser.
+
+  \note It is possible to re-open from the initial file a previously imported shape if 
+  the file has been changed on disk. For this, select <b>Reload From Disk</b> 
+  in the context menu of the imported shape. The reloaded shape will have the same 
+  representation parameters as before this operation.
+
+  \image html reopen_xt.png
+
+*/
diff --git a/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc b/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc
new file mode 100644 (file)
index 0000000..a00567e
--- /dev/null
@@ -0,0 +1,19 @@
+/*!
+
+\page xtplugin_python_interface_page Python Interface
+
+Python package XTPluginBuilder defines several classes, destined for 
+import CAD models in Parasolid format (*.x_t and *.xt files).
+
+XTPLUGIN dynamically adds several methods to the geomBuilder.
+
+Below you can see an example of usage of the XTPluginBuilder package for 
+import CAD models:
+
+\anchor example_XTPlugin
+<h2>Example of import CAD model stored in Parasolid format (*.x_t and *.xt files) with XTPLUGIN:</h2>
+\tui_script{XTPlugindemo.py}
+
+*/
+
+
diff --git a/doc/salome/gui/XTPLUGIN/static/footer.html b/doc/salome/gui/XTPLUGIN/static/footer.html
new file mode 100755 (executable)
index 0000000..e21ab0c
--- /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  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
+    </li>
+  </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/doc/salome/gui/XTPLUGIN/static/header.html.in b/doc/salome/gui/XTPLUGIN/static/header.html.in
new file mode 100755 (executable)
index 0000000..028eaab
--- /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: @SALOMEXTPLUGIN_VERSION@</div></div></div>
+<!-- end header part -->
diff --git a/doc/salome/gui/XTPLUGIN/static/header_py.html.in b/doc/salome/gui/XTPLUGIN/static/header_py.html.in
new file mode 100644 (file)
index 0000000..3288693
--- /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: @SALOMEXTPLUGIN_VERSION@</div></div></div>
+<div align="bottom-left"><a href=../index.html>Home</a></div>
+<!-- end header part -->
diff --git a/doc/salome/gui/XTPLUGIN/static/salome_extra.css b/doc/salome/gui/XTPLUGIN/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..72cd17f
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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(SalomeIDLXTPlugin_IDLSOURCES
+  XTPlugin_Gen.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(SalomeIDLXTPlugin "${SalomeIDLXTPlugin_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" "${IDL_LINK_FLAGS}")
+ADD_DEPENDENCIES(SalomeIDLXTPlugin ${GEOM_SalomeIDLGEOM})
+INSTALL(TARGETS SalomeIDLXTPlugin EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
diff --git a/idl/XTPlugin_Gen.idl b/idl/XTPlugin_Gen.idl
new file mode 100644 (file)
index 0000000..3e36727
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 __XTPlugin_GEN__
+#define __XTPlugin_GEN__
+
+#include "GEOM_Gen.idl"
+
+module XTPlugin {
+
+  /*!
+   *  \brief Interface for XTPlugin modeling functions.
+   */
+  interface GEOM_IXTPluginOperations : GEOM::GEOM_IOperations
+  {      
+    /*!
+     *  \brief Import a shape from the XT file.
+     *
+     *  \param theFileName The file, containing the shape.
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */              
+    GEOM::ListOfGO ImportXT( in string theFileName );
+  };
+};
+
+#endif
diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml
new file mode 100644 (file)
index 0000000..067fe64
--- /dev/null
@@ -0,0 +1,32 @@
+<!--
+  Copyright (C) 2014  CEA/DEN, EDF R&D, 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="XTPlugin" value="${XTPLUGIN_ROOT_DIR}/share/salome/resources/xtplugin"/>
+  </section>
+  <section name="GEOM">
+    <!-- Default GEOM module plugins -->
+    <parameter name="plugins" value="XTPlugin"/>
+  </section>
+  <section name="geom_help" >
+    <parameter name="Plug-ins/XT plugin User's Guide" value="${XTPLUGIN_ROOT_DIR}/share/doc/salome/gui/XTPLUGIN/index.html"/>
+  </section>
+</document>
diff --git a/resources/XTPlugin.xml b/resources/XTPlugin.xml
new file mode 100644 (file)
index 0000000..652294a
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+<!--
+  Copyright (C) 2014  CEA/DEN, EDF R&D, 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="XTPlugin"
+               server-lib="XTPluginEngine"
+               gui-lib="XTPluginGUI">
+    <actions>
+      <action label="Import_XT"
+              menu="FILE/IMPORT:10/IMPORTXT"
+              status-bar="IMPORTXT">
+      </action>
+    </actions>
+  </geom-plugin>
+
+</geom-plugins>
diff --git a/src/XTPluginBuilder.py b/src/XTPluginBuilder.py
new file mode 100644 (file)
index 0000000..20611c2
--- /dev/null
@@ -0,0 +1,70 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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 XTPlugin import GEOM_IXTPluginOperations
+
+# Engine Library Name
+__libraryName__ = "XTPluginEngine"
+
+def GetXTPluginOperations(self):
+    anOp = self.GetPluginOperations(self.myStudyId, __libraryName__)
+    return anOp._narrow(GEOM_IXTPluginOperations)
+
+## Import a shape from the XT 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.
+def ImportXT(self, theFileName, theName=None):
+    """
+    Import a shape from the XT 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 = GetXTPluginOperations(self)
+    aListObj = anOp.ImportXT(theFileName)
+    RaiseIfFailed("ImportXT", 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/XTPluginEngine.cxx b/src/XTPluginEngine.cxx
new file mode 100644 (file)
index 0000000..b0dd35a
--- /dev/null
@@ -0,0 +1,32 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_Engine.hxx"
+#include "XTPlugin_OperationsCreator.hh"
+
+extern "C"
+{
+XTPLUGINENGINE_EXPORT
+  GEOM_GenericOperationsCreator* GetOperationsCreator()
+  {
+       XTPlugin_OperationsCreator* aCreator = new XTPlugin_OperationsCreator();
+    return aCreator;
+  }
+}
diff --git a/src/XTPluginGUI.cxx b/src/XTPluginGUI.cxx
new file mode 100644 (file)
index 0000000..ceb94bc
--- /dev/null
@@ -0,0 +1,103 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPluginGUI.h"
+#include "XTPlugin_ImportDlg.h"
+
+// GUI includes
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SalomeApp_Application.h>
+#include <SALOME_ListIteratorOfListIO.hxx>
+#include <LightApp_SelectionMgr.h>
+
+// GEOM includes
+#include <GeometryGUI.h>
+
+//=======================================================================
+// function : XTPluginGUI()
+// purpose  : Constructor
+//=======================================================================
+XTPluginGUI::XTPluginGUI( GeometryGUI* parent ) : GEOMPluginGUI( parent )
+{
+}
+
+//=======================================================================
+// function : ~XTPluginGUI
+// purpose  : Destructor
+//=======================================================================
+XTPluginGUI::~XTPluginGUI()
+{
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose  : 
+//=======================================================================
+bool XTPluginGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
+{
+  switch ( theCommandID ) {
+  case 1:
+    return OnGUIEvent("Import_XT", parent);
+  default:
+    return OnGUIEvent("", parent);
+  }
+  return false;
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose  :
+//=======================================================================
+bool XTPluginGUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent )
+{
+  SalomeApp_Application* app = getGeometryGUI()->getApp();
+  if (!app) return false;
+
+  getGeometryGUI()->EmitSignalDeactivateDialog();
+
+  SUIT_FileDlg* dialog = NULL;
+  if (theCommandID == "Import_XT") {
+    dialog = new XTPlugin_ImportDlg( parent );
+    if (dialog != NULL)
+      dialog->show();
+    if( dialog->exec() == QDialog::Accepted )
+      delete dialog;
+  }
+  else {
+    app->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) );
+  }
+
+  return true;
+}
+
+//=====================================================================================
+// EXPORTED METHODS
+//=====================================================================================
+extern "C"
+{
+#ifdef WIN32
+    __declspec( dllexport )
+#endif
+  GEOMGUI* GetLibGUI( GeometryGUI* parent )
+  {
+    return new XTPluginGUI( parent );
+  }
+}
diff --git a/src/XTPluginGUI.h b/src/XTPluginGUI.h
new file mode 100644 (file)
index 0000000..b40daec
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 XTPluginGUI_H
+#define XTPluginGUI_H
+
+#include <GEOMPluginGUI.h>
+
+class XTPluginGUI: public GEOMPluginGUI
+{
+public:
+  XTPluginGUI( GeometryGUI* parent );
+  ~XTPluginGUI();
+
+  bool OnGUIEvent( int commandId, SUIT_Desktop* );
+  bool OnGUIEvent( const QString&, SUIT_Desktop* );
+};
+
+#endif // XTPluginGUI_H
diff --git a/src/XTPlugin_IECallBack.cxx b/src/XTPlugin_IECallBack.cxx
new file mode 100755 (executable)
index 0000000..dd2d643
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_IECallBack.hxx"
+
+//=============================================================================
+/*!
+ *  constructor
+ */
+//=============================================================================
+XTPlugin_IECallBack::XTPlugin_IECallBack( XTPlugin_IOperations* theOperations )
+: GEOMImpl_IECallBack()
+{
+  myPluginOperations = theOperations;
+}
+
+//=============================================================================
+/*!
+ *  destructor
+ */
+//=============================================================================
+XTPlugin_IECallBack::~XTPlugin_IECallBack()
+{
+}
+
+//=============================================================================
+/*!
+ *  Import
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfTransient)
+XTPlugin_IECallBack::Import( const TCollection_AsciiString& theFormatName,
+                         const TCollection_AsciiString& theFileName )
+{
+  return myPluginOperations->ImportXT( theFileName );
+}
+
diff --git a/src/XTPlugin_IECallBack.hxx b/src/XTPlugin_IECallBack.hxx
new file mode 100644 (file)
index 0000000..5537b93
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 _XTPlugin_IECallBack_HXX_
+#define _XTPlugin_IECallBack_HXX_
+
+// internal includes
+#include "XTPlugin_IOperations.hxx"
+
+// GEOM includes
+#include <GEOM_Object.hxx>
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCC includes
+#include <TCollection_AsciiString.hxx>
+
+class XTPlugin_IECallBack : public GEOMImpl_IECallBack
+{
+public:
+  Standard_EXPORT XTPlugin_IECallBack( XTPlugin_IOperations* theOperations );
+  Standard_EXPORT ~XTPlugin_IECallBack();
+
+  Standard_EXPORT virtual
+  Handle(TColStd_HSequenceOfTransient) Import( const TCollection_AsciiString& theFormatName,
+                                                                          const TCollection_AsciiString& theFileName );
+
+private:
+  XTPlugin_IOperations* myPluginOperations;
+};
+
+#endif
diff --git a/src/XTPlugin_IImport.hxx b/src/XTPlugin_IImport.hxx
new file mode 100644 (file)
index 0000000..9a4453c
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 _XTPlugin_IImport_HXX_
+#define _XTPlugin_IImport_HXX_
+
+#include "GEOM_Function.hxx"
+
+#define IMPORTXT_ARG_FILENAME 1
+
+class XTPlugin_IImport
+{
+public:
+  XTPlugin_IImport( Handle(GEOM_Function) theFunction)
+    : _func(theFunction) {}
+
+  void SetFileName( const TCollection_AsciiString& theFileName )
+    { _func->SetString( IMPORTXT_ARG_FILENAME, theFileName ); }
+  TCollection_AsciiString GetFileName()
+    { return _func->GetString( IMPORTXT_ARG_FILENAME ); }
+  
+private:
+  Handle(GEOM_Function) _func;
+};
+
+#endif // _XTPlugin_IImport_HXX_
diff --git a/src/XTPlugin_IOperations.cxx b/src/XTPlugin_IOperations.cxx
new file mode 100644 (file)
index 0000000..f2268c3
--- /dev/null
@@ -0,0 +1,112 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_IOperations.hxx"
+#include "XTPlugin_ImportDriver.hxx"
+#include "XTPlugin_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
+ */
+//=============================================================================
+XTPlugin_IOperations::XTPlugin_IOperations( GEOM_Engine* theEngine, int theDocID )
+: GEOMImpl_IBaseIEOperations( theEngine, theDocID )
+{
+  MESSAGE( "XTPlugin_IOperations::XTPlugin_IOperations" );
+}
+
+//=============================================================================
+/*!
+ *  Destructor
+ */
+//=============================================================================
+XTPlugin_IOperations::~XTPlugin_IOperations()
+{
+  MESSAGE( "XTPlugin_IOperations::~XTPlugin_IOperations" );
+}
+
+//=============================================================================
+/*!
+ *  ImportXT
+ *  Import a shape from XT 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)
+XTPlugin_IOperations::ImportXT( 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( XTPlugin_ImportDriver::GetID(), IMPORT_SHAPE);
+  if (aFunction.IsNull()) return NULL;
+
+  //Check if the function is set correctly
+  if (aFunction->GetDriverGUID() != XTPlugin_ImportDriver::GetID()) return NULL;
+
+  //Set parameters
+  XTPlugin_IImport aCI( aFunction );
+  aCI.SetFileName( theFileName );
+
+  //Perform the Import
+  Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient;
+
+  try {
+#if OCC_VERSION_LARGE > 0x06010000
+    OCC_CATCH_SIGNALS;
+#endif
+    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.ImportXT(\"" << theFileName.ToCString() << "\" )";
+  SetErrorCode(OK);
+
+  return aSeq;
+}
diff --git a/src/XTPlugin_IOperations.hxx b/src/XTPlugin_IOperations.hxx
new file mode 100644 (file)
index 0000000..cdd8f37
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 : XTPlugin_IOperations.hxx
+
+#ifndef _XTPlugin_IOperations_HXX_
+#define _XTPlugin_IOperations_HXX_
+
+// GEOM includes
+#include <GEOMImpl_IBaseIEOperations.hxx>
+
+class XTPlugin_IOperations: public GEOMImpl_IBaseIEOperations
+{
+public:
+  Standard_EXPORT XTPlugin_IOperations( GEOM_Engine*, int );
+  Standard_EXPORT ~XTPlugin_IOperations();
+
+  Standard_EXPORT Handle(TColStd_HSequenceOfTransient) ImportXT( const TCollection_AsciiString& );
+};
+
+#endif
diff --git a/src/XTPlugin_ImportDlg.cxx b/src/XTPlugin_ImportDlg.cxx
new file mode 100644 (file)
index 0000000..d5f962d
--- /dev/null
@@ -0,0 +1,142 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_ImportDlg.h"
+#include "XTPlugin_Operations_i.hh"
+
+// GUI includes
+#include <SUIT_Session.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_Desktop.h>
+#include <SUIT_Tools.h>
+#include <SalomeApp_Application.h>
+
+// GEOM includes
+#include <GEOMBase.h>
+#include <GEOM_Operation.h>
+
+//=================================================================================
+// Constructor
+//=================================================================================
+XTPlugin_ImportDlg::XTPlugin_ImportDlg( QWidget* parent )
+: SUIT_FileDlg( parent, true, true, true ),
+  GEOMBase_Helper( dynamic_cast<SUIT_Desktop*>( parent ) )
+{
+  setWindowTitle( tr( "XTPLUGIN_IMPORT_TITLE" ) );
+  setAcceptMode( AcceptOpen );
+  setNameFilter( tr( "XTPLUGIN_XT_FILES" ) );
+  setFileMode( QFileDialog::ExistingFiles );
+}
+
+//=================================================================================
+// Destructor
+//=================================================================================
+XTPlugin_ImportDlg::~XTPlugin_ImportDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+
+//=================================================================================
+// function : createOperation
+// purpose  :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr XTPlugin_ImportDlg::createOperation()
+{
+  return getGeomEngine()->GetPluginOperations(getStudyId(), "XTPluginEngine");
+}
+
+//=================================================================================
+// function : isValid
+// purpose  :
+//=================================================================================
+bool XTPlugin_ImportDlg::isValid (QString& msg)
+{
+  bool ok = true;
+  //@@ add custom validation actions here @@//
+  return ok;
+}
+
+//=================================================================================
+// function : execute
+// purpose  :
+//=================================================================================
+bool XTPlugin_ImportDlg::execute( ObjectList& objects )
+{
+  bool res = false;
+  GEOM::GEOM_Object_var anObj;
+  XTPlugin::GEOM_IXTPluginOperations_var anOper = XTPlugin::GEOM_IXTPluginOperations::_narrow( getOperation() );
+
+  SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+
+  QStringList fileNames = selectedFiles();
+  if ( fileNames.count() == 0 )
+    return false; // nothing selected, return
+
+  for( int i = 0; i < fileNames.size(); i++ ) {
+    QString aFileName = fileNames.at( i );
+    if ( aFileName.isEmpty() )
+      continue;
+    GEOM_Operation* anOp = new GEOM_Operation( app, anOper.in() );
+    try {
+      app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( SUIT_Tools::file( aFileName.toUtf8().constData(), /*withExten=*/true ) ) );
+      anOp->start();
+      GEOM::ListOfGO_var anObj = anOper->ImportXT( aFileName.toUtf8().constData() );
+      if( anObj->length() > 0 && anOper->IsDone() ) {
+        GEOM::GEOM_Object_ptr anObjPtr = anObj[0]._retn();
+        objects.push_back( anObjPtr );
+        QString aPublishObjName = GEOMBase::GetDefaultName( SUIT_Tools::file( fileNames.at( i ),
+                                                            /*withExten=*/true ) );
+        anObjPtr->SetName( aPublishObjName.toStdString().c_str() );
+        anOp->commit();
+      }
+      else {
+        anOp->abort();
+        SUIT_MessageBox::critical( app->desktop(),
+                                   QObject::tr("GEOM_ERROR"),
+                                   QObject::tr("GEOM_PRP_ABORT") + "\n" + QObject::tr( anOper->GetErrorCode() ) );
+      }
+    }
+    catch( const SALOME::SALOME_Exception& S_ex ) {
+      anOp->abort();
+    }
+  }
+  return true;
+}
+
+//=================================================================================
+// function : accept
+// purpose  :
+//=================================================================================
+void XTPlugin_ImportDlg::accept()
+{
+  SUIT_FileDlg::accept();
+  onAccept();
+}
+
+//=================================================================================
+// function : getObjectName
+// purpose  :
+//=================================================================================
+QString XTPlugin_ImportDlg::getObjectName( GEOM::GEOM_Object_ptr object ) const
+{
+  if( object->_is_nil() )
+    return QString::null;
+  return object->GetName();
+}
diff --git a/src/XTPlugin_ImportDlg.h b/src/XTPlugin_ImportDlg.h
new file mode 100644 (file)
index 0000000..0eeb222
--- /dev/null
@@ -0,0 +1,49 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 XTPlugin_IMPORTDLG_H
+#define XTPlugin_IMPORTDLG_H
+
+// GUI includes
+#include <SUIT_FileDlg.h>
+
+// GEOM includes
+#include <GEOMBase_Helper.h>
+#include <GEOM_GenericObjPtr.h>
+
+class XTPlugin_ImportDlg: public SUIT_FileDlg, public GEOMBase_Helper
+{
+  Q_OBJECT
+
+public:
+  XTPlugin_ImportDlg( QWidget* = 0 );
+  ~XTPlugin_ImportDlg();
+
+protected:
+  // redefined from GEOMBase_Helper
+  virtual GEOM::GEOM_IOperations_ptr createOperation();
+  virtual bool                       isValid( QString& );
+  virtual bool                       execute( ObjectList& );
+  virtual QString                    getObjectName( GEOM::GEOM_Object_ptr object ) const;
+
+protected slots:
+  void                               accept();
+};
+
+#endif // XTPlugin_IMPORTDLG_H
diff --git a/src/XTPlugin_ImportDriver.hxx b/src/XTPlugin_ImportDriver.hxx
new file mode 100644 (file)
index 0000000..50f0ed2
--- /dev/null
@@ -0,0 +1,51 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 _XTPlugin_ImportDriver_HXX
+#define _XTPlugin_ImportDriver_HXX
+
+// GEOM includes
+#include <GEOM_BaseDriver.hxx>
+
+// OCCT includes
+#ifndef _TFunction_Logbook_HeaderFile
+#include <TFunction_Logbook.hxx>
+#endif
+
+DEFINE_STANDARD_HANDLE( XTPlugin_ImportDriver, GEOM_BaseDriver );
+
+class XTPlugin_ImportDriver : public GEOM_BaseDriver
+{
+public:
+  Standard_EXPORT XTPlugin_ImportDriver();
+  Standard_EXPORT ~XTPlugin_ImportDriver() {};
+
+  Standard_EXPORT static const Standard_GUID& GetID();
+  Standard_EXPORT virtual Standard_Integer    Execute( TFunction_Logbook& log ) const;
+  Standard_EXPORT Standard_Boolean            MustExecute( const TFunction_Logbook& ) const;
+  Standard_EXPORT virtual void                Validate( TFunction_Logbook& ) const {}
+  Standard_EXPORT virtual
+  bool GetCreationInformation( std::string&             theOperationName,
+                               std::vector<GEOM_Param>& params );
+
+DEFINE_STANDARD_RTTI( XTPlugin_ImportDriver )
+};
+
+#endif // _XTPlugin_ImportDriver_HXX
diff --git a/src/XTPlugin_OperationsCreator.cc b/src/XTPlugin_OperationsCreator.cc
new file mode 100644 (file)
index 0000000..30b712d
--- /dev/null
@@ -0,0 +1,64 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_OperationsCreator.hh"
+#include "XTPlugin_Operations_i.hh"
+#include "XTPlugin_ImportDriver.hxx"
+#include "XTPlugin_IECallBack.hxx"
+
+// KERNEL includes
+#include <Utils_ExceptHandlers.hxx>
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCCT includes
+#include <TFunction_DriverTable.hxx>
+
+//============================================================================
+// function : Create
+// purpose  :
+//============================================================================
+GEOM_IOperations_i* XTPlugin_OperationsCreator::Create( PortableServer::POA_ptr thePOA,
+                                                        int                     theStudyId,
+                                                        GEOM::GEOM_Gen_ptr      theEngine,
+                                                        ::GEOMImpl_Gen*         theGenImpl )
+{
+  Unexpect aCatch( SALOME_SalomeException );
+  MESSAGE( "XTPlugin_OperationsCreator::Create" );
+
+  if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) {
+    XTPlugin_IOperations* anOper = new XTPlugin_IOperations( theGenImpl, theStudyId );
+    _mapOfOperations[theStudyId] = anOper;
+
+    // Import XT
+    TFunction_DriverTable::Get()->AddDriver( XTPlugin_ImportDriver::GetID(),
+                                             new XTPlugin_ImportDriver() );
+
+    XTPlugin_IECallBack* XTCallBack = new XTPlugin_IECallBack( anOper );
+    GEOMImpl_IECallBack::Register( "XT", XTCallBack );
+  }
+
+  XTPlugin_Operations_i* aServant =
+    new XTPlugin_Operations_i( thePOA, theEngine, _mapOfOperations[theStudyId] );
+
+  return aServant;
+}
diff --git a/src/XTPlugin_OperationsCreator.hh b/src/XTPlugin_OperationsCreator.hh
new file mode 100755 (executable)
index 0000000..d1ae32d
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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_XTPlugin_OperationsCreator_HXX_
+#define _GEOM_XTPlugin_OperationsCreator_HXX_
+
+// internal includes
+#include "XTPlugin_Engine.hxx"
+#include "XTPlugin_IOperations.hxx"
+
+// GEOM includes
+#include "GEOM_Gen_i.hh"
+
+// C++ includes
+#include <map>
+
+//=====================================================================
+// Operations creator
+//=====================================================================
+class XTPLUGINENGINE_EXPORT XTPlugin_OperationsCreator : public GEOM_GenericOperationsCreator
+{
+public:
+  virtual GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA,
+                                      int                     theStudyId,
+                                      GEOM::GEOM_Gen_ptr      theEngine,
+                                      ::GEOMImpl_Gen*         theGenImpl );
+ private:
+  std::map <int, XTPlugin_IOperations*>  _mapOfOperations;
+};
+
+#endif
diff --git a/src/XTPlugin_Operations_i.cc b/src/XTPlugin_Operations_i.cc
new file mode 100644 (file)
index 0000000..bb22e83
--- /dev/null
@@ -0,0 +1,106 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 "XTPlugin_Operations_i.hh"
+#include <XTPLUGIN_version.h>
+
+// KERNEL includes
+#include <utilities.h>
+
+//=============================================================================
+/*!
+ *   constructor:
+ */
+//=============================================================================
+XTPlugin_Operations_i::XTPlugin_Operations_i( PortableServer::POA_ptr thePOA,
+                                                            GEOM::GEOM_Gen_ptr theEngine,
+                                                            ::XTPlugin_IOperations* theImpl )
+:GEOM_IOperations_i( thePOA, theEngine, theImpl )
+{
+  MESSAGE( "XTPlugin_Operations_i::XTPlugin_Operations_i" );
+}
+
+//=============================================================================
+/*!
+ *  destructor
+ */
+//=============================================================================
+XTPlugin_Operations_i::~XTPlugin_Operations_i()
+{
+  MESSAGE( "XTPlugin_Operations_i::~XTPlugin_Operations_i" );
+}
+
+//=============================================================================
+/*!
+ *  ImportXT
+ *  Import a shape from XT format
+ *  \param theFileName The name of the file to import
+ *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+ */
+//=============================================================================
+GEOM::ListOfGO* XTPlugin_Operations_i::ImportXT( const char* theFileName )
+{
+  GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Import the shape from the file
+  char* aFileName = strdup( theFileName );
+  TCollection_AsciiString fileName( aFileName );
+
+  //Import the shape from the file
+  Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->ImportXT( fileName );
+
+  free( aFileName );
+  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();
+}
+
+//=============================================================================
+/*!
+ *  \brief Get version of the plugin.
+ *  \return the version of the plugin
+*/
+//=============================================================================
+
+int XTPlugin_Operations_i::GetVersion()
+{
+  return XTPLUGIN_VERSION;
+}
+//=============================================================================
+/*!
+ *  \brief Get version of the plugin.
+ *  \return the string representation of the plugin's version
+*/
+//=============================================================================
+
+char* XTPlugin_Operations_i::GetVersionStr()
+{
+  return (char*)XTPLUGIN_VERSION_STR;
+}
diff --git a/src/XTPlugin_Operations_i.hh b/src/XTPlugin_Operations_i.hh
new file mode 100644 (file)
index 0000000..c717b09
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright (C) 2014  CEA/DEN, EDF R&D, 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 _XTPlugin_Operations_i_HeaderFile
+#define _XTPlugin_Operations_i_HeaderFile
+
+// idl includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER( GEOM_Gen )
+#include CORBA_SERVER_HEADER( XTPlugin_Gen )
+
+// internal includes
+#include "XTPlugin_Engine.hxx"
+#include "XTPlugin_IOperations.hxx"
+
+// GEOM includes
+#include <GEOM_IOperations_i.hh>
+
+class XTPLUGINENGINE_EXPORT XTPlugin_Operations_i :
+      public virtual POA_XTPlugin::GEOM_IXTPluginOperations,
+      public virtual GEOM_IOperations_i
+{
+public:
+  XTPlugin_Operations_i( PortableServer::POA_ptr thePOA,
+                                GEOM::GEOM_Gen_ptr theEngine,
+                                ::XTPlugin_IOperations* theImpl );
+  ~XTPlugin_Operations_i();
+
+  GEOM::ListOfGO* ImportXT( const char* );
+
+  // Version information
+  virtual int     GetVersion();
+  virtual char*   GetVersionStr();
+
+  ::XTPlugin_IOperations* GetOperations()
+  { return (::XTPlugin_IOperations*)GetImpl(); }
+};
+
+#endif
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644 (file)
index 0000000..7fc622d
--- /dev/null
@@ -0,0 +1,23 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2014  CEA/DEN, EDF R&D, 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
+#
+
+#  XTPLUGIN : binding of C++ implementation with Python
+#  File   : __init__.py
+#
diff --git a/src/resources/XTPlugin_msg_en.ts b/src/resources/XTPlugin_msg_en.ts
new file mode 100644 (file)
index 0000000..8be5f3b
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_IMPORTXT</source>
+        <translation>XT</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTXT</source>
+        <translation>Import XT</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTXT</source>
+        <translation>Import XT</translation>
+    </message>
+    <message>
+        <source>XTPLUGIN_XT_FILES</source>
+        <translation>Parasolid Files ( *.x_t *.xt )</translation>
+    </message>
+</context>
+<context>
+    <name>XTPlugin_ImportDlg</name>
+    <message>
+        <source>XTPLUGIN_IMPORT_TITLE</source>
+        <translation>Import XT</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/resources/XTPlugin_msg_fr.ts b/src/resources/XTPlugin_msg_fr.ts
new file mode 100644 (file)
index 0000000..ca1628d
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_IMPORTXT</source>
+        <translation>XT</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTXT</source>
+        <translation>Importer XT</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTXT</source>
+        <translation>Importer XT</translation>
+    </message>
+    <message>
+        <source>XTPLUGIN_XT_FILES</source>
+        <translation>Parasolid Fichiers ( *.x_t *.xt )</translation>
+    </message>
+</context>
+<context>
+    <name>XTPlugin_ImportDlg</name>
+    <message>
+        <source>XTPLUGIN_IMPORT_TITLE</source>
+        <translation>Importer XT</translation>
+    </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/src/resources/XTPlugin_msg_ja.ts b/src/resources/XTPlugin_msg_ja.ts
new file mode 100644 (file)
index 0000000..bbee63d
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_IMPORTXT</source>
+        <translation type="unfinished">XT</translation>
+    </message>
+    <message>
+        <source>TOP_IMPORTXT</source>
+        <translation type="unfinished">Import XT</translation>
+    </message>
+    <message>
+        <source>STB_IMPORTXT</source>
+        <translation type="unfinished">Import XT</translation>
+    </message>
+    <message>
+        <source>XTPLUGIN_XT_FILES</source>
+        <translation type="unfinished">Parasolid Files ( *.x_t *.xt )</translation>
+    </message>
+</context>
+<context>
+    <name>XTPlugin_ImportDlg</name>
+    <message>
+        <source>XTPLUGIN_IMPORT_TITLE</source>
+        <translation type="unfinished">Import XT</translation>
+    </message>
+</context>
+</TS>
\ No newline at end of file