From d548c549d3ce3b81ae9e9c13f900bbd7401b8101 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 4 Feb 2009 21:29:45 +0000 Subject: [PATCH] This commit was generated by cvs2git to create tag 'V5_1_0_for_TC1'. Sprout from BR_V5_DEV 2008-11-01 11:07:41 UTC vsr 'Improve SALOME style handling' Cherrypick from BR_V5_DEV 2009-02-04 21:29:44 UTC prascle 'PR: add a mecanism to control the view closing': adm_local/cmake_files/FindCAS.cmake adm_local/cmake_files/FindGUI.cmake adm_local/cmake_files/FindOPENGL.cmake adm_local/cmake_files/FindQT4.cmake adm_local/cmake_files/FindQWT.cmake adm_local/cmake_files/FindSIPPYQT.cmake adm_local/cmake_files/FindVTK.cmake adm_local/cmake_files/Makefile.am build_cmake build_cmake.bat doc/salome/gui/images/directorypage.png doc/salome/gui/images/featureedgesprops.png doc/salome/gui/images/graduateaxes1.png doc/salome/gui/images/image100.png doc/salome/gui/images/image103.png doc/salome/gui/images/image106.png doc/salome/gui/images/image108.png doc/salome/gui/images/image72.png doc/salome/gui/images/image77.png doc/salome/gui/images/image86.png doc/salome/gui/images/image89.png doc/salome/gui/images/image91.png doc/salome/gui/images/image96.png doc/salome/gui/images/image97.png doc/salome/gui/images/image98.png doc/salome/gui/images/image99.png doc/salome/gui/images/installtypepage.png doc/salome/gui/images/mainmenu.png doc/salome/gui/images/notebook1.png doc/salome/gui/images/platformpage.png doc/salome/gui/images/plot2d_clone.png doc/salome/gui/images/plot2d_legend.png doc/salome/gui/images/plot2d_lines.png doc/salome/gui/images/plot2d_logarithmic_horizontal.png doc/salome/gui/images/plot2d_logarithmic_vertical.png doc/salome/gui/images/plot2d_points.png doc/salome/gui/images/plot2d_settings.png doc/salome/gui/images/plot2d_splines.png doc/salome/gui/images/productpage3.png doc/salome/gui/images/productpage4.png doc/salome/gui/images/progresspage2.png doc/salome/gui/images/studymanagement.png doc/salome/gui/images/theme1.png doc/salome/gui/images/theme2.png doc/salome/gui/images/viewmenu.png doc/salome/gui/images/windowmenu.png doc/salome/gui/input/text_user_interface.doc doc/salome/gui/input/themes.doc doc/salome/gui/input/using_notebook.doc src/Event/SALOME_EventFilter.cxx src/Event/SALOME_EventFilter.h src/QxScene/DebTrace.hxx src/QxScene/Makefile.am src/QxScene/QxScene.h src/QxScene/QxScene_Def.h src/QxScene/QxScene_ViewManager.cxx src/QxScene/QxScene_ViewManager.h src/QxScene/QxScene_ViewModel.cxx src/QxScene/QxScene_ViewModel.h src/QxScene/QxScene_ViewWindow.cxx src/QxScene/QxScene_ViewWindow.h src/QxScene/resources/QxSceneViewer_images.ts src/QxScene/resources/QxSceneViewer_msg_en.ts src/QxScene/resources/QxScene_images.po src/QxScene/resources/QxScene_msg_en.po src/QxScene/resources/qx_view_fitall.png src/QxScene/resources/qx_view_fitarea.png src/QxScene/resources/qx_view_glpan.png src/QxScene/resources/qx_view_pan.png src/QxScene/resources/qx_view_reset.png src/QxScene/resources/qx_view_zoom.png src/SalomeApp/SalomeApp_DoubleSpinBox.cxx src/SalomeApp/SalomeApp_DoubleSpinBox.h src/SalomeApp/SalomeApp_IntSpinBox.cxx src/SalomeApp/SalomeApp_IntSpinBox.h src/SalomeApp/SalomeApp_NoteBookDlg.cxx src/SalomeApp/SalomeApp_NoteBookDlg.h --- adm_local/cmake_files/FindCAS.cmake | 160 +++ adm_local/cmake_files/FindGUI.cmake | 55 + adm_local/cmake_files/FindOPENGL.cmake | 27 + adm_local/cmake_files/FindQT4.cmake | 33 + adm_local/cmake_files/FindQWT.cmake | 33 + adm_local/cmake_files/FindSIPPYQT.cmake | 55 + adm_local/cmake_files/FindVTK.cmake | 48 + adm_local/cmake_files/Makefile.am | 32 + build_cmake | 30 + build_cmake.bat | 2 + doc/salome/gui/images/directorypage.png | Bin 0 -> 12643 bytes doc/salome/gui/images/featureedgesprops.png | Bin 0 -> 31674 bytes doc/salome/gui/images/graduateaxes1.png | Bin 0 -> 23825 bytes doc/salome/gui/images/image100.png | Bin 0 -> 982 bytes doc/salome/gui/images/image103.png | Bin 0 -> 682 bytes doc/salome/gui/images/image106.png | Bin 0 -> 809 bytes doc/salome/gui/images/image108.png | Bin 0 -> 1128 bytes doc/salome/gui/images/image72.png | Bin 0 -> 1260 bytes doc/salome/gui/images/image77.png | Bin 0 -> 441 bytes doc/salome/gui/images/image86.png | Bin 0 -> 441 bytes doc/salome/gui/images/image89.png | Bin 0 -> 886 bytes doc/salome/gui/images/image91.png | Bin 0 -> 918 bytes doc/salome/gui/images/image96.png | Bin 0 -> 816 bytes doc/salome/gui/images/image97.png | Bin 0 -> 912 bytes doc/salome/gui/images/image98.png | Bin 0 -> 816 bytes doc/salome/gui/images/image99.png | Bin 0 -> 982 bytes doc/salome/gui/images/installtypepage.png | Bin 0 -> 18643 bytes doc/salome/gui/images/mainmenu.png | Bin 0 -> 1820 bytes doc/salome/gui/images/notebook1.png | Bin 0 -> 16052 bytes doc/salome/gui/images/platformpage.png | Bin 0 -> 19244 bytes doc/salome/gui/images/plot2d_clone.png | Bin 0 -> 441 bytes doc/salome/gui/images/plot2d_legend.png | Bin 0 -> 790 bytes doc/salome/gui/images/plot2d_lines.png | Bin 0 -> 408 bytes .../images/plot2d_logarithmic_horizontal.png | Bin 0 -> 721 bytes .../images/plot2d_logarithmic_vertical.png | Bin 0 -> 744 bytes doc/salome/gui/images/plot2d_points.png | Bin 0 -> 343 bytes doc/salome/gui/images/plot2d_settings.png | Bin 0 -> 764 bytes doc/salome/gui/images/plot2d_splines.png | Bin 0 -> 432 bytes doc/salome/gui/images/productpage3.png | Bin 0 -> 24281 bytes doc/salome/gui/images/productpage4.png | Bin 0 -> 23711 bytes doc/salome/gui/images/progresspage2.png | Bin 0 -> 22176 bytes doc/salome/gui/images/studymanagement.png | Bin 0 -> 13062 bytes doc/salome/gui/images/theme1.png | Bin 0 -> 35041 bytes doc/salome/gui/images/theme2.png | Bin 0 -> 27285 bytes doc/salome/gui/images/viewmenu.png | Bin 0 -> 1481 bytes doc/salome/gui/images/windowmenu.png | Bin 0 -> 3547 bytes doc/salome/gui/input/text_user_interface.doc | 370 ++++++ doc/salome/gui/input/themes.doc | 27 + doc/salome/gui/input/using_notebook.doc | 26 + src/Event/SALOME_EventFilter.cxx | 80 ++ src/Event/SALOME_EventFilter.h | 63 + src/QxScene/DebTrace.hxx | 33 + src/QxScene/Makefile.am | 68 ++ src/QxScene/QxScene.h | 36 + src/QxScene/QxScene_Def.h | 35 + src/QxScene/QxScene_ViewManager.cxx | 89 ++ src/QxScene/QxScene_ViewManager.h | 48 + src/QxScene/QxScene_ViewModel.cxx | 117 ++ src/QxScene/QxScene_ViewModel.h | 57 + src/QxScene/QxScene_ViewWindow.cxx | 283 +++++ src/QxScene/QxScene_ViewWindow.h | 105 ++ src/QxScene/resources/QxSceneViewer_images.ts | 52 + src/QxScene/resources/QxSceneViewer_msg_en.ts | 59 + src/QxScene/resources/QxScene_images.po | 44 + src/QxScene/resources/QxScene_msg_en.po | 42 + src/QxScene/resources/qx_view_fitall.png | Bin 0 -> 816 bytes src/QxScene/resources/qx_view_fitarea.png | Bin 0 -> 912 bytes src/QxScene/resources/qx_view_glpan.png | Bin 0 -> 1086 bytes src/QxScene/resources/qx_view_pan.png | Bin 0 -> 982 bytes src/QxScene/resources/qx_view_reset.png | Bin 0 -> 918 bytes src/QxScene/resources/qx_view_zoom.png | Bin 0 -> 797 bytes src/SalomeApp/SalomeApp_DoubleSpinBox.cxx | 352 ++++++ src/SalomeApp/SalomeApp_DoubleSpinBox.h | 91 ++ src/SalomeApp/SalomeApp_IntSpinBox.cxx | 310 +++++ src/SalomeApp/SalomeApp_IntSpinBox.h | 85 ++ src/SalomeApp/SalomeApp_NoteBookDlg.cxx | 1082 +++++++++++++++++ src/SalomeApp/SalomeApp_NoteBookDlg.h | 172 +++ 77 files changed, 4201 insertions(+) create mode 100644 adm_local/cmake_files/FindCAS.cmake create mode 100644 adm_local/cmake_files/FindGUI.cmake create mode 100644 adm_local/cmake_files/FindOPENGL.cmake create mode 100644 adm_local/cmake_files/FindQT4.cmake create mode 100644 adm_local/cmake_files/FindQWT.cmake create mode 100644 adm_local/cmake_files/FindSIPPYQT.cmake create mode 100644 adm_local/cmake_files/FindVTK.cmake create mode 100644 adm_local/cmake_files/Makefile.am create mode 100755 build_cmake create mode 100644 build_cmake.bat create mode 100755 doc/salome/gui/images/directorypage.png create mode 100755 doc/salome/gui/images/featureedgesprops.png create mode 100755 doc/salome/gui/images/graduateaxes1.png create mode 100755 doc/salome/gui/images/image100.png create mode 100755 doc/salome/gui/images/image103.png create mode 100755 doc/salome/gui/images/image106.png create mode 100755 doc/salome/gui/images/image108.png create mode 100755 doc/salome/gui/images/image72.png create mode 100755 doc/salome/gui/images/image77.png create mode 100755 doc/salome/gui/images/image86.png create mode 100755 doc/salome/gui/images/image89.png create mode 100755 doc/salome/gui/images/image91.png create mode 100755 doc/salome/gui/images/image96.png create mode 100755 doc/salome/gui/images/image97.png create mode 100755 doc/salome/gui/images/image98.png create mode 100755 doc/salome/gui/images/image99.png create mode 100755 doc/salome/gui/images/installtypepage.png create mode 100755 doc/salome/gui/images/mainmenu.png create mode 100644 doc/salome/gui/images/notebook1.png create mode 100755 doc/salome/gui/images/platformpage.png create mode 100755 doc/salome/gui/images/plot2d_clone.png create mode 100755 doc/salome/gui/images/plot2d_legend.png create mode 100755 doc/salome/gui/images/plot2d_lines.png create mode 100755 doc/salome/gui/images/plot2d_logarithmic_horizontal.png create mode 100755 doc/salome/gui/images/plot2d_logarithmic_vertical.png create mode 100755 doc/salome/gui/images/plot2d_points.png create mode 100755 doc/salome/gui/images/plot2d_settings.png create mode 100755 doc/salome/gui/images/plot2d_splines.png create mode 100755 doc/salome/gui/images/productpage3.png create mode 100755 doc/salome/gui/images/productpage4.png create mode 100755 doc/salome/gui/images/progresspage2.png create mode 100755 doc/salome/gui/images/studymanagement.png create mode 100755 doc/salome/gui/images/theme1.png create mode 100755 doc/salome/gui/images/theme2.png create mode 100755 doc/salome/gui/images/viewmenu.png create mode 100755 doc/salome/gui/images/windowmenu.png create mode 100644 doc/salome/gui/input/text_user_interface.doc create mode 100755 doc/salome/gui/input/themes.doc create mode 100644 doc/salome/gui/input/using_notebook.doc create mode 100755 src/Event/SALOME_EventFilter.cxx create mode 100755 src/Event/SALOME_EventFilter.h create mode 100644 src/QxScene/DebTrace.hxx create mode 100755 src/QxScene/Makefile.am create mode 100644 src/QxScene/QxScene.h create mode 100644 src/QxScene/QxScene_Def.h create mode 100644 src/QxScene/QxScene_ViewManager.cxx create mode 100644 src/QxScene/QxScene_ViewManager.h create mode 100644 src/QxScene/QxScene_ViewModel.cxx create mode 100644 src/QxScene/QxScene_ViewModel.h create mode 100644 src/QxScene/QxScene_ViewWindow.cxx create mode 100644 src/QxScene/QxScene_ViewWindow.h create mode 100644 src/QxScene/resources/QxSceneViewer_images.ts create mode 100644 src/QxScene/resources/QxSceneViewer_msg_en.ts create mode 100644 src/QxScene/resources/QxScene_images.po create mode 100644 src/QxScene/resources/QxScene_msg_en.po create mode 100755 src/QxScene/resources/qx_view_fitall.png create mode 100755 src/QxScene/resources/qx_view_fitarea.png create mode 100644 src/QxScene/resources/qx_view_glpan.png create mode 100755 src/QxScene/resources/qx_view_pan.png create mode 100755 src/QxScene/resources/qx_view_reset.png create mode 100755 src/QxScene/resources/qx_view_zoom.png create mode 100644 src/SalomeApp/SalomeApp_DoubleSpinBox.cxx create mode 100644 src/SalomeApp/SalomeApp_DoubleSpinBox.h create mode 100644 src/SalomeApp/SalomeApp_IntSpinBox.cxx create mode 100644 src/SalomeApp/SalomeApp_IntSpinBox.h create mode 100644 src/SalomeApp/SalomeApp_NoteBookDlg.cxx create mode 100644 src/SalomeApp/SalomeApp_NoteBookDlg.h diff --git a/adm_local/cmake_files/FindCAS.cmake b/adm_local/cmake_files/FindCAS.cmake new file mode 100644 index 000000000..8490c7c66 --- /dev/null +++ b/adm_local/cmake_files/FindCAS.cmake @@ -0,0 +1,160 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +SET(CASROOT $ENV{CASROOT}) + +SET(OCC_VERSION_MAJOR 6) +SET(OCC_VERSION_MINOR 3) +SET(OCC_VERSION_MAINTENANCE 0) + +SET(CAS_CPPFLAGS) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DOCC_VERSION_MAJOR=${OCC_VERSION_MAJOR}) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DOCC_VERSION_MINOR=${OCC_VERSION_MINOR}) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DOCC_VERSION_MAINTENANCE=${OCC_VERSION_MAINTENANCE}) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DLIN -DLINTEL -DCSFDB) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DNo_exception) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DHAVE_CONFIG_H) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -DHAVE_LIMITS_H) +SET(CAS_CPPFLAGS ${CAS_CPPFLAGS} -I${CASROOT}/inc) + +IF(WINDOWS) + SET(CASROOT_LIBDIR ${CASROOT}/win32/libd) +ELSE(WINDOWS) + SET(CASROOT_LIBDIR ${CASROOT}/lib) +ENDIF(WINDOWS) + +FIND_LIBRARY(BinLPlugin BinLPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(BinPlugin BinPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(BinTObjPlugin BinTObjPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(BinXCAFPlugin BinXCAFPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(FWOSPlugin FWOSPlugin PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(mscmd mscmd PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(PTKernel PTKernel PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(StdLPlugin StdLPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(StdPlugin StdPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKAdvTools TKAdvTools PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBin TKBin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBinL TKBinL PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBinTObj TKBinTObj PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBinXCAF TKBinXCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBO TKBO PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBool TKBool PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKBRep TKBRep PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKCAF TKCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKCDF TKCDF PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCDLFront TKCDLFront PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCPPClient TKCPPClient PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCPPExt TKCPPExt PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCPPIntExt TKCPPIntExt PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCPPJini TKCPPJini PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKCSFDBSchema TKCSFDBSchema PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKDCAF TKDCAF PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKDraw TKDraw PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKernel TKernel PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKFeat TKFeat PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKFillet TKFillet PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKG2d TKG2d PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKG3d TKG3d PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKGeomAlgo TKGeomAlgo PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKGeomBase TKGeomBase PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKHLR TKHLR PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKIDLFront TKIDLFront PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKIGES TKIGES PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKLCAF TKLCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKMath TKMath PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKMesh TKMesh PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKMeshVS TKMeshVS PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKNIS TKNIS PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKOffset TKOffset PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKOpenGl TKOpenGl PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKPCAF TKPCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKPLCAF TKPLCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKPrim TKPrim PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKPShape TKPShape PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKService TKService PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKShapeSchema TKShapeSchema PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKShHealing TKShHealing PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKStdLSchema TKStdLSchema PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKStdSchema TKStdSchema PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKSTEP TKSTEP PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKSTEP209 TKSTEP209 PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKSTEPAttr TKSTEPAttr PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKSTEPBase TKSTEPBase PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKSTL TKSTL PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKTCPPExt TKTCPPExt PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKTObj TKTObj PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKTObjDRAW TKTObjDRAW PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKTopAlgo TKTopAlgo PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKTopTest TKTopTest PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKV2d TKV2d PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKV3d TKV3d PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKViewerTest TKViewerTest PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKVRML TKVRML PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKWOK TKWOK PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKWOKTcl TKWOKTcl PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXCAF TKXCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXCAFSchema TKXCAFSchema PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKXDEDRAW TKXDEDRAW PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXDEIGES TKXDEIGES PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXDESTEP TKXDESTEP PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXMesh TKXMesh PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXml TKXml PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXmlL TKXmlL PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXmlTObj TKXmlTObj PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXmlXCAF TKXmlXCAF PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(TKXSBase TKXSBase PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(TKXSDRAW TKXSDRAW PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokcmd wokcmd PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokdeliverysteps wokdeliverysteps PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokdfltsteps wokdfltsteps PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokobjssteps wokobjssteps PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokorbixsteps wokorbixsteps PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(woksteps woksteps PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(woktoolscmd woktoolscmd PATHS ${CASROOT_LIBDIR}) +# FIND_LIBRARY(wokutilscmd wokutilscmd PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(XCAFPlugin XCAFPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(XmlLPlugin XmlLPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(XmlPlugin XmlPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(XmlTObjPlugin XmlTObjPlugin PATHS ${CASROOT_LIBDIR}) +FIND_LIBRARY(XmlXCAFPlugin XmlXCAFPlugin PATHS ${CASROOT_LIBDIR}) + +SET(CAS_KERNEL ${TKernel} ${TKMath}) +SET(CAS_OCAF ${TKernel} ${TKMath} ${TKCDF} ${TKLCAF}) +SET(CAS_VIEWER ${TKService} ${TKV3d} ${TKG3d} ${TKGeomBase} ${TKBRep}) +SET(CAS_OCAFVIS ${TKCAF} ${TKBRep} ${TKG2d}) +SET(CAS_MODELER ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKBRep} ${TKTopAlgo} ${TKG2d}) + +SET(TKV3d_EA ${TKernel} ${TKMath} ${TKV3d}) +SET(TKBool_EA ${TKernel} ${TKMath} ${TKBRep} ${TKG2d} ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKTopAlgo} ${TKBool}) +SET(TKBRep_EA ${TKernel} ${TKMath} ${TKBRep}) +SET(TKIGES_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKIGES}) +SET(TKSTEP_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKSTEP}) +SET(TKSTL_EA ${TKernel} ${TKMath} ${TKSTL}) +SET(TKCAF_EA ${TKPrim} ${TKCAF}) + +SET(TKV3d ${TKV3d_EA}) +SET(TKBool ${TKBool_EA}) +SET(TKBRep ${TKBRep_EA}) +SET(TKIGES ${TKIGES_EA}) +SET(TKSTEP ${TKSTEP_EA}) +SET(TKSTL ${TKSTL_EA}) +SET(TKCAF ${TKCAF_EA}) diff --git a/adm_local/cmake_files/FindGUI.cmake b/adm_local/cmake_files/FindGUI.cmake new file mode 100644 index 000000000..14ca37915 --- /dev/null +++ b/adm_local/cmake_files/FindGUI.cmake @@ -0,0 +1,55 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +SET(GUI_CXXFLAGS -I${GUI_ROOT_DIR}/include/salome) + +FIND_LIBRARY(caf caf ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(CAM CAM ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(CASCatch CASCatch ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(DDS DDS ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(Event Event ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(GLViewer GLViewer ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(LightApp LightApp ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(LogWindow LogWindow ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(ObjBrowser ObjBrowser ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(OCCViewer OCCViewer ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(Plot2d Plot2d ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(PyConsole PyConsole ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(PyInterp PyInterp ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(QDS QDS ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(qtx qtx ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(QxScene QxScene ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomeApp SalomeApp ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomeIDLGUI SalomeIDLGUI ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomeObject SalomeObject ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomePrs SalomePrs ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomeSession SalomeSession ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SalomeStyle SalomeStyle ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SOCC SOCC ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SPlot2d SPlot2d ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(std std ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SUITApp SUITApp ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(suit suit ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SUPERVGraph SUPERVGraph ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(SVTK SVTK ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(ToolsGUI ToolsGUI ${GUI_ROOT_DIR}/lib/salome) +FIND_LIBRARY(VTKViewer VTKViewer ${GUI_ROOT_DIR}/lib/salome) diff --git a/adm_local/cmake_files/FindOPENGL.cmake b/adm_local/cmake_files/FindOPENGL.cmake new file mode 100644 index 000000000..14584056e --- /dev/null +++ b/adm_local/cmake_files/FindOPENGL.cmake @@ -0,0 +1,27 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +IF(${WINDOWS}) + FIND_LIBRARY(OpenGL_LIB OpenGL32 "C:/Program Files/Microsoft SDKs/Windows/v6.0A/lib") + FIND_LIBRARY(GlU_LIB GlU32 "C:/Program Files/Microsoft SDKs/Windows/v6.0A/lib") + SET(OGL_LIBS ${OpenGL_LIB} ${GlU_LIB}) +ENDIF(${WINDOWS}) diff --git a/adm_local/cmake_files/FindQT4.cmake b/adm_local/cmake_files/FindQT4.cmake new file mode 100644 index 000000000..6b98c5f31 --- /dev/null +++ b/adm_local/cmake_files/FindQT4.cmake @@ -0,0 +1,33 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +INCLUDE(FindQt4) +INCLUDE(UseQt4) +SET(DIRS) +FOREACH(D ${QT_INCLUDES}) +SET(DIRS ${DIRS} -I${D}) +ENDFOREACH(D ${QT_INCLUDES}) +SET(QT_INCLUDES ${DIRS}) +SET(QT_INCLUDES ${QT_INCLUDES} -DQT_THREAD_SUPPORT) +SET(QT_MT_LIBS ${QT_LIBRARIES} ${QT_QTXML_LIBRARY} ${QT_QTOPENGL_LIBRARY}) + +FIND_PROGRAM(QT_LRELEASE_EXECUTABLE lrelease) diff --git a/adm_local/cmake_files/FindQWT.cmake b/adm_local/cmake_files/FindQWT.cmake new file mode 100644 index 000000000..ea5f11dd8 --- /dev/null +++ b/adm_local/cmake_files/FindQWT.cmake @@ -0,0 +1,33 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +SET(QWTHOME $ENV{QWTHOME}) +FIND_PATH(QWT_INCLUDE_DIR qwt_plot.h ${QWTHOME}/include) +SET(QWT_INCLUDES -I${QWT_INCLUDE_DIR}) +IF(WINDOWS) +SET(QWT_INCLUDES ${QWT_INCLUDES} -DQWT_DLL) +ENDIF(WINDOWS) +IF(WINDOWS) +FIND_LIBRARY(QWT_LIBS qwt5 ${QWTHOME}/lib) +ELSE(WINDOWS) +FIND_LIBRARY(QWT_LIBS qwt ${QWTHOME}/lib) +ENDIF(WINDOWS) diff --git a/adm_local/cmake_files/FindSIPPYQT.cmake b/adm_local/cmake_files/FindSIPPYQT.cmake new file mode 100644 index 000000000..1f4ff9503 --- /dev/null +++ b/adm_local/cmake_files/FindSIPPYQT.cmake @@ -0,0 +1,55 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +FIND_PROGRAM(SIP_EXECUTABLE sip) + +SET(SIP_ROOT ${SIP_EXECUTABLE}) +IF(SIP_ROOT) +GET_FILENAME_COMPONENT(SIP_ROOT ${SIP_ROOT} PATH) +GET_FILENAME_COMPONENT(SIP_ROOT ${SIP_ROOT} PATH) +ENDIF(SIP_ROOT) + +SET(SIP_INCLUDES -I${SIP_ROOT}/include/python${PYTHON_VERSION}) + +FIND_PROGRAM(PYUIC_EXECUTABLE pyuic4) + +SET(PYUIC_ROOT ${PYUIC_EXECUTABLE}) +IF(PYUIC_ROOT) +GET_FILENAME_COMPONENT(PYUIC_ROOT ${PYUIC_ROOT} PATH) +GET_FILENAME_COMPONENT(PYUIC_ROOT ${PYUIC_ROOT} PATH) +ENDIF(PYUIC_ROOT) + +IF(WINDOWS) + SET(PYQT_SIPS ${PYUIC_ROOT}/sip) +ELSE(WINDOWS) + SET(PYQT_SIPS ${PYUIC_ROOT}/share/sip) +ENDIF(WINDOWS) + +SET(PYQT_INCLUDES -I${PYQT_SIPS}) +SET(PYQT_INCLUDES ${PYQT_INCLUDES} -I${PYQT_SIPS}/QtCore -I${PYQT_SIPS}/QtGui) +SET(PYQT_INCLUDES ${PYQT_INCLUDES} -I${PYQT_SIPS}/QtXml -I${PYQT_SIPS}/QtOpenGL) +SET(PYQT_INCLUDES ${PYQT_INCLUDES} -I${PYQT_SIPS}/QtAssistant -I${PYQT_SIPS}/QtDesigner) +SET(PYQT_INCLUDES ${PYQT_INCLUDES} -I${PYQT_SIPS}/QtNetwork -I${PYQT_SIPS}/QtSql) +SET(PYQT_INCLUDES ${PYQT_INCLUDES} -I${PYQT_SIPS}/QtSvg -I${PYQT_SIPS}/QtTest) + +SET(PYQT_SIPFLAGS -x VendorID -x PyQt_NoPrintRangeBug -t WS_X11 -t Qt_4_4_1 -g -s .cc -c .) +SET(PYQT_SIPFLAGS ${PYQT_SIPFLAGS} ${PYQT_INCLUDES}) diff --git a/adm_local/cmake_files/FindVTK.cmake b/adm_local/cmake_files/FindVTK.cmake new file mode 100644 index 000000000..550256c72 --- /dev/null +++ b/adm_local/cmake_files/FindVTK.cmake @@ -0,0 +1,48 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +INCLUDE(FindVTK) + +SET(VTK_INCLUDES) +FOREACH(dir ${VTK_INCLUDE_DIRS}) + SET(VTK_INCLUDES ${VTK_INCLUDES} -I${dir}) +ENDFOREACH(dir ${VTK_INCLUDE_DIRS}) + +SET(VTK_LIBS) +FIND_LIBRARY(VTK_COMMON vtkCommon ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_COMMON}) +FIND_LIBRARY(VTK_GRAPHICS vtkGraphics ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_GRAPHICS}) +FIND_LIBRARY(VTK_IMAGING vtkImaging ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_IMAGING}) +FIND_LIBRARY(VTK_FILTERING vtkFiltering ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_FILTERING}) +FIND_LIBRARY(VTK_IO vtkIO ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_IO}) +FIND_LIBRARY(VTK_RENDERING vtkRendering ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_RENDERING}) +FIND_LIBRARY(VTK_HYBRID vtkHybrid ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_HYBRID}) +FIND_LIBRARY(VTK_PARALLEL vtkParallel ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_PARALLEL}) +FIND_LIBRARY(VTK_WIDGETS vtkWidgets ${VTK_LIBRARY_DIRS}) +SET(VTK_LIBS ${VTK_LIBS} ${VTK_WIDGETS}) diff --git a/adm_local/cmake_files/Makefile.am b/adm_local/cmake_files/Makefile.am new file mode 100644 index 000000000..d94ed4ebf --- /dev/null +++ b/adm_local/cmake_files/Makefile.am @@ -0,0 +1,32 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +include $(top_srcdir)/adm_local/unix/make_common_starter.am + +dist_admlocal_cmake_DATA = \ +FindCAS.cmake \ +FindOPENGL.cmake \ +FindQT4.cmake \ +FindQWT.cmake \ +FindSIPPYQT.cmake \ +FindVTK.cmake \ +FindGUI.cmake + diff --git a/build_cmake b/build_cmake new file mode 100755 index 000000000..844a4f2c4 --- /dev/null +++ b/build_cmake @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +CURRENT_DIR=`pwd` +CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` +cd ${CONF_DIR} +python $KERNEL_ROOT_DIR/salome_adm/cmake_files/am2cmake.py --gui +status=$? +cd ${CURRENT_DIR} +exit $status diff --git a/build_cmake.bat b/build_cmake.bat new file mode 100644 index 000000000..58a10b0a3 --- /dev/null +++ b/build_cmake.bat @@ -0,0 +1,2 @@ + +%PYTHONBIN% %KERNEL_ROOT_DIR%\salome_adm\cmake_files\am2cmake.py --gui diff --git a/doc/salome/gui/images/directorypage.png b/doc/salome/gui/images/directorypage.png new file mode 100755 index 0000000000000000000000000000000000000000..fafc98936f5a84d94d7991340730ce7387bef649 GIT binary patch literal 12643 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/featureedgesprops.png b/doc/salome/gui/images/featureedgesprops.png new file mode 100755 index 0000000000000000000000000000000000000000..4a41a1aacffbb740d69eaeb5975f7304b2e5b9dd GIT binary patch literal 31674 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/graduateaxes1.png b/doc/salome/gui/images/graduateaxes1.png new file mode 100755 index 0000000000000000000000000000000000000000..9d2b1975a129864cb5982012d75eef1ba4f34e0a GIT binary patch literal 23825 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 Ef)-GsSpWb4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image103.png b/doc/salome/gui/images/image103.png new file mode 100755 index 0000000000000000000000000000000000000000..b02616f2975e7a3865a236ee75380bdae5ce59f7 GIT binary patch literal 682 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!GAr-fh{`~)M&uq%*z+h+?Aj!ZYz}<83#0idNZ{NHLm{arOf}-0Di4NZr z4h;-Rj?WrQvR=Mwyy^F?%;4dFDJdx)KR>?&vt5iYrhzo>YRaCjpLk={x^?G1e0dpc zAf2Wt^rJsV!+{}D;>9cZGar846mH{Q?tkd0S>BzF%TD3t{4*BXIQ-IfVA%M8i#s*c zlr1kVj?FMpku6S6PGNSxV@Sx9M(Gn`0zzpIgandKboIMkOJX=8&cMX6ys@Kkl!Hi5Cs~Z*GuUfUrsH3ynxPybcSy{#2e*VG@J6ax= z#n~Osp1^ImwK3)gt3rdprHAi&vk!iGdwaWNpPVI=nU9lGQ{we?u{?kG+WrXQ(cn=9 z+IG10^fX=PhwiSfjl8q1O0@zxr4<@xOt_qoo~}Mam+y-f$9#+0wuLz-jo8f1&D+fL z?z+m40n#|u4mYG61ddHVaiyUq`r4~d9q8ZdYn zozP=;ncaEPUC6S9SjZ)j11xdTOVx|PwNDx OD+W(jKbLh*2~7Z6;rO)x literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image106.png b/doc/salome/gui/images/image106.png new file mode 100755 index 0000000000000000000000000000000000000000..0356a9a319903f0f6864653fbfdb4c5e57b030c7 GIT binary patch literal 809 zcmV+^1J?YBP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;pGibPRCwBA{Qv(y12q9a05K7xXz}93{}~w>iLx0W zfS5>h06{|m0tjp%&~`X(DF_6)Mi_`WVPePtS?#p6U<|bY0fgZ~RnUh1}2F7cOZU)=HqXSY`|D#1!;t*WN>JK06+jSK~(%>_{Q{? z;Ttmqe`op2px(V=GEnLfmN5J-mAFmr3sBt`rhg1yfJS}#|BvCrA4nzw2q3TvUo!s$ z+VmgnLPnq>Mu_X)0`W~OE(C!$&lr9IBl17Pe_#au2BwVPe;~dD2p|S%X#)!Qa3C(7 zS>p~8=m6qGScHHQHYlb3M=hFU=P$R0sjUa;1(^X5KrApDf%q5@UwFd)w+rerT&{z= z^4@Q-t8OA?fNuZ+#DJwd1i8uzIl16)Ay%~j0mOpMX0S~VObB481qdK)27ZTPVgQC( nfB<47u?qMPNvXI2K!5=NR>;YS7u$tM00000NkvXXu0mjf*2zO> literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image108.png b/doc/salome/gui/images/image108.png new file mode 100755 index 0000000000000000000000000000000000000000..fa8cbbc71e4c929f859c045ef73c53a8e431fcad GIT binary patch literal 1128 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 b;jUQs!wF*dRgVD~5ahh2twrsbtH1s~%m_?C literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/viewmenu.png b/doc/salome/gui/images/viewmenu.png new file mode 100755 index 0000000000000000000000000000000000000000..a188e6de10058ef572eeb21f2b1bde2a7fa43fde GIT binary patch literal 1481 zcmZvceKgYx7{`CEmqb&t2(62bQp;|Vcd5xsatW)Uw#t<9ww1Tun2wUvwFnzqZ(J{# znTC@WhDi`aSU#(YT*24i?tG)}*u(~1de)bt2 zoe7#u0)lJB#X^pu))jZh@B;^JgL?NOT*6$GlQ{I$`m-|GAu6>a^vLb|o!xoY^qrtz ztY{&Z8Q!2)11G{p+Je!Kceo$EOk!JxQ1H0J&G%XuZM?yi#}6LV0Y5igS$iW=MuyKO zo`rO$7nUU8%CTJRVY$ko4$~TE=*JyZCN@EEr;ds#EuKW2c`P3#D0h!oFpIhfZ=OKN zE!FEP0w(}7L?g_8HcLs-m27WS)=MN3bQtL3ttb}yLB67A>s}G=)=n?4jp!%kWUc0l zl@4=Zh`F};FzIlckR}nxU;EeLG_R*o0*gcJ_rWbY_^2jYl#}7z9^-~Y%W-ASU5Zh7 z>Ge200Oq?x8{^^P8svMW*vdwy6LP znd+01JP~tMXjtP9Hrey}ZGv?*ah4k;(x&Lz0`#u(*}SS$(8sFTdq-y(# z#PM^tGv%iz^Jg{?I?4vv?LPFc?Q<5ZAAk>X3ut>VAhzYvm8&_v#tYvac$=WYw8o_GqJbEoo0Onz}5I zV#020KjWKvinJqjLn>nGTfcJhOs|}zIu9ZGQU11w52q+Kytx-f^9sebw@kn|aGC7e zH@v8f8ecQMZ#+&^N~K61V@r)piGKfhy%R&n`?f#)wep3t9yG<7`#QSQ0r_(FX82$U zL#S0um+c(A(B;+)JDF7d=uMr(Bl#4vnBZ1d$>G+IG9XYE zZI9q{r|lE4Sk>8}s#<3M{FAdxr8?g;lWuaCm8h9KlX>U7gGQYGkp=lFyB5Ws>9kIP z9hOplPlwc;xZ5c4pvDA&#s}Q0QH`1)`zlj*aeNnf^RPQC(lOYHG?4#}aU}C8v0A!c zGa|g7h7o5WvK?c3FygeMg_zjDhc)O$x7^69ZZA#xRyF zaT8m>yZMy4nE0k>WJ_O&Nz|BVoh0Vj)2Bnbfu z+MyK47CsMH^oiKAv-iDYD%KB5hg{e}W14ouJDV@Ul34|aDLruVJ>}S3Au8k1EfR?o zx+yPl(_lYmFn~V6gm4Bj!n%twuTYKjB(-}%&4@YlvAJS?-qYU=sBhzf^;IRF{R9Jk zq$f?sxaMo$8sT42&%5jl-4GVqaG8O{V=JiCrr4|!FMZuIbHGU-Dm;cqf^$`oWfn7y z-k`znY%m(6WiBdl^d#UiKB4(faDc79AFmt6i}9Uk9q<<3TH5<<$i61sz#kH~|ANgh zJTAuD-q%MC&C~AC^_+PL{jb;xN_UW(X$JyDIXG;evhXfd=6jr5$Hji)L=&1J1 zv!gS4*Ayo3qA|hf4H`CFP1bTn|4-J>C@Ocm46m^>c7h6BO^hQY^dyqDLalw+pFmpi TGGgr#qJaS4U>~~ov8+D;5Jc;_ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/windowmenu.png b/doc/salome/gui/images/windowmenu.png new file mode 100755 index 0000000000000000000000000000000000000000..6e47ee86a3927b04f5c146a9556eca3798b88e75 GIT binary patch literal 3547 zcmaKvcT^Kf7RE(EP{aZ#ND)DbAX230(nOFFF<1h`NR`k+^9dyMqFCrH2!bF|42Eie z1ZlxS0!Sp%5|W4!1OkLm1%XgDZ}*+uef!StA2W0AoHKLI{pP#p{wDFdt(C}rsr|cl z?Ggc4U%ts(fAGeL&|cmQ*d}E1_DcYlFWH3^a7LJcM>}QTEi&ic7f3>%oGi0QtvF2ITv$LRMe!!P^aYuvv*dehzY>qaOe2Gw3sU>NNBiBwaC6Jt9EtCZJ4** z6*ii&ZkCVALZM0hd1dv49ddsj$x8|LDwaQ=&@z+Kdl_&^rMaE*Jr(4v~J7{joWp4OitDu6+=i1kme*c2ws|9 zH+|wRx3%!`&>4Yoo7m@cJ!U-=ay_q`GhqP;q8d3_ z-gD!V`wcItie3*p{!-wgElA%!pblRl(eGaiNo#7eb^cP>JKvBC^QDbFp4Vfpei0s} zYa;qy&5=D<#Ht2L5FY#})N-bFNJaPSIP|oU)$`TlFJrz`6@ zCJY;`X4{vuW^1b}0p9#4G#P@}ImW|dT>x$kOsd1uZzWmv4`TPHm zHoq%ZtS^a;ey9v)l{&>8LQC-}Sr75#tRQAZd|DOEKbIhL!5QV-An>yQ|(eS;YhSh zz;TkVnik@(&+|VYPcH*^1gKzt>gB@OW!Gr^4G2{`IZwl{JfjMX^#INyx~f<82|%EBFimMI$+P%^C?Beh(7AKWyk)Z#?m{p)P`&L)S;pNGH<9iJ&*HJEgt5*95L&48vQZ{aHIq5+Hq z+-sh)s2ZLDz4AMK;#GMDnI0^F5(yH z7-;ACxU`BV96ofs14thpezVrxcZGJipC`E3PjS4%~72UVqFvxYHcs84bG z8r!THI{y`W;!Q*dHY74n`P#|B$w}18+=YjRlj19VR!(rlP^ewZA~5Dgk_uaTF^Rh| z=dQ7i#~Wg*fnL$Lmfx(6i#hP87blL;5F$>|A40F%16{cNLxZ8@R!6@U8=A9H`%C;m zr|fyKkuvJrm}Zx~HwNgrk~fhz09jtC2&HKYx?h!B9Qke*>kVgsz%VVB<`6Um@!VZ7 z#Mr5EQQa%&N91HM5Ii#o4sBOWKdJU6%5aEi<2_Hr(6ua(YnIQA89{S6K`=g+7$ep)W%(8{W0z|pv+Bw?XR zc5xvY=WFN?06dPZF;j7Lbfi5>mN@8QJz$4lV@L!oPXgI|-sBfg#Z+v&uzu76My*rR z&B_~~X@C2B(L_(~Hm=Img>{JV#FG0{WC$HK&@NIu5AsF9BOZC(ioZ9#kkz{Kq_Ij+ zUDhS5oO`W}!S*e!Pc7b)J}UFwON1EA>g{gZ`HEDz_QE<#Q8TDaSpk-HVsn#@p*9De z(ekCZMX?G)$4M>T*6s&F5(H%aXmdwhWIvkaGC%lDl(`F@FC{PX3Ysg%0x2N+L@bZz#}p&y2g+Dc|~hKcu( zB@Q4eg)&Y|m0p^hXC8Qw*8KBn$At#x;_j3Hju6n_$pJ@$`6q^T76?HcMStKd(o-7m zGIPA!jVtZZnh+$1r3@N>lnrtSC25{pZJjYPJai{h!OmZ9+KfS^N~J7=CxcdJX;%b# zUGoGvRIn(NnJ`qQ(d#{%n1NN&4s4kp9tc!F+fAq6{!PB8rzdEvV_#D+E6pfo^DTxb zVh_G=tuVfke+w3nw34?-yGtG)jeqifXYO0m8RiZZ}48hdw}mp9V0B%iN1pc$03u|;@~zC;}Hg;1U% zQ3;T8abv)0Y2Ec==rL>2A9ub>v2Um*E=HN;N}mtx;?+P88dQGUSBkDrQ2l=RavK)2 zI+MS-FfVsIvc4Ut4SK6RU|?bXNRh}(;@fV3dzCcxQtc-|3ZHJWA~8-hs$Y&rJAX02 z8$9;j24}#zanG~tk&%&Hm-@Y>0am*>b$fsG#uvt)-v}R&o7zkMch|=(kk)9E-l<1P zR`9qBnrFZJJJB+9!!f@h%QQ_io+?i#6ACurCYA!af5rx}55f4rKG!G^_?vv4dT?NH zciq)2MaTsT_}k%Utgn;dKCPC7W$G|q1AZbU+%(VslILERE^Tx1;9e-Q=u9c%(EBN| zfql^3edjj@X%4NJXB;8f#r%UtOwxPoXG+c(e)4Y)s^047d-aE6ywrP2XKu1=C8ZM} zIcGQPpMr3oDUu8(}q+9OehI8_XZ!7#PH|Z z8&lv;RM24EvR_5Pm*t}7?`~0W&d{Tx%DwJlPUJ#-bmivI^~JZibdh}>8B0l2RMoc( zeLAWP_Z&9Fez=ny;pOD){M0J_M0e&XtAj3;8xya!`6dia#x)$__sh_IC09wQueuT0 z0Xkpnsutgw26I?(#|@JHvj%g!Mx=e(J9Dm0ATf?0IIi zt$*~t9pgS)Epo1zZwn$soSk4_5Q`+zq?Y~8nOyoz^QWwTiTDcMF~IUd{FEziuBp1 ztHTBO$f?fddKN{**3fgFtv;OLoEasFp(8T2Y@>fZsWV{A)mPw)FkPWwlBO9xz3H=f zP*rtR9pYtdjmh;*Sq7?lQd{cv0ZYf1Yba^L4&woO_Ex7uZM_X!%z_v*)av XI`VG%b5q`@Z5P18_HvDx+k?LYQ_%H9 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/input/text_user_interface.doc b/doc/salome/gui/input/text_user_interface.doc new file mode 100644 index 000000000..ac0bc5614 --- /dev/null +++ b/doc/salome/gui/input/text_user_interface.doc @@ -0,0 +1,370 @@ +/*! + +\page tui_page Using salome.py module + +The Python module salome.py provides a functionality to access main +SALOME features from the Python console (either embedded in GUI +desktop or external one). + +To use salome.py module, import it into the Python interpreter and +initialize it by calling \c salome_init() function: + +\code +import salome +salome.salome_init() +\endcode + +The salome.py Python module provides a set of variables and functions +allowing access to different elements of the current SALOME +session (this Python interpreter is connected to). +This page gives a short description of most useful variables and +functions. + +\li \b orb Reference to the CORBA::ORB instance + +This variable can be used to initialize different CORBA-related +elements of the SALOME session (for example, naming service, etc). +For example, to get an access to the SALOME naming service, you can +use the following commands: +\code +import SALOME_NamingServicePy +NS = SALOME_NamingServicePy.SALOME_NamingServicePy_i(salome.orb) +\endcode + +The \b orb variable is also useful when it is necessary to convert +CORBA reference object to its string representation (IOR) and vice +versa: +\code +studyIOR = salome.orb.object_to_string(salome.myStudy) +study = salome.orb.string_to_object(studyIOR) +is_same = salome.myStudy._is_equivalent(study) # is_same = True +\endcode + +\li \b naming_service SALOME naming service instance + +This variable can be used to register/find objects created in a +distributed environment. For example, to get access to the SALOME +Module Catalog server, use \c Resolve() method: +\code +import SALOME_ModuleCatalog +mc = salome.naming_service.Resolve('/Kernel/ModulCatalog') +\endcode + +Similarly, method \c Register() can be used to register objects +in the naming service: +\code +salome.naming_service.Register(myObject,'/My/Object/Path') +o = salome.naming_service.Resolve('/My/Object/Path') +is_same = myObject._is_equivalent(o) # is_same = True +\endcode + +\li \b lcc Life Cycle CORBA class instance + +This object can be used to get access to CORBA engine part of some +SALOME module, available in the current SALOME session. The following +code returns a reference to the Geometry module engine, loading it if +necessary: +\code +import GEOM +geom = salome.lcc.FindOrLoadComponent('FactoryServer', 'GEOM') +\endcode +\b Note, that in the above example, \e "FactoryServer" is a name of the +SALOME container, where Geometry module engine should be loaded. + +\li \b myStudyManager Reference to the study manager + +SALOMEDS Study manager is used to manipulate with the studies: create, +open, save, close. It also can be used to find the study by its +numerical ID or name. The code below demonstrates main +functionalities of a study manager: +\code +# create new study with the name "MyStudy" +new_study = salome.myStudyManager.NewStudy("MyStudy") + +# open study from file /home/user/MyStudy.hdf +study = salome.myStudyManager.OpenStudy("/home/user/MyStudy.hdf") + +# save study +salome.myStudyManager.Save(study, False) # not using multifile save mode + +# save study in ASCII format +salome.myStudyManager.SaveASCII(study, True) # using multifile save mode + +# save study with the new file path +salome.myStudyManager.SaveAs("/home/user/MyStudy.hdf", study, False) + +# save study with the new file path in ASCII format +salome.myStudyManager.SaveAsASCII("/home/user/MyStudy.hdf", study, False) + +# close study +salome.myStudyManager.Close(study) + +# get list of all opened studies +studies = salome.myStudyManager.GetOpenStudies() + +# find study by its numerical ID (integer value starting from 1) +study = salome.myStudyManager.GetStudyByID(studyID) + +# find study by its name +study = salome.myStudyManager.GetStudyByName("/home/user/MyStudy.hdf") + +# ... +\endcode + +\li \b myStudy Reference to the current (active) study + +This variable can be used to manipulate with the date of the study: +create data tree, assign attributes of different types to the objects +in a data tree, create references between objects, etc. + +\b Note, that the term "active" or "current" study does not make much +sense outise the GUI Python console. When working in GUI, user always +deals with one only top-level study, which desktop is currently on the +top if the windows stack. This is what is called \e "active study". +In TUI mode (without GUI or outside GUI), user has to manipulate with +studies manually; no any special control for the life cycle of the +study is done. In TUI mode, \c salome.muStudy variable is an instance +of the first study created when you call salome_init() function. + +The following code demonstrates some examples of \c salome.myStudy +variable usage. For more details please refer to the SALOMEDS.idl file +documentation. + +\code +# get study name +studyName = salome.myStudy._get_Name() + +# get study numerical ID +studyID = salome.myStudy._get_StudyId() + +# find SALOMEDS component by its type +scomponent = FindComponent("MyComponent") + +# find SALOMEDS component by its entry ID +scomponent = FindComponentID("0:1:1") # "0:1:1" is a component ID + +# find SALOMEDS object by its name (first found object is returned) +sobject = salome.myStudy.FindObject("MyObject") + +# find SALOMEDS object by its entry ID +sobject = salome.myStudy.FindObjectID() # "0:1:1:1" is an object ID + +# find SALOMEDS object by its IOR attribute +sobject = salome.myStudy.FindObjectIOR(IOR) + +# find SALOMEDS object by its path in the data tree +sobject = salome.myStudy.FindObjectByPath("/MyComponent/MyObject/MySubObject") + +# get SALOMEDS object's path in a study data tree +sobject_path = salome.myStudy.GetObjectPath(sobject) + +# get study properties +prop = salome.myStudy.GetProperties() +prop.GetCreationDate() # get creation date +prop.IsModified() # check if study has been modified (and not yet saved) +prop.SetLocked(True) # lock the study (prohibit modifications) +prop.IsLocked() # check if study is locked + +# create objects with study builder +builder = salome.myStudy.NewBuilder() # create builder +comp = builder.NewComponent("MyComponent") # create a component of the "MyComponent" type +attrName = builder.FindOrCreateAttribute(comp, "AttributeName") +attrName.SetValue("MyComponent") # set name to the component +object = builder.NewObject(comp) # create new object, a child of the component +attrName = builder.FindOrCreateAttribute(object, "AttributeName") +attrName.SetValue("MyObject") # set name to the object +attrInt = builder.FindOrCreateAttribute(object, "AttributeInteger") +attrInt.SetValue(123) # assign integer attribute to the object +attrIOR = builder.FindOrCreateAttribute(object, "AttributeIOR") +attrIOR.SetValue(IOR) # assign IOR attribute to the object (to point to some CORBA object) + +# iterate through objects of the data tree with child iterator +iter = salome.myStudy.NewChildIterator(comp) # initialize from the component +iter.InitEx(True) # init recursive mode +while iter.More(): + c = iter.Value() + print c.GetID() + iter.Next() + pass + +# ... +\endcode + +\li \b myStudyId Identifier of the current (active) study + +This variable contains the numerical identifier of the current +(active) study. It is an equivalent of \c +salome.myStudy._get_StudyId() code. + +\li \b myStudyName Name of the current (active) study + +This variable contains the name of the current (active) study. It is +an equivalent of \c salome.myStudy._get_Name() code. + +\li \b DumpStudy() Print study contents + +This function prints the study data object tree to the terminal +window. The output for each object includes its entry ID, name, IOR +(if there is one) and referenced object ID (for references). I.e. +this is the same data the user can see in the Object Browser columns. +\code +salome.DumpStudy(salome.myStudy) +\endcode + +\li \b IDToSObject() Get SALOMEDS object by its entry ID. + +This function checks if the SObject with the specified entry ID exists +in the current study and returns it. Otherwise \c None is returned. +\code +sobject = salome.IDToSObject("0:1:1:1") # "0:1:1:1" is an object ID +\endcode +Actually this function is just a shortcut to the following code: +\code +sobject = salome.myStudy.FindObjectID("0:1:1:1") +\endcode + +\li \b IDToObject() Get CORBA object by its entry ID. + +This function checks if the SObject with the specified entry ID exists +in the current study, then retrieves IOR attribute from it and, +finally, if IOR is not empty, returns CORBA object corresponding to +the found SObject: +\code +object = salome.IDToObject("0:1:1:1") # "0:1:1:1" is an object ID +\endcode +Actually this function is just a shortcut to the following code: +\code +sobject = salome.myStudy.FindObjectID("0:1:1:1") +if sobject: + object = sobject.GetObject() +else: + object = None +\endcode + +\li \b ObjectToSObject() Get SALOMEDS object corresponding to the +CORBA object. + +This function finds an object in the current study which corresponds +to the specified CORBA object (i.e. it has IOR attribute, pointing to +the CORBA object). If there is no corresponding SALOMEDS object in the +study, \c None is returned: +\code +sobject = salome.ObjectToSObject(object) +\endcode +Actually this function is just a shortcut to the following code: +\code +ior = salome.orb.object_to_string(object) +sobject = salome.myStudy.FindObjectIOR(ior) +\endcode + +\li \b ObjectToID() Get SALOMEDS object entry ID corresponding to the +CORBA object. + +This function finds an object in the current study which corresponds +to the specified CORBA object (i.e. it has IOR attribute, pointing to +the CORBA object). If the object is found, its entry ID is returned, +otherwise empty string is returned: +\code +entry = salome.ObjectToID(object) +\endcode +Actually this function is just a shortcut to the following code: +\code +ior = salome.orb.object_to_string(object) +sobject = salome.myStudy.FindObjectIOR(ior) +if sobject: + entry = sobject.GetID() +else: + entry = "" +\endcode + +\li \b createNewStudy() Create new study + +This function can be used to create new SALOME study. Returns an ID of +the created study. +\code +studyId = salome.createNewStudy() +study = salome.myStudyManager.GetStudyByID(s) +\endcode + +\li \b generateName() Generate unique name + +This function adds random numerical suffix to the passed string +parameter ("Study" by default) and returns the resulting string: +\code +name_1 = salome.generateName() # name_1 is something like "Study682" +name_1 = salome.generateName("Obj") # name_1 is something like "Obj32" +\endcode + +\li \b sg SWIG interface to the SALOME GUI + +This variable provides an access to some GUI functions. + +\b Note, that this variable is not available if you use salome.py +Python module outside the GUI desktop, i.e. not in the embedded Python +console (since SWIG library is linked directly to the GUI library). + +The example of usage: +\code +# update Object browser contents +salome.sg.updateObjBrowser(True) + +# get active study ID +studyId = salome.sg.getActiveStudyId() + +# get active study name +studyName = salome.sg.getActiveStudyName() + +# get selected objects +selCount = salome.sg.SelectedCount() # total number of selected items +for i in range(selCount): + print salome.sg.getSelected(i) # print entry ID of i-th selected item + +# get list of all selected objects' IDs +selected = salome.sg.getAllSelected() + +# add object to the selection +salome.sg.AddIObject("0:1:1:1") # "0:1:1:1" is an object ID + +# remove object from the selection (make it unselected) +salome.sg.RemoveIObject("0:1:1:1") # "0:1:1:1" is an object ID + +# clear selection (set all objects unselected) +salome.sg.ClearIObjects() + +# display object in the current view (if possible) +salome.sg.Display("0:1:1:1") # "0:1:1:1" is an object ID +salome.sg.UpdateView() # update view + +# erase object from the current view +salome.sg.Erase("0:1:1:1") # "0:1:1:1" is an object ID +salome.sg.UpdateView() # update view + +# display all objects in the current view (if possible) +salome.sg.DisplayAll() +salome.sg.UpdateView() # update view + +# erase all objects from the current view +salome.sg.EraseAll() +salome.sg.UpdateView() # update view + +# set top, bottom, front, rear, left, right view +salome.sg.ViewTop() # top view +salome.sg.ViewBottom() # bottom view +salome.sg.ViewFront() # front view +salome.sg.ViewTop() # back view +salome.sg.ViewLeft() # left view +salome.sg.ViewRight() # right view + +# reset current view +salome.sg.ResetView() + +# get component symbolic name by its user name +compName = salome.sg.getComponentName("Geometry") # compoName = "GEOM" + +# get component user name by its symbolic name +compName = salome.sg.getComponentUserName("SMESH") # compoName = "Mesh" + +# ... +\endcode + +*/ diff --git a/doc/salome/gui/input/themes.doc b/doc/salome/gui/input/themes.doc new file mode 100755 index 000000000..9fff17ae3 --- /dev/null +++ b/doc/salome/gui/input/themes.doc @@ -0,0 +1,27 @@ +/*! + +\page themes_page Theme + +\b Theme dialog is used for customization of the look and feel of +Salome. To open it, select in the Main menu View -> Theme . + +\image html theme1.png + +It is possible to choose a predefined color scheme in the list to the left +or to edit your custom color scheme using the controls to the right. + +\b Quick button allows to apply color change made in one position to all +other positions using this color. + +\image html theme2.png + +

+*/ \ No newline at end of file diff --git a/doc/salome/gui/input/using_notebook.doc b/doc/salome/gui/input/using_notebook.doc new file mode 100644 index 000000000..d48fe8fcb --- /dev/null +++ b/doc/salome/gui/input/using_notebook.doc @@ -0,0 +1,26 @@ +/*! + +\page using_notebook Using NoteBook + +SALOME NoteBook is destined for managing numerical and boolean +parameters (variables) which are used to create and modify objects in +different components. + +To open the NoteBook choose File > Notebook, the following +dialog box will appear: + +\image html notebook1.png + +Here you can add new variables, remove and rename existing variables and +change their values. + +If you have modified some variables, which are already used in the current +study, you should click Update Study button to apply your changes +to the study. + +\note The dialog will not be validated until at least one of variables in +the table has invalid name or value (marked by red color). Names of +variables should be unique and their values should be numerical (integer or +double) or boolean ("True" / "False"). + +*/ \ No newline at end of file diff --git a/src/Event/SALOME_EventFilter.cxx b/src/Event/SALOME_EventFilter.cxx new file mode 100755 index 000000000..074213c9a --- /dev/null +++ b/src/Event/SALOME_EventFilter.cxx @@ -0,0 +1,80 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SALOME_EventFilter.h" +#include "SALOME_Event.h" + +#include + +SALOME_EventFilter* SALOME_EventFilter::myFilter = NULL; + +/*!Constructor.*/ +SALOME_EventFilter::SALOME_EventFilter() +: QObject() +{ + /* VSR 13/01/03 : installing global event filter for the application */ + qApp->installEventFilter( this ); +} + +/*!Destructor.*/ +SALOME_EventFilter::~SALOME_EventFilter() +{ + qApp->removeEventFilter( this ); +} + +/*! + Custom event filter +*/ +bool SALOME_EventFilter::eventFilter( QObject* o, QEvent* e ) +{ + if ( e->type() == SALOME_EVENT ) + { + SALOME_Event* aSE = (SALOME_Event*)((SALOME_CustomEvent*)e)->data(); + processEvent(aSE); + ((SALOME_CustomEvent*)e)->setData( 0 ); + return true; + } + return QObject::eventFilter( o, e ); +} + +/*!Process event.*/ +void SALOME_EventFilter::processEvent( SALOME_Event* theEvent ) +{ + if(theEvent) + theEvent->ExecutePostedEvent(); +} + +/*!Create new instance of SALOME_EventFilter*/ +void SALOME_EventFilter::Init() +{ + if( myFilter==NULL ) + myFilter = new SALOME_EventFilter(); +} + +/*!Destroy filter.*/ +void SALOME_EventFilter::Destroy() +{ + if( myFilter ) + { + delete myFilter; + myFilter = NULL; + } +} diff --git a/src/Event/SALOME_EventFilter.h b/src/Event/SALOME_EventFilter.h new file mode 100755 index 000000000..3881d6ac1 --- /dev/null +++ b/src/Event/SALOME_EventFilter.h @@ -0,0 +1,63 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef SALOME_EVENTFILTER_H +#define SALOME_EVENTFILTER_H + +#include "Event.h" +#include + +#if defined WIN32 +#pragma warning( disable: 4251 ) +#endif + +class SALOME_Event; + +/*! + Event filter class for QApplication object that handles custom events posted by SALOME_Event objects. + It assumes that such custom events are alwys posted, not sent. + This event filter can be installed by any application that intends to use SALOME_Event mechanism asynchronously. + This class replaced SalomeApp_EventFilter. +*/ +class EVENT_EXPORT SALOME_EventFilter: public QObject +{ +public: + static void Init(); + static void Destroy(); + +protected: + SALOME_EventFilter(); + virtual ~SALOME_EventFilter(); + +private: + /*! global event filter for qapplication */ + virtual bool eventFilter( QObject* o, QEvent* e ); + void processEvent( SALOME_Event* ); + +private: + static SALOME_EventFilter* myFilter; +}; + +#if defined WIN32 +#pragma warning( default: 4251 ) +#endif + +#endif diff --git a/src/QxScene/DebTrace.hxx b/src/QxScene/DebTrace.hxx new file mode 100644 index 000000000..6350ae559 --- /dev/null +++ b/src/QxScene/DebTrace.hxx @@ -0,0 +1,33 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __DEBTRACE_HXX__ +#define __DEBTRACE_HXX__ + +#include + +#ifdef _DEVDEBUG_ +#define DEBTRACE(msg) {std::cerr<(theView); + bool OKToClose = true; + if (!qxview) + OKToClose = true; + else + OKToClose = qxview->closeRequested(); + if (OKToClose) + { + DEBTRACE("SUIT View to close"); + SUIT_ViewManager::closeView(theView); + DEBTRACE("SUIT View closed"); + } +} diff --git a/src/QxScene/QxScene_ViewManager.h b/src/QxScene/QxScene_ViewManager.h new file mode 100644 index 000000000..924084c74 --- /dev/null +++ b/src/QxScene/QxScene_ViewManager.h @@ -0,0 +1,48 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef QXSCENE_VIEWMANAGER_H +#define QXSCENE_VIEWMANAGER_H + +#include "QxScene.h" + +#include "QxScene_ViewModel.h" +#include "SUIT_ViewManager.h" + +class SUIT_Desktop; + +class QXSCENE_EXPORT QxScene_ViewManager : public SUIT_ViewManager +{ + Q_OBJECT + +public: + QxScene_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop, SUIT_ViewModel* theViewModel = 0 ); + ~QxScene_ViewManager(); + +protected: + bool insertView(SUIT_ViewWindow* theView); + virtual void closeView(SUIT_ViewWindow* theView); +public slots: + void createView(); + +}; + +#endif diff --git a/src/QxScene/QxScene_ViewModel.cxx b/src/QxScene/QxScene_ViewModel.cxx new file mode 100644 index 000000000..5d2e6755d --- /dev/null +++ b/src/QxScene/QxScene_ViewModel.cxx @@ -0,0 +1,117 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "QxScene_ViewModel.h" +#include "QxScene_ViewWindow.h" +#include "QxScene_ViewManager.h" +#include "QxScene_Def.h" + +#include "SUIT_Desktop.h" +#include "SUIT_ViewWindow.h" +#include "SUIT_Session.h" + +#include +#include +#include + +//#define _DEVDEBUG_ +#include "DebTrace.hxx" + +/*! + Constructor +*/ +QxScene_Viewer::QxScene_Viewer() + :SUIT_ViewModel() +{ + DEBTRACE("QxScene_Viewer::QxScene_Viewer"); +} + +/*! + Destructor +*/ +QxScene_Viewer::~QxScene_Viewer() +{ + DEBTRACE("QxScene_Viewer::~QxScene_Viewer"); +} + +void QxScene_Viewer::setViewManager( SUIT_ViewManager* mgr) +{ + DEBTRACE("QxScene_Viewer::setViewManager"); + SUIT_ViewModel::setViewManager( mgr ); +} + +/*! + Start initialization of view window + \param view - view window to be initialized +*/ +void QxScene_Viewer::initView( QxScene_ViewWindow* view ) +{ + DEBTRACE("QxScene_Viewer::initView"); + if ( view ) + { + view->initLayout(); + } +} + +/*! + Creates new view window + \param theDesktop - main window of application +*/ +SUIT_ViewWindow* QxScene_Viewer::createView(SUIT_Desktop* theDesktop) +{ + DEBTRACE("QxScene_Viewer::createView"); + QxScene_ViewWindow* aRes = new QxScene_ViewWindow( theDesktop, this ); + initView( aRes ); + return aRes; +} + +/*! + Builds popup for QxScene viewer +*/ +void QxScene_Viewer::contextMenuPopup(QMenu* thePopup) +{ + DEBTRACE("QxScene_Viewer::contextMenuPopup"); +} + +/*! + SLOT: called if background color is to be changed changed, passes new color to current canvas view +*/ +void QxScene_Viewer::onChangeBgColor() +{ + QxScene_ViewWindow* aView = (QxScene_ViewWindow*)(myViewManager->getActiveView()); + if( !aView ) + return; + QColor aColorActive = aView->backgroundColor(); + + QColor selColor = QColorDialog::getColor( aColorActive, aView); + if ( selColor.isValid() ) + aView->setBackgroundColor(selColor); +} + +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ +void QxScene_Viewer::onShowToolbar() +{ + QxScene_ViewWindow* aView = (QxScene_ViewWindow*)(myViewManager->getActiveView()); + if ( aView ) + aView->getToolBar()->show(); +} diff --git a/src/QxScene/QxScene_ViewModel.h b/src/QxScene/QxScene_ViewModel.h new file mode 100644 index 000000000..565532c2b --- /dev/null +++ b/src/QxScene/QxScene_ViewModel.h @@ -0,0 +1,57 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef QXSCENE_VIEWMODEL_H +#define QXSCENE_VIEWMODEL_H + +#include "QxScene.h" + +#include "SUIT_ViewModel.h" + +class QxScene_ViewWindow; + +class QXSCENE_EXPORT QxScene_Viewer: public SUIT_ViewModel +{ + Q_OBJECT + + public: + static QString Type() { return "QxSceneViewer"; } + + QxScene_Viewer(); + virtual ~QxScene_Viewer(); + + virtual void setViewManager( SUIT_ViewManager* ); + virtual SUIT_ViewWindow* createView(SUIT_Desktop* theDesktop); + virtual QString getType() const { return Type(); } + + virtual void contextMenuPopup(QMenu*); + + protected: + void initView(QxScene_ViewWindow* view); + + protected slots: + void onShowToolbar(); + void onChangeBgColor(); + + private: +}; + +#endif diff --git a/src/QxScene/QxScene_ViewWindow.cxx b/src/QxScene/QxScene_ViewWindow.cxx new file mode 100644 index 000000000..169694bb2 --- /dev/null +++ b/src/QxScene/QxScene_ViewWindow.cxx @@ -0,0 +1,283 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// SALOME QxScene : build Supervisor viewer into desktop +// +#include "QxScene_ViewWindow.h" +#include "QxScene_Def.h" + +#include +#include +#include + +#include +#include +#include + +//QT Include +#include +#include + +//#define _DEVDEBUG_ +#include "DebTrace.hxx" + +using namespace std; + +/*! + Constructor +*/ +QxScene_ViewWindow::QxScene_ViewWindow( SUIT_Desktop* theDesktop, QxScene_Viewer* theModel) + : SUIT_ViewWindow( theDesktop ) +{ + DEBTRACE("Construct QxScene_ViewWindow"); + myViewModel = theModel; + _scene = 0; + _sceneView = 0; +} + +/*! + Initialization +*/ +void QxScene_ViewWindow::initLayout() +{ + DEBTRACE("QxScene_ViewWindow::initLayout"); + createActions(); + createToolBar(); + + // --- QGraphics test + +// _scene = new QGraphicsScene(); +// _sceneView = new QGraphicsView(this); +// setCentralWidget(_sceneView); +// _sceneView->setScene(_scene); +// QGraphicsRectItem *rect = _scene->addRect(QRectF(0, 0, 100, 100)); +// _sceneView->show(); +} + +/*! + Creates actions of QxScene view window +*/ +void QxScene_ViewWindow::createActions() +{ + DEBTRACE("QxScene_ViewWindow::createActions"); + QtxActionToolMgr* mgr = toolMgr(); + QtxAction* aAction; + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + + // 2. Scaling operations + + // 2.1. Fit All + aAction = new QtxAction( tr( "MNU_FITALL" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_FITALL" ) ), + tr( "MNU_FITALL" ), + 0, this); + aAction->setStatusTip( tr( "DSC_FITALL" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewFitAll() ) ); + mgr->registerAction( aAction, FitAllId ); + + // 2.2. Fit Rect + aAction = new QtxAction( tr( "MNU_FITRECT" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_FITAREA" ) ), + tr( "MNU_FITRECT" ), + 0, this); + aAction->setStatusTip( tr( "DSC_FITRECT" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewFitArea() ) ); + mgr->registerAction( aAction, FitRectId ); + + // 2.3. Zoom + aAction = new QtxAction( tr( "MNU_ZOOM_VIEW" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_ZOOM" ) ), + tr( "MNU_ZOOM_VIEW" ), + 0, this); + aAction->setStatusTip( tr( "DSC_ZOOM_VIEW" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewZoom() ) ); + mgr->registerAction( aAction, ZoomId ); + + // 2.4. Create multi-action for scaling operations + QtxMultiAction* aScaleAction = new QtxMultiAction( this ); + aScaleAction->insertAction( mgr->action( FitAllId ) ); + aScaleAction->insertAction( mgr->action( FitRectId ) ); + aScaleAction->insertAction( mgr->action( ZoomId ) ); + mgr->registerAction( aScaleAction, ScaleOpId ); + + // 3. Moving operations + + // 3.1. Panning + aAction = new QtxAction( tr( "MNU_PAN_VIEW" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_PAN" ) ), + tr( "MNU_PAN_VIEW" ), + 0, this); + aAction->setStatusTip( tr( "DSC_PAN_VIEW" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewPan() ) ); + mgr->registerAction( aAction, PanId ); + + // 3.2. Global Panning + aAction = new QtxAction( tr( "MNU_GLOBALPAN_VIEW" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_GLOBALPAN" ) ), + tr( "MNU_GLOBALPAN_VIEW" ), + 0, this); + aAction->setStatusTip( tr( "DSC_GLOBALPAN_VIEW" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewGlobalPan() ) ); + mgr->registerAction( aAction, GlobalPanId ); + + // 3.3. Create multi-action for moving operations + QtxMultiAction* aPanAction = new QtxMultiAction( this ); + aPanAction->insertAction( mgr->action( PanId ) ); + aPanAction->insertAction( mgr->action( GlobalPanId ) ); + mgr->registerAction( aPanAction, MoveOpId ); + + // reset + aAction = new QtxAction( tr( "MNU_RESET_VIEW" ), + aResMgr->loadPixmap( "QxSceneViewer", tr( "ICON_QXSCENE_RESET" ) ), + tr( "MNU_RESET_VIEW" ), + 0, this); + aAction->setStatusTip( tr( "DSC_RESET_VIEW" ) ); + connect( aAction, SIGNAL( triggered( bool ) ), this, SLOT( onViewReset() ) ); + mgr->registerAction( aAction, ResetId ); +} + +/*! + Creates toolbar of QxScene view window +*/ +void QxScene_ViewWindow::createToolBar() +{ + DEBTRACE("QxScene_ViewWindow::createToolBar"); + QtxActionToolMgr* mgr = toolMgr(); + myToolBar = mgr->createToolBar( tr( "LBL_TOOLBAR_LABEL" ) ); + mgr->append( ScaleOpId, myToolBar ); + mgr->append( MoveOpId, myToolBar ); + mgr->append( ResetId, myToolBar ); +} + +/*! + \brief Get view window's toolbar. + \return toolbar +*/ +QToolBar* QxScene_ViewWindow::getToolBar() +{ + DEBTRACE("QxScene_ViewWindow::getToolBar"); + return toolMgr()->toolBar( myToolBar ); +} + +/*! + Destructor +*/ +QxScene_ViewWindow::~QxScene_ViewWindow() +{ + DEBTRACE("destructor QxScene_ViewWindow"); + +} + +/*! + Reset the active view +*/ +void QxScene_ViewWindow::onViewReset() +{ + DEBTRACE( "QxScene_ViewWindow::onViewReset" ); +} + +/*! + Sets a new center of the active view +*/ +void QxScene_ViewWindow::onViewGlobalPan() +{ + DEBTRACE( "QxScene_ViewWindow::onViewGlobalPan" ); +} + +/*! + Zooms the active view +*/ +void QxScene_ViewWindow::onViewZoom() +{ + DEBTRACE( "QxScene_ViewWindow::onViewZoom" ); +} + +/*! + Moves the active view +*/ +void QxScene_ViewWindow::onViewPan() +{ + DEBTRACE( "QxScene_ViewWindow::onViewPan" ); +} + +/*! + Fits all obejcts within a rectangular area of the active view +*/ +void QxScene_ViewWindow::onViewFitArea() +{ + DEBTRACE( "QxScene_ViewWindow::onViewFitArea" ); +} + +/*! + Fits all objects in the active view +*/ +void QxScene_ViewWindow::onViewFitAll() +{ + DEBTRACE( "QxScene_ViewWindow::onViewFitAll" ); +} + +/*! + Set background of the viewport +*/ +void QxScene_ViewWindow::setBackgroundColor( const QColor& color ) +{ + DEBTRACE("QxScene_ViewWindow::setBackgroundColor"); +} + +/*! + Returns background of the viewport +*/ +QColor QxScene_ViewWindow::backgroundColor() const +{ + DEBTRACE("QxScene_ViewWindow::backgroundColor"); + QColor col; + return col; +} + +/*! + Custom resize event handler +*/ +void QxScene_ViewWindow::resizeEvent( QResizeEvent* theEvent ) +{ + DEBTRACE("QxScene_ViewWindow::resizeEvent"); +} + +/*! + Get resource manager +*/ +SUIT_ResourceMgr* QxScene_ViewWindow::resMgr() const +{ + DEBTRACE("QxScene_ViewWindow::resMgr"); + return SUIT_Session::session()->resourceMgr(); +} + +/*! + * emits a signal to ask to close the schema associated to the window. + * A boolean in return indicates if it is OK to close. + */ +bool QxScene_ViewWindow::closeRequested() +{ + DEBTRACE("QxScene_ViewWindow::closeRequested"); + bool isClosed = false; + emit tryClose(isClosed, this); + DEBTRACE("isClosed=" << isClosed); + return isClosed; +} diff --git a/src/QxScene/QxScene_ViewWindow.h b/src/QxScene/QxScene_ViewWindow.h new file mode 100644 index 000000000..dd1f8aa4e --- /dev/null +++ b/src/QxScene/QxScene_ViewWindow.h @@ -0,0 +1,105 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// SALOME QxScene : build Supervisor viewer into desktop +// +#ifndef QXSCENE_VIEWWINDOW_H +#define QXSCENE_VIEWWINDOW_H + +#include "QxScene.h" +#include "QxScene_ViewModel.h" + +#include "SUIT_ViewWindow.h" + +#include "QtxAction.h" + +#include + +#include +#include + +#ifdef WIN32 +#pragma warning ( disable:4251 ) +#endif + +class SUIT_ResourceMgr; + +class QXSCENE_EXPORT QxScene_ViewWindow : public SUIT_ViewWindow { + Q_OBJECT + + public: + //! Actions ID + enum { FitAllId, FitRectId, ZoomId, ScaleOpId, PanId, GlobalPanId, MoveOpId, ResetId }; + + QxScene_ViewWindow(SUIT_Desktop* theDesktop, QxScene_Viewer* theModel); + virtual ~QxScene_ViewWindow(); + + void setBackgroundColor( const QColor& ); + QColor backgroundColor() const; + + QToolBar* getToolBar(); + + SUIT_ResourceMgr* resMgr() const; + + QxScene_Viewer* getViewModel() const { return myViewModel; } + void setViewModel(QxScene_Viewer* theViewModel) { myViewModel = theViewModel; } + + virtual void initLayout(); + + void contextPopupEvent(QContextMenuEvent* theEvent) { emit contextMenuRequested( theEvent); } + + void setScene(QGraphicsScene* scene) { _scene = scene; } + QGraphicsScene* getScene() { return _scene; } + void setSceneView(QGraphicsView* sceneView){ _sceneView = sceneView; } + QGraphicsView* getSceneView() { return _sceneView; } + virtual bool closeRequested(); + + signals: + void tryClose(bool &isClosed, QxScene_ViewWindow* window); + + public slots: + void onViewFitAll(); + void onViewFitArea(); + void onViewZoom(); + void onViewPan(); + void onViewGlobalPan(); + void onViewReset(); + + protected: + void resizeEvent( QResizeEvent* theEvent ); + + QGraphicsScene* _scene; + QGraphicsView* _sceneView; + + private: + void createActions(); + void createToolBar(); + + int myToolBar; + + QxScene_Viewer* myViewModel; +}; + +#ifdef WIN32 +#pragma warning ( default:4251 ) +#endif + +#endif diff --git a/src/QxScene/resources/QxSceneViewer_images.ts b/src/QxScene/resources/QxSceneViewer_images.ts new file mode 100644 index 000000000..755bb16b0 --- /dev/null +++ b/src/QxScene/resources/QxSceneViewer_images.ts @@ -0,0 +1,52 @@ + + + + @default + + ICON_QXSCENE_RESET + qx_view_reset.png + + + ICON_QXSCENE_ZOOM + qx_view_zoom.png + + + ICON_QXSCENE_GLOBALPAN + qx_view_glpan.png + + + ICON_QXSCENE_PAN + qx_view_pan.png + + + ICON_QXSCENE_FITALL + qx_view_fitall.png + + + ICON_QXSCENE_FITAREA + qx_view_fitarea.png + + + diff --git a/src/QxScene/resources/QxSceneViewer_msg_en.ts b/src/QxScene/resources/QxSceneViewer_msg_en.ts new file mode 100644 index 000000000..e8188cd71 --- /dev/null +++ b/src/QxScene/resources/QxSceneViewer_msg_en.ts @@ -0,0 +1,59 @@ + + + + @default + + MEN_CHANGE_BACKGROUND + Change Background... + + + MNU_PAN_VIEW + Panning + + + DSC_PAN_VIEW + Panning the view + + + MNU_RESET_VIEW + Reset + + + DSC_RESET_VIEW + Reset View Point + + + LBL_TOOLBAR_LABEL + View Operations + + + + QxScene_ViewManager + + QXSCENE_VIEW_TITLE + QGraphics scene:%M - viewer:%V + + + diff --git a/src/QxScene/resources/QxScene_images.po b/src/QxScene/resources/QxScene_images.po new file mode 100644 index 000000000..3ea39eb01 --- /dev/null +++ b/src/QxScene/resources/QxScene_images.po @@ -0,0 +1,44 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File: QxScene_images.po +# Created: 03/02/2007 +# Author: Margarita Karpunina + + +msgid "ICON_QXSCENE_FITALL" +msgstr "qx_view_fitall.png" + +msgid "ICON_QXSCENE_FITAREA" +msgstr "qx_view_fitarea.png" + +msgid "ICON_QXSCENE_ZOOM" +msgstr "qx_view_zoom.png" + +msgid "ICON_QXSCENE_PAN" +msgstr "qx_view_pan.png" + +msgid "ICON_QXSCENE_GLOBALPAN" +msgstr "qx_view_glpan.png" + +msgid "ICON_QXSCENE_RESET" +msgstr "qx_view_reset.png" + diff --git a/src/QxScene/resources/QxScene_msg_en.po b/src/QxScene/resources/QxScene_msg_en.po new file mode 100644 index 000000000..44fba1f77 --- /dev/null +++ b/src/QxScene/resources/QxScene_msg_en.po @@ -0,0 +1,42 @@ +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File: QxScene_msg_en.po +# Created: 03/02/2007 +# Author: Margarita Karpunina + +msgid "LBL_TOOLBAR_LABEL" +msgstr "View Operations" + +msgid "DSC_RESET_VIEW" +msgstr "Reset View Point" + +msgid "MNU_RESET_VIEW" +msgstr "Reset" + +msgid "DSC_PAN_VIEW" +msgstr "Panning the view" + +msgid "MNU_PAN_VIEW" +msgstr "Panning" + +msgid "MEN_CHANGE_BACKGROUND" +msgstr "Change background..." diff --git a/src/QxScene/resources/qx_view_fitall.png b/src/QxScene/resources/qx_view_fitall.png new file mode 100755 index 0000000000000000000000000000000000000000..87e001dd80b2755858d4599857106a0c9c0b3500 GIT binary patch literal 816 zcmV-01JC@4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwBA{Qv(y12q9a0I`6G?+lD6rgAd;XCy{5 zHhlmA#Dc^@mIHB63}s|w3&>x^7VEp$V z!_S{T8NPo0%wTSB4^{^=10aA{2t*_sGYc!&H9+&gF8uxbH^cX@Ux5bxVEFUvH&_hp zNhkmaASMC^p1OMBJi~90i+=rL`10u!!-sco89u&$$ME^%M~1IozA)UpbP22urU4*; z81W@+U>Ndq^YVU}wt5|dps+B*k8j@@e*E~(@bkwHhQELQGJN^`k)bg^7i72+(46}q zJpciO*M(YIT7fc>k_-*mnGENS9|s!*!oPv8y?^^ALw|iO$gn1uVITkyKn&QD3J3!Y zt1#5l`yc4!^j}9?`#%#C(;-P2+5cJwhW{mHWkKFL1H{Sb`Tzn5YousvYge$bu(Yd+ zi!(g^@BtL?iGTn8T>uOM_2*9>%K?=<1!}&AO)o$IVT2*juu`C5U1~tXo&y8^?Uyf= zSFc{}AhvJ-2p}dj!}3{~naMT`1ONgE>_SkfVWO=i2{i0E$eXW$2^NUUfQEGwYY@l` zP;LPTAh-*gnwp;TadI-eff!amiebp56hHvMT?i_^fL=}k3i1H)bfAI1NHGa!20#G8 u4Wv>5%K#8S$g%vNP}zvfo5&o100RIgKz|e1YHVKs0000aa literal 0 HcmV?d00001 diff --git a/src/QxScene/resources/qx_view_fitarea.png b/src/QxScene/resources/qx_view_fitarea.png new file mode 100755 index 0000000000000000000000000000000000000000..450dc56c6ce722c040b4e5b77459207e8256cd58 GIT binary patch literal 912 zcmV;B18@9^P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<21!IgRCwBA`2YVu0|yT@j4)mLY4&S1Wi z-OcbHM57sG48)m^9-he_0f7usvT_X1pFT0(yLC(8&W#(k0Oh^{@n4u?fB<44!Y5g^ z-MvYH5s?faC;S8YMon9X!N%2{!P42~V^d*1!@s|O;pPAY5EB8zLY%$4ll;RYzy^Ww zzyAz>|Nmq7`|lrvqn8hZdq5CKT`^1pKmZXkFx1h@8)yK~5THSSfQEqa-+v50fBt0n z`uQ`1xxGC|T`bJU00BhE%bd(CtYFsw%>%pe_wU~f-@kqZ8u)|Z&#&KLF(43ts^eU0F)F)_Iu>vs%)X>*Rt^|Sq00D$yAS*L-7tFAGPoM68`t<2NpzvEDJ`2PkgPEZQ zf?W3=>e4ST{Qv>Pgyb@bC5sj@fV}w<7@K#WJlO{{>@HC171XfPKztRHl%RYNeIJNF z01K4gATvM(3qSzDi!W_$?G#}ip4rTdj11l(AtV=F=_OOZ1q?s{!3|_&WMorRR4o7X z>z4u0Wlx|ky9mWEfcQ5q!$2+r83v*O0tneaP`Ky0YCsD8wiRZ mF(6igmT$M9kwFpw2rvMsC6+#;$I7?>0000P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZc>jKeOv$OzL15I`)*h9FA-UC3*1Z~uwm?OTSQ4<0bQ ze(?e}13&j7BtjOg8oBY{u_wj195)S?b{&f6+rwNh(Uq* zK0ZGF9!TB4fBzVey$%pSph#d!NlE$3!NI}s_3KxL7r?*=#V#=XRDg2aKr9Qy%0Mg# zwcu`6R@RnZzkY$$K7Ra|;oiM_44*%L1}7(g00Oy$^}~k`3@Z!_7=WS-7i47_^npo& z_1d*NKskL-Yy$BYAm#zl;o;#2riOWv!1Q5tTw%b52J!EBN z_zMj9Ye2(a0MpVAL405VabQDXA%mWt-g{_beh*a#GW3?PurN#?D4ah51P}|7@?T7UooaWF76FUtY(e=N8Ih<%~* zEa-Xx0ti>}^$+SLM<6zX=4AnBQUWFN&ro@cDgYqB0GrW?VpB4t`v3p{07*qoM6N<$ Eg6tg6&Hw-a literal 0 HcmV?d00001 diff --git a/src/QxScene/resources/qx_view_pan.png b/src/QxScene/resources/qx_view_pan.png new file mode 100755 index 0000000000000000000000000000000000000000..ec56cacc779342a978f183ecf747860c8b6dafb4 GIT binary patch literal 982 zcmV;{11bE8P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZb!otG-18H_3W&!c>DFz52f`;Yh z=KlYG@Zf(vJw1@2;y}!e&rpB>!e<*(Vq)UoNnv3OZ?0TnIIE=v5_imOsnQ(>_Q@}D9Q|HpzmfY=u#@9*!A5&HlE#0WDiKR^HPSD@Ek zzkbaCa@oa;7a4y4{_O{p(+6UCAm#(&Px|`$DQaqJ3~X#{4Da5(V|e)RA;Yz6*FdiR z0t!=r00NsF6BF}yLQoI`!>?Zq4Bx&nFns>Zz!(z)vWNqS-$A_va>-9lVB{=URRycP zpsdWG&(6-kdhOZ^SVRE?5Q~nE&fmqMp$spM9AUWs@+E@^Q1mI#KqwFe;@8la1=_~I z2J*$jJ9ilVe*DOA?ZXF#7k~dU%-7RnNW63j9QyzP#B$}z6$wUv{}&HSOBrrFdBPyW z&(HAr=TDe{d{D#gLnA=o6)=Lf|NhPJ2I#_XKyN<>8oU@7aj@722p~`x$^o%15O2W} zQ4K(R5QwirT?%sXD=g|(05K?CodF0SP#A)o^9gFhL?B)Zjj^{zMn(Vgg6j zxpU_jK79D#4wN$jVr3vsfvN|&{yoSXfB<5F#?CWnLd}P!GmwE_`1tr3R)vHxJUVoU z;RMiI;U7Ty82F(McnHLu(3}E_l-nS400M{wntfhCo&E)yX#avZ-#{@A45MF<9x;Hz z4lSY{BV~fOP)EH02p|@y4KPE$Kyv_tjEu~^`}glN965WI;l_&>3~!m4VFpeGVn3)0 zVaeeeEFA&_5G?D#4E+fW52hzio+tt7dm^Ah;l~e#JMZ4X4D5u`pP`QU2lWw%{s$01 zxUwNTH0uR`vRkc+3M|{L0pd2OxFS>?3IGToW*i2Bk`pV``xg$qd*=yF8X#vr0J$9M zy07T20tg^xJOwPwRUpGpK{Y>y#^wX4;lH73-~b@N0A_|Q{Wj4Xb^rhX07*qoM6N<$ Ef)-GsSpWb4 literal 0 HcmV?d00001 diff --git a/src/QxScene/resources/qx_view_reset.png b/src/QxScene/resources/qx_view_reset.png new file mode 100755 index 0000000000000000000000000000000000000000..66f81e60471b7b587c37166a4e206b45f74e7fc2 GIT binary patch literal 918 zcmV;H18Mw;P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3`s;mRCwBA`2YVu0}KO!sHi9>h~bSaP6`GHAOZXQ009Iu ztVK?a_y6WCKL3CH$@>5IfA;^Iw`2aBnTdlW&7exTp@zi+u{AD30Ro7Lk&#hUNQk5Q z?D;STpjR1~nHj+nii&(-KGfwPzyqZXfLH~Ij{*P!hzW=@vvYJAfQEtvwrzdL@b~Y3 zhTx#>3=Q?CrT~SeL)CtP(l4O+3pN7*0*D2Ojg5^(!JOKflMHLu++jF%N|j;rru$QX z!I2B}0Zi>zGy}h4GY}wvKrZ|XauEp3n0^K5WhREsj&mSx69e%89{T_R1ajfcn>Rmz zIq%;60AXz)^A6B;zi?=K-}sfC-?tzTH62r z+1dZM`}+RpVPyp=a)o&VAb=Q=3jlDg;ox}n@#jy5zyJSR0p*SZ#Xz=e0L9NFXlO8m zC@V8qN=Sg!-~8}_;lk_J40EqvXW0Gtu^UimH$VWPmo_{g8)rH={0C|R3ET$aE+9^W z#_sAO0|T(@KsZfX8>D6hvI_wMh!MSr0=mcm=$i9OU0oSe`1u*u-@C_f=i^5PHYO$p zdueHgKqVyxW?=4l`t>V=_OfLRAAkK40Gja;rXL`H7_pRjAVWa`o#`Ya<56K`#Na9` ziz0vj(z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;lSxEDRCwBA{Qv(y12q9a05LI882|(j3yAp6z=+{Y zPKN)C$b3dd#y}ty1;mO#{0NBG0DZR%T^~RIu^?$iH}pTm97baxo$2V|nd}h|$RH&v z$MF2=6XU&Gw*&&^{D5-Pfd(IhX#xl!22dE{!$2^nw!8QLxyR4`p9SL6kDmTN`QXX_ zWA`8bZ*#;G5q}bli};<&kW}F_F#1|4FCbe zLcl;aW)@bkYk=l~UHJR=Z-(z*zXA>X!SLtTZ?G6R8lV6mfC#zp)YS{;8GeIY^y?SH zmrtJL&@bUdShR+{AGJO5=h2iF{4FCbeh%aFS!;qhwm-oZ8)$14pg@qY@ zeEZJuHQCMa{8~Mt^J>giRqA}jO>3c z1H=E4va%p=odM!xbbSB;gf&vMwY4kQSXkOs#l;z(e)s?i_{6_||1JOqf%@|&kL7?$ zo&q&r!=@J?fH1-kXjm!Gur4*AVb6g9|Mtt5%Bxqec3{&C%ChKL6d-_@&RKiH#D= b009O7QZ{F9XF19?00000NkvXXu0mjfwM|pG literal 0 HcmV?d00001 diff --git a/src/SalomeApp/SalomeApp_DoubleSpinBox.cxx b/src/SalomeApp/SalomeApp_DoubleSpinBox.cxx new file mode 100644 index 000000000..42cf9e48d --- /dev/null +++ b/src/SalomeApp/SalomeApp_DoubleSpinBox.cxx @@ -0,0 +1,352 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_DoubleSpinBox.cxx +// Author: Oleg UVAROV + +#include "SalomeApp_DoubleSpinBox.h" +#include "SalomeApp_Application.h" +#include "SalomeApp_Study.h" + +#include + +#include "SALOMEDSClient_ClientFactory.hxx" +#include CORBA_SERVER_HEADER(SALOMEDS) + +#include +#include + +/*! + \class SalomeApp_DoubleSpinBox +*/ + +/*! + \brief Constructor. + + Constructs a spin box with 0.0 as minimum value and 99.99 as maximum value, + a step value of 1.0 and a precision of 2 decimal places. + The value is initially set to 0.00. + + \param parent parent object +*/ +SalomeApp_DoubleSpinBox::SalomeApp_DoubleSpinBox( QWidget* parent ) +: QtxDoubleSpinBox( parent ), + myDefaultValue( 0.0 ), + myIsRangeSet( false ), + myMinimum( 0.0 ), + myMaximum( 99.99 ) +{ + connectSignalsAndSlots(); +} + +/*! + \brief Constructor. + + Constructs a spin box with specified minimum, maximum and step value. + The precision is set to 2 decimal places. + The value is initially set to the minimum value. + + \param min spin box minimum possible value + \param max spin box maximum possible value + \param step spin box increment/decrement value + \param parent parent object +*/ +SalomeApp_DoubleSpinBox::SalomeApp_DoubleSpinBox( double min, double max, double step, QWidget* parent ) +: QtxDoubleSpinBox( min, max, step, parent ), + myDefaultValue( 0.0 ), + myIsRangeSet( false ), + myMinimum( min ), + myMaximum( max ) +{ + connectSignalsAndSlots(); +} + +/*! + \brief Constructor. + + Constructs a spin box with specified minimum, maximum and step value. + The precision is set to 2 decimal places. + The value is initially set to the minimum value. + + \param min spin box minimum possible value + \param max spin box maximum possible value + \param step spin box increment/decrement value + \param parent parent object +*/ +SalomeApp_DoubleSpinBox::SalomeApp_DoubleSpinBox( double min, double max, double step, int prec, int dec, QWidget* parent ) +: QtxDoubleSpinBox( min, max, step, prec, dec, parent ), + myDefaultValue( 0.0 ), + myIsRangeSet( false ), + myMinimum( min ), + myMaximum( max ) +{ + connectSignalsAndSlots(); +} + +/*! + \brief Destructor. +*/ +SalomeApp_DoubleSpinBox::~SalomeApp_DoubleSpinBox() +{ +} + +/*! + \brief Connect signals and slots. +*/ +void SalomeApp_DoubleSpinBox::connectSignalsAndSlots() +{ + connect( this, SIGNAL( editingFinished() ), + this, SLOT( onEditingFinished() ) ); + + connect( this, SIGNAL( valueChanged( const QString& ) ), + this, SLOT( onTextChanged( const QString& ) ) ); + + connect( lineEdit(), SIGNAL( textChanged( const QString& ) ), + this, SLOT( onTextChanged( const QString& ) ) ); + + connect( lineEdit(), SIGNAL( textChanged( const QString& )), + this, SIGNAL( textChanged( const QString& ) ) ); +} + +/*! + \brief This function is called when editing is finished. +*/ +void SalomeApp_DoubleSpinBox::onEditingFinished() +{ + if( myTextValue.isNull() ) + myTextValue = text(); + + setText( myTextValue ); +} + +/*! + \brief This function is called when value is changed. +*/ +void SalomeApp_DoubleSpinBox::onTextChanged( const QString& text ) +{ + myTextValue = text; + + double value = 0; + if( isValid( text, value ) == Acceptable ) + myCorrectValue = text; +} + +/*! + \brief Interpret text entered by the user as a value. + \param text text entered by the user + \return mapped value + \sa textFromValue() +*/ +double SalomeApp_DoubleSpinBox::valueFromText( const QString& text ) const +{ + double value = 0; + if( isValid( text, value ) == Acceptable ) + return value; + + return defaultValue(); +} + +/*! + \brief This function is used by the spin box whenever it needs to display + the given value. + + \param val spin box value + \return text representation of the value + \sa valueFromText() +*/ +QString SalomeApp_DoubleSpinBox::textFromValue( double val ) const +{ + return QtxDoubleSpinBox::textFromValue( val ); +} + +/*! + \brief This function is used to determine whether input is valid. + \param str currently entered value + \param pos cursor position in the string + \return validating operation result +*/ +QValidator::State SalomeApp_DoubleSpinBox::validate( QString& str, int& pos ) const +{ + return QValidator::Acceptable; +} + +/*! + \brief This function is used to determine whether input is valid. + \return validating operation result +*/ +bool SalomeApp_DoubleSpinBox::isValid( QString& msg, bool toCorrect ) +{ + double value; + State aState = isValid( text(), value ); + + if( aState != Acceptable ) + { + if( toCorrect ) + { + if( aState == Incompatible ) + msg += tr( "ERR_INCOMPATIBLE_TYPE" ).arg( text() ) + "\n"; + else if( aState == NoVariable ) + msg += tr( "ERR_NO_VARIABLE" ).arg( text() ) + "\n"; + else if( aState == Invalid ) + msg += tr( "ERR_INVALID_VALUE" ) + "\n"; + + setText( myCorrectValue ); + } + return false; + } + + return true; +} + +/*! + \brief This function is used to set a default value for this spinbox. + \param value default value +*/ +void SalomeApp_DoubleSpinBox::setDefaultValue( const double value ) +{ + myDefaultValue = value; +} + +/*! + \brief This function is used to set minimum and maximum values for this spinbox. + \param min minimum value + \param max maximum value +*/ +void SalomeApp_DoubleSpinBox::setRange( const double min, const double max ) +{ + QtxDoubleSpinBox::setRange( min, max ); + + myIsRangeSet = true; + myMinimum = min; + myMaximum = max; +} + +/*! + \brief This function is used to set a current value for this spinbox. + \param value current value +*/ +void SalomeApp_DoubleSpinBox::setValue( const double value ) +{ + QtxDoubleSpinBox::setValue( value ); + + myCorrectValue = QString::number( value ); + myTextValue = myCorrectValue; +} + +/*! + \brief This function is used to set a text for this spinbox. + \param value current value +*/ +void SalomeApp_DoubleSpinBox::setText( const QString& value ) +{ + lineEdit()->setText(value); +} + +/*! + \brief This function is used to determine whether input is valid. + \return validating operation result +*/ +SalomeApp_DoubleSpinBox::State SalomeApp_DoubleSpinBox::isValid( const QString& text, double& value ) const +{ + SearchState aSearchState = findVariable( text, value ); + if( aSearchState == NotFound ) + { + bool ok = false; + value = text.toDouble( &ok ); + if( !ok ) + return NoVariable; + } + else if( aSearchState == IncorrectType ) + return Incompatible; + + if( !checkRange( value ) ) + return Invalid; + + return Acceptable; +} + +/*! + \brief This function return a default acceptable value (commonly, 0.0). + \return default acceptable value +*/ +double SalomeApp_DoubleSpinBox::defaultValue() const +{ + if( myMinimum > myDefaultValue || myMaximum < myDefaultValue ) + return myMinimum; + + return myDefaultValue; +} + +/*! + \brief This function is used to check that string value lies within predefined range. + \return check status +*/ +bool SalomeApp_DoubleSpinBox::checkRange( const double value ) const +{ + if( !myIsRangeSet ) + return true; + + return value >= myMinimum && value <= myMaximum; +} + +/*! + \brief This function is used to determine whether input is a variable name and to get its value. + \return status of search operation +*/ +SalomeApp_DoubleSpinBox::SearchState SalomeApp_DoubleSpinBox::findVariable( const QString& name, double& value ) const +{ + value = 0; + if( SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ) ) + { + if( SalomeApp_Study* study = dynamic_cast( app->activeStudy() ) ) + { + _PTR(Study) studyDS = study->studyDS(); + + std::string aName = name.toStdString(); + if( studyDS->IsVariable( aName ) ) + { + if( studyDS->IsReal( aName ) || studyDS->IsInteger( aName ) ) + { + value = studyDS->GetReal( aName ); + return Found; + } + return IncorrectType; + } + } + } + return NotFound; +} + +/*! + \brief This function is called when the spinbox recieves key press event. +*/ +void SalomeApp_DoubleSpinBox::keyPressEvent( QKeyEvent* e ) +{ + if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) + QWidget::keyPressEvent( e ); + else + QtxDoubleSpinBox::keyPressEvent( e ); +} + +/*! + \brief This function is called when the spinbox recieves show event. +*/ +void SalomeApp_DoubleSpinBox::showEvent( QShowEvent* ) +{ + setText( myTextValue ); +} diff --git a/src/SalomeApp/SalomeApp_DoubleSpinBox.h b/src/SalomeApp/SalomeApp_DoubleSpinBox.h new file mode 100644 index 000000000..c5b6539ca --- /dev/null +++ b/src/SalomeApp/SalomeApp_DoubleSpinBox.h @@ -0,0 +1,91 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_DoubleSpinBox.h +// Author: Oleg UVAROV + +#ifndef SALOMEAPP_DOUBLESPINBOX_H +#define SALOMEAPP_DOUBLESPINBOX_H + +#include "SalomeApp.h" + +#include + +#include + +class SALOMEAPP_EXPORT SalomeApp_DoubleSpinBox : public QtxDoubleSpinBox +{ + Q_OBJECT + + enum State { Invalid = 0, NoVariable, Incompatible, Acceptable }; + enum SearchState { NotFound = 0, IncorrectType, Found }; + +public: + SalomeApp_DoubleSpinBox( QWidget* = 0 ); + SalomeApp_DoubleSpinBox( double, double, double = 1, QWidget* = 0 ); + SalomeApp_DoubleSpinBox( double, double, double, int, int, QWidget* = 0 ); + virtual ~SalomeApp_DoubleSpinBox(); + + virtual double valueFromText( const QString& ) const; + virtual QString textFromValue( double ) const; + + virtual QValidator::State validate( QString&, int& ) const; + + virtual bool isValid( QString& msg, bool = false ); + + virtual void setDefaultValue( const double ); + + virtual void setRange( double, double ); + virtual void setValue( double ); + + virtual void setText(const QString& ); + +signals: + void textChanged( const QString& ); + +protected: + State isValid( const QString&, double& ) const; + + double defaultValue() const; + bool checkRange( const double ) const; + + SearchState findVariable( const QString&, double& ) const; + +protected: + virtual void keyPressEvent( QKeyEvent* ); + virtual void showEvent( QShowEvent* ); + +protected slots: + void onEditingFinished(); + void onTextChanged( const QString& ); + +private: + void connectSignalsAndSlots(); + +private: + double myDefaultValue; + + bool myIsRangeSet; + double myMinimum; + double myMaximum; + + QString myCorrectValue; + QString myTextValue; +}; + +#endif diff --git a/src/SalomeApp/SalomeApp_IntSpinBox.cxx b/src/SalomeApp/SalomeApp_IntSpinBox.cxx new file mode 100644 index 000000000..4d3460a3b --- /dev/null +++ b/src/SalomeApp/SalomeApp_IntSpinBox.cxx @@ -0,0 +1,310 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_IntSpinBox.cxx +// Author: Oleg UVAROV + +#include "SalomeApp_IntSpinBox.h" +#include "SalomeApp_Application.h" +#include "SalomeApp_Study.h" + +#include + +#include "SALOMEDSClient_ClientFactory.hxx" +#include CORBA_SERVER_HEADER(SALOMEDS) + +#include +#include + +/*! + \class SalomeApp_IntSpinBox +*/ + +/*! + \brief Constructor. + + Constructs a spin box with 0 as minimum value and 99 as maximum value, + a step value of 1. The value is initially set to 0. + + \param parent parent object +*/ +SalomeApp_IntSpinBox::SalomeApp_IntSpinBox( QWidget* parent ) +: QtxIntSpinBox( parent ), + myDefaultValue( 0 ) +{ + connectSignalsAndSlots(); +} + +/*! + \brief Constructor. + + Constructs a spin box with specified minimum, maximum and step value. + The value is initially set to the minimum value. + + \param min spin box minimum possible value + \param max spin box maximum possible value + \param step spin box increment/decrement value + \param parent parent object +*/ +SalomeApp_IntSpinBox::SalomeApp_IntSpinBox( int min, int max, int step, QWidget* parent ) +: QtxIntSpinBox( min, max, step, parent ), + myDefaultValue( 0 ) +{ + connectSignalsAndSlots(); +} + +/*! + \brief Destructor. +*/ +SalomeApp_IntSpinBox::~SalomeApp_IntSpinBox() +{ +} + +/*! + \brief Connect signals and slots. +*/ +void SalomeApp_IntSpinBox::connectSignalsAndSlots() +{ + connect( this, SIGNAL( editingFinished() ), + this, SLOT( onEditingFinished() ) ); + + connect( this, SIGNAL( valueChanged( const QString& ) ), + this, SLOT( onTextChanged( const QString& ) ) ); + + connect( lineEdit(), SIGNAL( textChanged( const QString& ) ), + this, SLOT( onTextChanged( const QString& ) ) ); + + connect( lineEdit(), SIGNAL( textChanged( const QString& )), + this, SIGNAL( textChanged( const QString& ) ) ); +} + +/*! + \brief This function is called when editing is finished. +*/ +void SalomeApp_IntSpinBox::onEditingFinished() +{ + if( myTextValue.isNull() ) + myTextValue = text(); + + setText( myTextValue ); +} + +/*! + \brief This function is called when value is changed. +*/ +void SalomeApp_IntSpinBox::onTextChanged( const QString& text ) +{ + myTextValue = text; + + int value = 0; + if( isValid( text, value ) == Acceptable ) + myCorrectValue = text; +} + +/*! + \brief Interpret text entered by the user as a value. + \param text text entered by the user + \return mapped value + \sa textFromValue() +*/ +int SalomeApp_IntSpinBox::valueFromText( const QString& text ) const +{ + int value = 0; + if( isValid( text, value ) == Acceptable ) + return value; + + return defaultValue(); +} + +/*! + \brief This function is used by the spin box whenever it needs to display + the given value. + + \param val spin box value + \return text representation of the value + \sa valueFromText() +*/ +QString SalomeApp_IntSpinBox::textFromValue( int val ) const +{ + return QtxIntSpinBox::textFromValue( val ); +} + +/*! + \brief This function is used to determine whether input is valid. + \param str currently entered value + \param pos cursor position in the string + \return validating operation result +*/ +QValidator::State SalomeApp_IntSpinBox::validate( QString& str, int& pos ) const +{ + return QValidator::Acceptable; +} + +/*! + \brief This function is used to determine whether input is valid. + \return validating operation result +*/ +bool SalomeApp_IntSpinBox::isValid( QString& msg, bool toCorrect ) +{ + int value; + State aState = isValid( text(), value ); + + if( aState != Acceptable ) + { + if( toCorrect ) + { + if( aState == Incompatible ) + msg += tr( "ERR_INCOMPATIBLE_TYPE" ).arg( text() ) + "\n"; + else if( aState == NoVariable ) + msg += tr( "ERR_NO_VARIABLE" ).arg( text() ) + "\n"; + else if( aState == Invalid ) + msg += tr( "ERR_INVALID_VALUE" ) + "\n"; + + setText( myCorrectValue ); + } + return false; + } + + return true; +} + +/*! + \brief This function is used to set a default value for this spinbox. + \param value default value +*/ +void SalomeApp_IntSpinBox::setDefaultValue( const int value ) +{ + myDefaultValue = value; +} + +/*! + \brief This function is used to set a current value for this spinbox. + \param value current value +*/ +void SalomeApp_IntSpinBox::setValue( const int value ) +{ + QtxIntSpinBox::setValue( value ); + + myCorrectValue = QString::number( value ); + myTextValue = myCorrectValue; +} + +/*! + \brief This function is used to set a text for this spinbox. + \param value current value +*/ +void SalomeApp_IntSpinBox::setText( const QString& value ) +{ + lineEdit()->setText(value); +} + +/*! + \brief This function is used to determine whether input is valid. + \return validating operation result +*/ +SalomeApp_IntSpinBox::State SalomeApp_IntSpinBox::isValid( const QString& text, int& value ) const +{ + SearchState aSearchState = findVariable( text, value ); + if( aSearchState == NotFound ) + { + bool ok = false; + value = text.toInt( &ok ); + if( !ok ) + { + text.toDouble( &ok ); + if( ok ) + return Invalid; + return NoVariable; + } + } + else if( aSearchState == IncorrectType ) + return Incompatible; + + if( !checkRange( value ) ) + return Invalid; + + return Acceptable; +} + +/*! + \brief This function return a default acceptable value (commonly, 0). + \return default acceptable value +*/ +int SalomeApp_IntSpinBox::defaultValue() const +{ + if( minimum() > myDefaultValue || maximum() < myDefaultValue ) + return minimum(); + + return myDefaultValue; +} + +/*! + \brief This function is used to check that string value lies within predefined range. + \return check status +*/ +bool SalomeApp_IntSpinBox::checkRange( const int value ) const +{ + return value >= minimum() && value <= maximum(); +} + +/*! + \brief This function is used to determine whether input is a variable name and to get its value. + \return status of search operation +*/ +SalomeApp_IntSpinBox::SearchState SalomeApp_IntSpinBox::findVariable( const QString& name, int& value ) const +{ + value = 0; + if( SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ) ) + { + if( SalomeApp_Study* study = dynamic_cast( app->activeStudy() ) ) + { + _PTR(Study) studyDS = study->studyDS(); + + std::string aName = name.toStdString(); + if( studyDS->IsVariable( aName ) ) + { + if( studyDS->IsInteger( aName ) ) + { + value = studyDS->GetInteger( aName ); + return Found; + } + return IncorrectType; + } + } + } + return NotFound; +} + +/*! + \brief This function is called when the spinbox recieves key press event. +*/ +void SalomeApp_IntSpinBox::keyPressEvent( QKeyEvent* e ) +{ + if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) + QWidget::keyPressEvent( e ); + else + QtxIntSpinBox::keyPressEvent( e ); +} + +/*! + \brief This function is called when the spinbox recieves show event. +*/ +void SalomeApp_IntSpinBox::showEvent( QShowEvent* ) +{ + setText( myTextValue ); +} diff --git a/src/SalomeApp/SalomeApp_IntSpinBox.h b/src/SalomeApp/SalomeApp_IntSpinBox.h new file mode 100644 index 000000000..d15fe99c1 --- /dev/null +++ b/src/SalomeApp/SalomeApp_IntSpinBox.h @@ -0,0 +1,85 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_IntSpinBox.h +// Author: Oleg UVAROV + +#ifndef SALOMEAPP_INTSPINBOX_H +#define SALOMEAPP_INTSPINBOX_H + +#include "SalomeApp.h" + +#include + +#include + +class SALOMEAPP_EXPORT SalomeApp_IntSpinBox : public QtxIntSpinBox +{ + Q_OBJECT + + enum State { Invalid = 0, NoVariable, Incompatible, Acceptable }; + enum SearchState { NotFound = 0, IncorrectType, Found }; + +public: + SalomeApp_IntSpinBox( QWidget* = 0 ); + SalomeApp_IntSpinBox( int, int, int = 1, QWidget* = 0 ); + virtual ~SalomeApp_IntSpinBox(); + + virtual int valueFromText( const QString& ) const; + virtual QString textFromValue( int ) const; + + virtual QValidator::State validate( QString&, int& ) const; + + virtual bool isValid( QString& msg, bool = false ); + + virtual void setDefaultValue( const int ); + + virtual void setValue( int ); + + virtual void setText(const QString& ); + +signals: + void textChanged( const QString& ); + +protected: + State isValid( const QString&, int& ) const; + + int defaultValue() const; + bool checkRange( const int ) const; + + SearchState findVariable( const QString&, int& ) const; + +protected: + virtual void keyPressEvent( QKeyEvent* ); + virtual void showEvent( QShowEvent* ); + +protected slots: + void onEditingFinished(); + void onTextChanged( const QString& ); + +private: + void connectSignalsAndSlots(); + +private: + int myDefaultValue; + + QString myCorrectValue; + QString myTextValue; +}; + +#endif diff --git a/src/SalomeApp/SalomeApp_NoteBookDlg.cxx b/src/SalomeApp/SalomeApp_NoteBookDlg.cxx new file mode 100644 index 000000000..6005d889a --- /dev/null +++ b/src/SalomeApp/SalomeApp_NoteBookDlg.cxx @@ -0,0 +1,1082 @@ +// Copyright (C) 2008 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_NoteBookDlg.cxx +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. +// Module : GUI + +#include "SalomeApp_NoteBookDlg.h" +#include "SalomeApp_Application.h" +#include "SalomeApp_Study.h" +#include "SalomeApp_VisualState.h" + +#include + +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; + +#define DEFAULT_MARGIN 11 +#define DEFAULT_SPACING 6 +#define SPACER_SIZE 120 +#define COLUMN_SIZE 180 + +#define NAME_COLUMN 0 +#define VALUE_COLUMN 1 + + +/////////////////////////////////////////////////////////////////////////// +// NoteBook_TableRow class // +/////////////////////////////////////////////////////////////////////////// +//============================================================================ +/*! Function : NoteBook_TableRow + * Purpose : Constructor + */ +//============================================================================ +NoteBook_TableRow::NoteBook_TableRow(int index, QWidget* parent): + QWidget(parent), + myIndex(index), + myRowHeader(new QTableWidgetItem()), + myVariableName(new QTableWidgetItem()), + myVariableValue(new QTableWidgetItem()) +{ +} + +//============================================================================ +/*! Function : ~NoteBook_TableRow + * Purpose : Destructor + */ +//============================================================================ +NoteBook_TableRow::~NoteBook_TableRow() +{ +} + +//============================================================================ +/*! Function : AddToTable + * Purpose : Add this row to the table theTable + */ +//============================================================================ +void NoteBook_TableRow::AddToTable(QTableWidget *theTable) +{ + int aPosition = theTable->rowCount(); + int aRowCount = aPosition+1; + theTable->setRowCount(aRowCount); + myRowHeader->setText(QString::number(aRowCount)); + + theTable->setVerticalHeaderItem(aPosition,myRowHeader); + theTable->setItem(aPosition, NAME_COLUMN, myVariableName); + theTable->setItem(aPosition, VALUE_COLUMN, myVariableValue); +} + +//============================================================================ +/*! Function : SetName + * Purpose : + */ +//============================================================================ +void NoteBook_TableRow::SetName(const QString theName) +{ + myVariableName->setText(theName); +} + +//============================================================================ +/*! Function : SetValue + * Purpose : + */ +//============================================================================ +void NoteBook_TableRow::SetValue(const QString theValue) +{ + myVariableValue->setText(theValue); +} + +//============================================================================ +/*! Function : GetName + * Purpose : Return variable name + */ +//============================================================================ +QString NoteBook_TableRow::GetName() const +{ + return myVariableName->text(); +} + +//============================================================================ +/*! Function : GetValue + * Purpose : Return variable value + */ +//============================================================================ +QString NoteBook_TableRow::GetValue() const +{ + return myVariableValue->text(); +} + +//============================================================================ +/*! Function : CheckName + * Purpose : Return true if variable name correct, otherwise return false + */ +//============================================================================ +bool NoteBook_TableRow::CheckName() +{ + QString aName = GetName(); + int aPos = 0; + QRegExpValidator aValidator( QRegExp("^([a-zA-Z]+)([a-zA-Z0-9_]*)$"), 0 ); + if( aName.isEmpty() || !aValidator.validate( aName, aPos ) ) + return false; + return true; +} + +//============================================================================ +/*! Function : CheckValue + * Purpose : Return true if variable value correct, otherwise return false + */ +//============================================================================ +bool NoteBook_TableRow::CheckValue() +{ + bool aResult = false; + QString aValue = GetValue(); + if( (!aValue.isEmpty()) && + (IsRealValue(aValue)) || + IsIntegerValue(aValue)|| + IsBooleanValue(aValue)) + aResult = true; + + return aResult; +} + +//============================================================================ +/*! Function : GetVariableItem + * Purpose : + */ +//============================================================================ +QTableWidgetItem* NoteBook_TableRow::GetVariableItem() +{ + return myVariableValue; +} + +//============================================================================ +/*! Function : GetNameItem + * Purpose : + */ +//============================================================================ +QTableWidgetItem* NoteBook_TableRow::GetNameItem() +{ + return myVariableName; +} + +//============================================================================ +/*! Function : GetHeaderItem + * Purpose : + */ +//============================================================================ +QTableWidgetItem* NoteBook_TableRow::GetHeaderItem() +{ + return myRowHeader; +} + +//============================================================================ +/*! Function : IsRealValue + * Purpose : Return true if theValue string is real value, otherwise return + * false + */ +//============================================================================ +bool NoteBook_TableRow::IsRealValue(const QString theValue, double* theResult) +{ + bool aResult = false; + double aDResult = theValue.toDouble(&aResult); + if(theResult) + *theResult = aDResult; + + return aResult; +} + +//============================================================================ +/*! Function : IsBooleanValue + * Purpose : Return true if theValue String is boolean value, otherwise return + * false + */ +//============================================================================ +bool NoteBook_TableRow::IsBooleanValue(const QString theValue, bool* theResult){ + bool aResult = false; + bool aBResult; + if(theValue.compare("True") == 0) { + aBResult = true; + aResult = true; + } + else if(theValue.compare("False") == 0) { + aBResult = false; + aResult = true; + } + if(theResult) + *theResult = aBResult; + + return aResult; +} + +//============================================================================ +/*! Function : IsIntegerValue + * Purpose : Return true if theValue string is integer value, otherwise return + * false + */ +//============================================================================ +bool NoteBook_TableRow::IsIntegerValue(const QString theValue, int* theResult) +{ + bool aResult = false; + int anIResult; + anIResult = theValue.toInt(&aResult); + + if(theResult) + *theResult = anIResult; + + return aResult; +} + + +/////////////////////////////////////////////////////////////////////////// +// NoteBook_Table class // +/////////////////////////////////////////////////////////////////////////// +//============================================================================ +/*! Function : NoteBook_Table + * Purpose : Constructor + */ +//============================================================================ +NoteBook_Table::NoteBook_Table(QWidget * parent) + :QTableWidget(parent), + isProcessItemChangedSignal(false), + myIsModified(false) +{ + setColumnCount(2); + setSelectionMode(QAbstractItemView::SingleSelection); + + //Add Headers Columns + QFont aFont = QFont(); + aFont.setBold(true); + aFont.setPointSize(10); + + //"Name" column + QTableWidgetItem * aNameHeader = new QTableWidgetItem(); + aNameHeader->setText(tr("VARNAME_COLUMN")); + aNameHeader->setFont(aFont); + setHorizontalHeaderItem(0,aNameHeader); + setColumnWidth ( 0, COLUMN_SIZE); + + //"Value" Column + QTableWidgetItem * aValueHeader = new QTableWidgetItem(); + aValueHeader->setText(tr("VARVALUE_COLUMN")); + aValueHeader->setFont(aFont); + setHorizontalHeaderItem(1,aValueHeader); + setColumnWidth ( 1, COLUMN_SIZE); + setSortingEnabled(false); + + connect(this,SIGNAL(itemChanged(QTableWidgetItem*)),this,SLOT(onItemChanged(QTableWidgetItem*))); +} + +//============================================================================ +/*! Function : ~NoteBook_Table + * Purpose : Destructor + */ +//============================================================================ +NoteBook_Table::~NoteBook_Table(){} + +//============================================================================ +/*! Function : getUniqueIndex + * Purpose : Get a unique index for the new row + */ +//============================================================================ +int NoteBook_Table::getUniqueIndex() const +{ + int anIndex = 0; + if( !myRows.isEmpty() ) + if( NoteBook_TableRow* aRow = myRows.last() ) + anIndex = aRow->GetIndex(); + + int aMaxRemovedRow = 0; + for( QListIterator anIter( myRemovedRows ); anIter.hasNext(); ) + { + int aRemovedRow = anIter.next(); + aMaxRemovedRow = qMax( aRemovedRow, aMaxRemovedRow ); + } + + anIndex = qMax( anIndex, aMaxRemovedRow ) + 1; + return anIndex; +} + +//============================================================================ +/*! Function : Init + * Purpose : Add variables in the table from theStudy + */ +//============================================================================ +void NoteBook_Table::Init(_PTR(Study) theStudy) +{ + isProcessItemChangedSignal = false; + + int aNumRows = myRows.count(); + if( aNumRows > 0 ) + { + for( int i = 0; i < myRows.size(); i++ ) + { + NoteBook_TableRow* aRow = myRows[ i ]; + if( aRow ) + { + delete aRow; + aRow = 0; + } + } + myRows.clear(); + } + setRowCount( 0 ); + + myRemovedRows.clear(); + myVariableMapRef.clear(); + myVariableMap.clear(); + + //Add all variables into the table + vector aVariables = theStudy->GetVariableNames(); + for(int iVar = 0; iVar < aVariables.size(); iVar++ ) { + AddRow(QString(aVariables[iVar].c_str()), + Variable2String(aVariables[iVar],theStudy)); + } + + //Add empty row + AddEmptyRow(); + isProcessItemChangedSignal = true; + + ResetMaps(); + + myStudy = theStudy; +} + +//============================================================================ +/*! Function : Variable2String + * Purpose : Convert variable values to QString + */ +//============================================================================ +QString NoteBook_Table::Variable2String(const string& theVarName, + _PTR(Study) theStudy) +{ + QString aResult; + if( theStudy->IsReal(theVarName) ) + aResult = QString::number(theStudy->GetReal(theVarName)); + else if( theStudy->IsInteger(theVarName) ) + aResult = QString::number(theStudy->GetInteger(theVarName)); + else if( theStudy->IsBoolean(theVarName) ) + aResult = theStudy->GetBoolean(theVarName) ? QString("True") : QString("False"); + + return aResult; +} + +//============================================================================ +/*! Function : IsValid + * Purpose : Check validity of the table data + */ +//============================================================================ +bool NoteBook_Table::IsValid() const +{ + int aNumRows = myRows.count(); + if( aNumRows == 0 ) + return true; + + bool aLastRowIsEmpty = myRows[ aNumRows - 1 ]->GetName().isEmpty() && + myRows[ aNumRows - 1 ]->GetValue().isEmpty(); + + for( int i = 0, n = aLastRowIsEmpty ? aNumRows - 1 : aNumRows; i < n; i++ ) + if( !myRows[i]->CheckName() || !IsUniqueName( myRows[i] ) || !myRows[i]->CheckValue() ) + return false; + + return true; +} + +//============================================================================ +/*! Function : RenamberRowItems + * Purpose : renumber row items + */ +//============================================================================ +void NoteBook_Table::RenamberRowItems(){ + for(int i=0; iGetHeaderItem()->setText(QString::number(i+1)); + } +} + +//============================================================================ +/*! Function : AddRow + * Purpose : Add a row into the table + */ +//============================================================================ +void NoteBook_Table::AddRow(const QString& theName, const QString& theValue) +{ + int anIndex = getUniqueIndex(); + NoteBook_TableRow* aRow = new NoteBook_TableRow(anIndex, this); + aRow->SetName(theName); + aRow->SetValue(theValue); + aRow->AddToTable(this); + myRows.append(aRow); + + myVariableMap.insert( anIndex, NoteBoox_Variable( theName, theValue ) ); +} + +//============================================================================ +/*! Function : AddEmptyRow + * Purpose : Add an empty row into the end of the table + */ +//============================================================================ +void NoteBook_Table::AddEmptyRow() +{ + isProcessItemChangedSignal = false; + AddRow(); + isProcessItemChangedSignal = true; +} + +//============================================================================ +/*! Function : GetRowByItem + * Purpose : + */ +//============================================================================ +NoteBook_TableRow* NoteBook_Table::GetRowByItem(const QTableWidgetItem* theItem) const +{ + int aCurrentRow = row(theItem); + + if( (myRows.size() <= aCurrentRow ) && (aCurrentRow < 0)) + return NULL; + else + return myRows.at(aCurrentRow); +} + +//============================================================================ +/*! Function : IsLastRow + * Purpose : Return true if theRow is last row in the table + */ +//============================================================================ +bool NoteBook_Table::IsLastRow(const NoteBook_TableRow* theRow) const +{ + return (myRows.last() == theRow); +} + +//============================================================================ +/*! Function : onItemChanged + * Purpose : [slot] called then table item changed + */ +//============================================================================ +void NoteBook_Table::onItemChanged(QTableWidgetItem* theItem) +{ + if(isProcessItemChangedSignal) { + bool isModified = true; + NoteBook_TableRow* aRow = GetRowByItem(theItem); + if(aRow) { + int aCurrentColumn = column(theItem); + bool IsCorrect = true, IsVariableComplited = false; + QString aMsg; + + if(aCurrentColumn == NAME_COLUMN) { + int anIndex = aRow->GetIndex(); + if( myVariableMap.contains( anIndex ) ) + { + const NoteBoox_Variable& aVariable = myVariableMap[ anIndex ]; + if( !aVariable.Name.isEmpty() && myStudy->IsVariableUsed( string( aVariable.Name.toLatin1().constData() ) ) ) + { + if( QMessageBox::warning( parentWidget(), tr( "WARNING" ), + tr( "RENAME_VARIABLE_IS_USED" ).arg( aVariable.Name ), + QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) + { + bool isBlocked = blockSignals( true ); + aRow->SetName( aVariable.Name ); + blockSignals( isBlocked ); + return; + } + } + } + } + + //Case then varible name changed. + if(aCurrentColumn == NAME_COLUMN) { + if(!aRow->CheckName()) { + IsCorrect = false; + aMsg = tr( "VARNAME_INCORRECT" ).arg(aRow->GetName()); + } + else if(!IsUniqueName(aRow)) { + IsCorrect = false; + aMsg = tr( "VARNAME_EXISTS" ).arg(aRow->GetName()); + } + else + IsVariableComplited = aRow->CheckValue(); + } + + //Case then varible value changed. + else if(aCurrentColumn == VALUE_COLUMN){ + if(!aRow->CheckValue()) { + IsCorrect = false; + aMsg = tr( "VARVALUE_INCORRECT" ).arg(aRow->GetName()); + } + else + IsVariableComplited = aRow->CheckName() && IsUniqueName(aRow); + } + + if(!IsCorrect && !aMsg.isEmpty()) + SUIT_MessageBox::warning( parentWidget(), tr( "WARNING" ), aMsg ); + + bool isBlocked = blockSignals( true ); + theItem->setForeground( QBrush( IsCorrect ? Qt::black : Qt::red ) ); + blockSignals( isBlocked ); + + int anIndex = aRow->GetIndex(); + if( myVariableMap.contains( anIndex ) ) + { + NoteBoox_Variable& aVariable = myVariableMap[ anIndex ]; + if( aVariable.Name.compare( aRow->GetName() ) != 0 || + aVariable.Value.compare( aRow->GetValue() ) != 0 ) + { + aVariable.Name = aRow->GetName(); + aVariable.Value = aRow->GetValue(); + } + else + isModified = false; + } + + if(IsCorrect && IsVariableComplited && IsLastRow(aRow)) + AddEmptyRow(); + } + + if( !myIsModified ) + myIsModified = isModified; + } +} + +//============================================================================ +/*! Function : IsUniqueName + * Purpose : Return true if theName is unique name of the Variable + */ +//============================================================================ +bool NoteBook_Table::IsUniqueName(const NoteBook_TableRow* theRow) const +{ + for(int i=0; iGetName().compare(theRow->GetName()) == 0) + return false; + } + return true; +} + +//============================================================================ +/*! Function : RemoveSelected + * Purpose : Remove selected rows in the table + */ +//============================================================================ +void NoteBook_Table::RemoveSelected() +{ + isProcessItemChangedSignal = false; + QList aSelectedItems = selectedItems(); + if( !(aSelectedItems.size() > 0)) { + isProcessItemChangedSignal = true; + return; + } + bool removedFromStudy = false; + for(int i=0; i < aSelectedItems.size(); i++ ) { + NoteBook_TableRow* aRow = GetRowByItem(aSelectedItems[i]); + if(aRow) { + if(IsLastRow(aRow)) { + aRow->SetName(QString()); + aRow->SetValue(QString()); + } + else { + int nRow = row(aSelectedItems[i]); + + if( myStudy->IsVariableUsed( string( aRow->GetName().toLatin1().constData() ) ) ) + { + if( QMessageBox::warning( parentWidget(), tr( "WARNING" ), + tr( "REMOVE_VARIABLE_IS_USED" ).arg( aRow->GetName() ), + QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) + { + isProcessItemChangedSignal = true; + return; + } + } + + int index = aRow->GetIndex(); + QString aVarName = aRow->GetName(); + myRemovedRows.append( index ); + if( myVariableMap.contains( index ) ) + myVariableMap.remove( index ); + removeRow(nRow); + myRows.removeAt(nRow); + if(myStudy->IsVariable(aVarName.toLatin1().constData())) + removedFromStudy = true; + } + } + } + if(removedFromStudy) + myIsModified = true; + RenamberRowItems(); + isProcessItemChangedSignal = true; +} + +//============================================================================ +/*! Function : SetProcessItemChangedSignalFlag + * Purpose : + */ +//============================================================================ +void NoteBook_Table::SetProcessItemChangedSignalFlag(const bool enable) +{ + isProcessItemChangedSignal = enable; +} + +//============================================================================ +/*! Function : GetProcessItemChangedSignalFlag + * Purpose : + */ +//============================================================================ +bool NoteBook_Table::GetProcessItemChangedSignalFlag() const +{ + return isProcessItemChangedSignal; +} + +//============================================================================ +/*! Function : GetRows + * Purpose : + */ +//============================================================================ +QList NoteBook_Table::GetRows() const +{ + return myRows; +} + +//============================================================================ +/*! Function : ResetMaps + * Purpose : Reset variable maps + */ +//============================================================================ +void NoteBook_Table::ResetMaps() +{ + myIsModified = false; + myVariableMapRef = myVariableMap; + myRemovedRows.clear(); +} + +/////////////////////////////////////////////////////////////////////////// +// SalomeApp_NoteBookDlg class // +/////////////////////////////////////////////////////////////////////////// +//============================================================================ +/*! Function : SalomeApp_NoteBookDlg + * Purpose : Constructor + */ +//============================================================================ +SalomeApp_NoteBookDlg::SalomeApp_NoteBookDlg(QWidget * parent, _PTR(Study) theStudy): + QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint), + myStudy(theStudy) +{ + setModal(false); + setObjectName("SalomeApp_NoteBookDlg"); + setWindowTitle(tr("NOTEBOOK_TITLE")); + QGridLayout* aLayout = new QGridLayout(this); + aLayout->setMargin(DEFAULT_MARGIN); + aLayout->setSpacing(DEFAULT_SPACING); + + //Table + myTable = new NoteBook_Table(this); + aLayout->addWidget(myTable, 0, 0, 1, 3); + + //Buttons + myRemoveButton = new QPushButton(tr("BUT_REMOVE")); + aLayout->addWidget(myRemoveButton, 1, 0, 1, 1); + + QSpacerItem* spacer = + new QSpacerItem(DEFAULT_SPACING, 5 , QSizePolicy::Expanding, QSizePolicy::Minimum); + aLayout->addItem(spacer, 1, 1, 2, 1); + + myUpdateStudyBtn = new QPushButton(tr("BUT_UPDATE_STUDY")); + aLayout->addWidget(myUpdateStudyBtn, 1, 2, 1, 1); + + QGroupBox* groupBox = new QGroupBox(this); + + QGridLayout* aLayout1 = new QGridLayout(groupBox); + + aLayout1->setMargin(DEFAULT_MARGIN); + aLayout1->setSpacing(DEFAULT_SPACING); + + myOkBtn = new QPushButton(tr("BUT_APPLY_AND_CLOSE")); + aLayout1->addWidget(myOkBtn, 0, 0, 1, 1); + + myApplyBtn = new QPushButton(tr("BUT_APPLY")); + aLayout1->addWidget(myApplyBtn, 0, 1, 1, 1); + + QSpacerItem* spacer1 = + new QSpacerItem(DEFAULT_SPACING, 5, QSizePolicy::Expanding, QSizePolicy::Minimum); + aLayout1->addItem(spacer1, 0, 2, 1, 1); + + myCancelBtn = new QPushButton(tr("BUT_CLOSE")); + aLayout1->addWidget(myCancelBtn, 0, 3, 1, 1); + + myHelpBtn = new QPushButton(tr("BUT_HELP")); + aLayout1->addWidget(myHelpBtn, 0, 4, 1, 1); + + aLayout->addWidget(groupBox, 2, 0, 1, 3); + + QWidgetList aWidgetList; + aWidgetList.append( myTable ); + aWidgetList.append( myOkBtn ); + aWidgetList.append( myApplyBtn ); + aWidgetList.append( myCancelBtn ); + aWidgetList.append( myHelpBtn ); + aWidgetList.append( myUpdateStudyBtn ); + aWidgetList.append( myRemoveButton ); + Qtx::setTabOrder( aWidgetList ); + + connect( myOkBtn, SIGNAL(clicked()), this, SLOT(onOK()) ); + connect( myApplyBtn, SIGNAL(clicked()), this, SLOT(onApply()) ); + connect( myCancelBtn, SIGNAL(clicked()), this, SLOT(onCancel()) ); + connect( myUpdateStudyBtn, SIGNAL(clicked()), this, SLOT(onUpdateStudy()) ); + connect( myRemoveButton, SIGNAL(clicked()), this, SLOT(onRemove())); + connect( myHelpBtn, SIGNAL(clicked()), this, SLOT(onHelp())); + + myTable->Init(myStudy); +} + +//============================================================================ +/*! Function : ~SalomeApp_NoteBookDlg + * Purpose : Destructor + */ +//============================================================================ +SalomeApp_NoteBookDlg::~SalomeApp_NoteBookDlg(){} + + +//============================================================================ +/*! Function : Init() + * Purpose : init variable table + */ +//============================================================================ +void SalomeApp_NoteBookDlg::Init(_PTR(Study) theStudy){ + if(myStudy!= theStudy) + myStudy = theStudy; + myTable->Init(myStudy); +} + + +//============================================================================ +/*! Function : onOK + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onOK() +{ + onApply(); + if( myTable->IsValid() ) + accept(); +} + +//============================================================================ +/*! Function : onHelp + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onHelp() +{ + QString aHelpFileName("using_notebook.html"); + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule("GUI",aHelpFileName); + else { + QString platform; +#ifdef WIN32 + platform = "winapplication"; +#else + platform = "application"; +#endif + SUIT_MessageBox::warning(this, tr("WRN_WARNING"), + tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", + platform)). + arg(aHelpFileName)); + } + +} +//============================================================================ +/*! Function : onApply + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onApply() +{ + if( !myTable->IsValid() ) + { + SUIT_MessageBox::warning( this, tr( "WARNING" ), tr( "INCORRECT_DATA" ) ); + return; + } + + double aDVal; + int anIVal; + bool aBVal; + + const QList& aRemovedRows = myTable->GetRemovedRows(); + const VariableMap& aVariableMap = myTable->GetVariableMap(); + const VariableMap& aVariableMapRef = myTable->GetVariableMapRef(); + + for( QListIterator anIter( aRemovedRows ); anIter.hasNext(); ) + { + int anIndex = anIter.next(); + if( aVariableMapRef.contains( anIndex ) ) + { + QString aRemovedVariable = aVariableMapRef[ anIndex ].Name; + myStudy->RemoveVariable( string( aRemovedVariable.toLatin1().constData() ) ); + } + } + + VariableMap::const_iterator it = aVariableMap.constBegin(), itEnd = aVariableMap.constEnd(); + for( ; it != itEnd; ++it ) + { + int anIndex = it.key(); + const NoteBoox_Variable& aVariable = it.value(); + QString aName = aVariable.Name; + QString aValue = aVariable.Value; + + if( !aName.isEmpty() && !aValue.isEmpty() ) + { + if( aVariableMapRef.contains( anIndex ) ) + { + const NoteBoox_Variable& aVariableRef = aVariableMapRef[ anIndex ]; + QString aNameRef = aVariableRef.Name; + QString aValueRef = aVariableRef.Value; + + if( !aNameRef.isEmpty() && !aValueRef.isEmpty() && aNameRef != aName ) + { + myStudy->RenameVariable( string( aNameRef.toLatin1().constData() ), + string( aName.toLatin1().constData() ) ); + } + } + + if( NoteBook_TableRow::IsIntegerValue(aValue,&anIVal) ) + myStudy->SetInteger(string(aName.toLatin1().constData()),anIVal); + + else if( NoteBook_TableRow::IsRealValue(aValue,&aDVal) ) + myStudy->SetReal(string(aName.toLatin1().constData()),aDVal); + + else if( NoteBook_TableRow::IsBooleanValue(aValue,&aBVal) ) + myStudy->SetBoolean(string(aName.toLatin1().constData()),aBVal); + } + } + myTable->ResetMaps(); + + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if(app) + app->updateActions(); + +} + +//============================================================================ +/*! Function : onCancel + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onCancel() +{ + if( myTable->IsModified() ) + { + int answer = QMessageBox::question( this, tr( "CLOSE_CAPTION" ), tr( "CLOSE_DESCRIPTION" ), + QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel ); + switch( answer ) + { + case QMessageBox::Yes : onOK(); return; + case QMessageBox::No : break; + case QMessageBox::Cancel : return; + default : break; + } + } + reject(); +} + +//============================================================================ +/*! Function : onRemove + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onRemove() +{ + myTable->RemoveSelected(); +} + +//============================================================================ +/*! Function : onUpdateStudy + * Purpose : [slot] + */ +//============================================================================ +void SalomeApp_NoteBookDlg::onUpdateStudy() +{ + onApply(); + if( !myTable->IsValid() ) + return; + + QApplication::setOverrideCursor( Qt::WaitCursor ); + + if( !updateStudy() ) + SUIT_MessageBox::warning( this, tr( "ERROR" ), tr( "ERR_UPDATE_STUDY_FAILED" ) ); + + QApplication::restoreOverrideCursor(); +} + +//============================================================================ +/*! Function : updateStudy + * Purpose : + */ +//============================================================================ +bool SalomeApp_NoteBookDlg::updateStudy() +{ + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if( !app ) + return false; + + SalomeApp_Study* study = dynamic_cast( app->activeStudy() ); + if( !study ) + return false; + + bool isStudySaved = study->isSaved(); + QString aStudyName = study->studyName(); + + _PTR(Study) studyDS = study->studyDS(); + + // get unique temporary directory name + QString aTmpDir = QString::fromStdString( SALOMEDS_Tool::GetTmpDir() ); + if( aTmpDir.isEmpty() ) + return false; + + if( aTmpDir.right( 1 ).compare( QDir::separator() ) == 0 ) + aTmpDir.remove( aTmpDir.length() - 1, 1 ); + + // dump study to the temporary directory + QString aFileName( "notebook" ); + bool toPublish = true; + bool toSaveGUI = true; + + int savePoint; + _PTR(AttributeParameter) ap; + _PTR(IParameters) ip = ClientFactory::getIParameters(ap); + if(ip->isDumpPython(studyDS)) ip->setDumpPython(studyDS); //Unset DumpPython flag. + if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method + ip->setDumpPython(studyDS); + savePoint = SalomeApp_VisualState( app ).storeState(); //SRN: create a temporary save point + } + bool ok = studyDS->DumpStudy( aTmpDir.toStdString(), aFileName.toStdString(), toPublish ); + if ( toSaveGUI ) + study->removeSavePoint(savePoint); //SRN: remove the created temporary save point. + + if( !ok ) + return false; + + // clear a study (delete all objects) + clearStudy(); + + // get active application + app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + + // load study from the temporary directory + QString command = QString( "execfile(\"%1\")" ).arg( aTmpDir + QDir::separator() + aFileName + ".py" ); + + PyConsole_Console* pyConsole = app->pythonConsole(); + if ( pyConsole ) + pyConsole->execAndWait( command ); + + // remove temporary directory + QDir aDir( aTmpDir ); + QStringList aFiles = aDir.entryList( QStringList( "*.py*" ) ); + for( QStringList::iterator it = aFiles.begin(), itEnd = aFiles.end(); it != itEnd; ++it ) + ok = aDir.remove( *it ) && ok; + if( ok ) + ok = aDir.rmdir( aTmpDir ); + + if( SalomeApp_Study* newStudy = dynamic_cast( app->activeStudy() ) ) + { + myStudy = newStudy->studyDS(); + myTable->Init(myStudy); + if(isStudySaved) { + newStudy->markAsSavedIn(aStudyName); + } + } + else + ok = false; + + return ok; +} + +//============================================================================ +/*! Function : clearStudy + * Purpose : + */ +//============================================================================ +void SalomeApp_NoteBookDlg::clearStudy() +{ + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if( !app ) + return; + + QList aList = SUIT_Session::session()->applications(); + int anIndex = aList.indexOf( app ); + + //Store position and size of the this dialog + int aW = width(); + int aH = height(); + int aX = x(); + int aY = y(); + + // Disconnect dialog from application desktop in case if: + // 1) Application is not the first application in the session + // 2) Application is the first application in session but not the only. + bool changeDesktop = ((anIndex > 0) || (anIndex == 0 && aList.count() > 1)); + + if( changeDesktop ) + setParent( 0 ); + + app->onCloseDoc( false ); + + if( anIndex > 0 && anIndex < aList.count() ) + app = dynamic_cast( aList[ anIndex - 1 ] ); + else if(anIndex == 0 && aList.count() > 1) + app = dynamic_cast( aList[ 1 ] ); + + if( !app ) + return; + + app->onNewDoc(); + + app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if( changeDesktop && app ) { + setParent( app->desktop(), Qt::Dialog ); + app->setNoteBook(this); + } + //Set position and size of the this dialog + resize( aW, aH ); + move( aX, aY ); + show(); +} diff --git a/src/SalomeApp/SalomeApp_NoteBookDlg.h b/src/SalomeApp/SalomeApp_NoteBookDlg.h new file mode 100644 index 000000000..431b50ced --- /dev/null +++ b/src/SalomeApp/SalomeApp_NoteBookDlg.h @@ -0,0 +1,172 @@ +// Copyright (C) 2008 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SalomeApp_NoteBookDlg.h +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. +// Module : GUI + +#ifndef SALOMEAPP_NOTEBOOKDLG_H +#define SALOMEAPP_NOTEBOOKDLG_H + +#include "SalomeApp.h" + +#include "SALOMEDSClient_ClientFactory.hxx" +#include CORBA_SERVER_HEADER(SALOMEDS) + +#include +#include +#include + +class QWidget; +class QPushButton; +class QTableWidgetItem; + +struct NoteBoox_Variable +{ + NoteBoox_Variable() {} + NoteBoox_Variable( const QString& theName, const QString& theValue ) + { + Name = theName; + Value = theValue; + } + QString Name; + QString Value; +}; + +typedef QMap< int, NoteBoox_Variable > VariableMap; + +class SALOMEAPP_EXPORT NoteBook_TableRow : public QWidget +{ + public: + NoteBook_TableRow(int, QWidget* parent=0); + virtual ~NoteBook_TableRow(); + + int GetIndex() const { return myIndex; } + + void AddToTable(QTableWidget *theTable); + + void SetName(const QString theName); + void SetValue(const QString theValue); + + QString GetValue() const; + QString GetName() const; + + bool CheckName(); + bool CheckValue(); + + QTableWidgetItem* GetVariableItem(); + QTableWidgetItem* GetNameItem(); + QTableWidgetItem* GetHeaderItem(); + + static bool IsRealValue(const QString theValue, double* theResult = 0); + static bool IsIntegerValue(const QString theValue, int* theResult = 0); + static bool IsBooleanValue(const QString theValue, bool* theResult = 0); + + private: + int myIndex; + QTableWidgetItem* myRowHeader; + QTableWidgetItem* myVariableName; + QTableWidgetItem* myVariableValue; +}; + +class SALOMEAPP_EXPORT NoteBook_Table : public QTableWidget +{ + Q_OBJECT + public: + NoteBook_Table(QWidget * parent = 0); + virtual ~NoteBook_Table(); + + void Init(_PTR(Study) theStudy); + static QString Variable2String(const std::string& theVarName, + _PTR(Study) theStudy); + + bool IsValid() const; + + void AddRow( const QString& theName = QString::null, const QString& theValue = QString::null ); + void AddEmptyRow(); + NoteBook_TableRow* GetRowByItem(const QTableWidgetItem* theItem) const; + bool IsLastRow(const NoteBook_TableRow* aRow) const; + + void RemoveSelected(); + + void SetProcessItemChangedSignalFlag(const bool enable); + bool GetProcessItemChangedSignalFlag()const; + + bool IsUniqueName(const NoteBook_TableRow* theRow) const; + QList GetRows() const; + + const bool IsModified() const { return myIsModified; } + const QList& GetRemovedRows() const { return myRemovedRows; } + const VariableMap& GetVariableMap() const { return myVariableMap; } + const VariableMap& GetVariableMapRef() const { return myVariableMapRef; } + void RenamberRowItems(); + + void ResetMaps(); + + public slots: + void onItemChanged(QTableWidgetItem* theItem); + + private: + int getUniqueIndex() const; + + private: + bool isProcessItemChangedSignal; + QList myRows; + + bool myIsModified; + QList myRemovedRows; + VariableMap myVariableMapRef; + VariableMap myVariableMap; + + _PTR(Study) myStudy; +}; + +class SALOMEAPP_EXPORT SalomeApp_NoteBookDlg : public QDialog +{ + Q_OBJECT + public: + SalomeApp_NoteBookDlg(QWidget * parent , _PTR(Study) theStudy); + virtual ~SalomeApp_NoteBookDlg(); + + void Init(_PTR(Study) theStudy); + + public slots: + void onOK(); + void onApply(); + void onCancel(); + void onRemove(); + void onUpdateStudy(); + void onHelp(); + + protected: + bool updateStudy(); + void clearStudy(); + + private: + NoteBook_Table* myTable; + QPushButton* myRemoveButton; + QPushButton* myUpdateStudyBtn; + QPushButton* myOkBtn; + QPushButton* myApplyBtn; + QPushButton* myCancelBtn; + QPushButton* myHelpBtn; + + _PTR(Study) myStudy; +}; + +#endif //SALOMEAPP_NOTEBOOKDLG_H -- 2.39.2

_Vnz58}j`-1H-p(2n+(i@MQS?`!|ES zx;=;+j;t9VfLO2?s3j(*3Dyh@GoVI@D?x^T`SOK;2)s#xwr&D>UEJd0|XE@ z1Al$^@Qag!gA?p!NcjC^`1I*D!^e*=zzTrof(`uo^&N=&7g;kv0AVxm!p)nP>@QyI zX7KP>0Cd@Bpld$>4SWSQ@aolD3??S}49d!`4A-yk1*t!dtQjDHFbs5aa|0V@W77-F zdJn*cefjbZY~bh5AVYyp`ui6w_wwaUkd`&b`T+t6ZlIr^-+x##0LI+pFJF3c^!0s# zhP?qA1j4U@?6*KeAl|)m=P)pg|7HPG#V=$70RjjmmBTPF(TW1`G$keD|2{qy|2;iR z|J&Lo{r~WR;lH7w;eQ?;eo(@0$CmW~0tj!u1Z6QGzQNBg3e1Mm|F2(X_^+$03o^_G zmmYusVjz^+p$5wVu`v)3EF1s=2qWuJ3IGC#iGj)hAb_ZDAV7ct0CqnRZB|4ZssI20 M07*qoM6N<$f-H}K!2kdN literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image91.png b/doc/salome/gui/images/image91.png new file mode 100755 index 0000000000000000000000000000000000000000..66f81e60471b7b587c37166a4e206b45f74e7fc2 GIT binary patch literal 918 zcmV;H18Mw;P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3`s;mRCwBA`2YVu0}KO!sHi9>h~bSaP6`GHAOZXQ009Iu ztVK?a_y6WCKL3CH$@>5IfA;^Iw`2aBnTdlW&7exTp@zi+u{AD30Ro7Lk&#hUNQk5Q z?D;STpjR1~nHj+nii&(-KGfwPzyqZXfLH~Ij{*P!hzW=@vvYJAfQEtvwrzdL@b~Y3 zhTx#>3=Q?CrT~SeL)CtP(l4O+3pN7*0*D2Ojg5^(!JOKflMHLu++jF%N|j;rru$QX z!I2B}0Zi>zGy}h4GY}wvKrZ|XauEp3n0^K5WhREsj&mSx69e%89{T_R1ajfcn>Rmz zIq%;60AXz)^A6B;zi?=K-}sfC-?tzTH62r z+1dZM`}+RpVPyp=a)o&VAb=Q=3jlDg;ox}n@#jy5zyJSR0p*SZ#Xz=e0L9NFXlO8m zC@V8qN=Sg!-~8}_;lk_J40EqvXW0Gtu^UimH$VWPmo_{g8)rH={0C|R3ET$aE+9^W z#_sAO0|T(@KsZfX8>D6hvI_wMh!MSr0=mcm=$i9OU0oSe`1u*u-@C_f=i^5PHYO$p zdueHgKqVyxW?=4l`t>V=_OfLRAAkK40Gja;rXL`H7_pRjAVWa`o#`Ya<56K`#Na9` ziz0vj(z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwBA{Qv(y12q9a0I`6G?+lD6rgAd;XCy{5 zHhlmA#Dc^@mIHB63}s|w3&>x^7VEp$V z!_S{T8NPo0%wTSB4^{^=10aA{2t*_sGYc!&H9+&gF8uxbH^cX@Ux5bxVEFUvH&_hp zNhkmaASMC^p1OMBJi~90i+=rL`10u!!-sco89u&$$ME^%M~1IozA)UpbP22urU4*; z81W@+U>Ndq^YVU}wt5|dps+B*k8j@@e*E~(@bkwHhQELQGJN^`k)bg^7i72+(46}q zJpciO*M(YIT7fc>k_-*mnGENS9|s!*!oPv8y?^^ALw|iO$gn1uVITkyKn&QD3J3!Y zt1#5l`yc4!^j}9?`#%#C(;-P2+5cJwhW{mHWkKFL1H{Sb`Tzn5YousvYge$bu(Yd+ zi!(g^@BtL?iGTn8T>uOM_2*9>%K?=<1!}&AO)o$IVT2*juu`C5U1~tXo&y8^?Uyf= zSFc{}AhvJ-2p}dj!}3{~naMT`1ONgE>_SkfVWO=i2{i0E$eXW$2^NUUfQEGwYY@l` zP;LPTAh-*gnwp;TadI-eff!amiebp56hHvMT?i_^fL=}k3i1H)bfAI1NHGa!20#G8 u4Wv>5%K#8S$g%vNP}zvfo5&o100RIgKz|e1YHVKs0000aa literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image97.png b/doc/salome/gui/images/image97.png new file mode 100755 index 0000000000000000000000000000000000000000..450dc56c6ce722c040b4e5b77459207e8256cd58 GIT binary patch literal 912 zcmV;B18@9^P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<21!IgRCwBA`2YVu0|yT@j4)mLY4&S1Wi z-OcbHM57sG48)m^9-he_0f7usvT_X1pFT0(yLC(8&W#(k0Oh^{@n4u?fB<44!Y5g^ z-MvYH5s?faC;S8YMon9X!N%2{!P42~V^d*1!@s|O;pPAY5EB8zLY%$4ll;RYzy^Ww zzyAz>|Nmq7`|lrvqn8hZdq5CKT`^1pKmZXkFx1h@8)yK~5THSSfQEqa-+v50fBt0n z`uQ`1xxGC|T`bJU00BhE%bd(CtYFsw%>%pe_wU~f-@kqZ8u)|Z&#&KLF(43ts^eU0F)F)_Iu>vs%)X>*Rt^|Sq00D$yAS*L-7tFAGPoM68`t<2NpzvEDJ`2PkgPEZQ zf?W3=>e4ST{Qv>Pgyb@bC5sj@fV}w<7@K#WJlO{{>@HC171XfPKztRHl%RYNeIJNF z01K4gATvM(3qSzDi!W_$?G#}ip4rTdj11l(AtV=F=_OOZ1q?s{!3|_&WMorRR4o7X z>z4u0Wlx|ky9mWEfcQ5q!$2+r83v*O0tneaP`Ky0YCsD8wiRZ mF(6igmT$M9kwFpw2rvMsC6+#;$I7?>0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwBA{Qv(y12q9a0I`6G?+lD6rgAd;XCy{5 zHhlmA#Dc^@mIHB63}s|w3&>x^7VEp$V z!_S{T8NPo0%wTSB4^{^=10aA{2t*_sGYc!&H9+&gF8uxbH^cX@Ux5bxVEFUvH&_hp zNhkmaASMC^p1OMBJi~90i+=rL`10u!!-sco89u&$$ME^%M~1IozA)UpbP22urU4*; z81W@+U>Ndq^YVU}wt5|dps+B*k8j@@e*E~(@bkwHhQELQGJN^`k)bg^7i72+(46}q zJpciO*M(YIT7fc>k_-*mnGENS9|s!*!oPv8y?^^ALw|iO$gn1uVITkyKn&QD3J3!Y zt1#5l`yc4!^j}9?`#%#C(;-P2+5cJwhW{mHWkKFL1H{Sb`Tzn5YousvYge$bu(Yd+ zi!(g^@BtL?iGTn8T>uOM_2*9>%K?=<1!}&AO)o$IVT2*juu`C5U1~tXo&y8^?Uyf= zSFc{}AhvJ-2p}dj!}3{~naMT`1ONgE>_SkfVWO=i2{i0E$eXW$2^NUUfQEGwYY@l` zP;LPTAh-*gnwp;TadI-eff!amiebp56hHvMT?i_^fL=}k3i1H)bfAI1NHGa!20#G8 u4Wv>5%K#8S$g%vNP}zvfo5&o100RIgKz|e1YHVKs0000aa literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image99.png b/doc/salome/gui/images/image99.png new file mode 100755 index 0000000000000000000000000000000000000000..ec56cacc779342a978f183ecf747860c8b6dafb4 GIT binary patch literal 982 zcmV;{11bE8P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZb!otG-18H_3W&!c>DFz52f`;Yh z=KlYG@Zf(vJw1@2;y}!e&rpB>!e<*(Vq)UoNnv3OZ?0TnIIE=v5_imOsnQ(>_Q@}D9Q|HpzmfY=u#@9*!A5&HlE#0WDiKR^HPSD@Ek zzkbaCa@oa;7a4y4{_O{p(+6UCAm#(&Px|`$DQaqJ3~X#{4Da5(V|e)RA;Yz6*FdiR z0t!=r00NsF6BF}yLQoI`!>?Zq4Bx&nFns>Zz!(z)vWNqS-$A_va>-9lVB{=URRycP zpsdWG&(6-kdhOZ^SVRE?5Q~nE&fmqMp$spM9AUWs@+E@^Q1mI#KqwFe;@8la1=_~I z2J*$jJ9ilVe*DOA?ZXF#7k~dU%-7RnNW63j9QyzP#B$}z6$wUv{}&HSOBrrFdBPyW z&(HAr=TDe{d{D#gLnA=o6)=Lf|NhPJ2I#_XKyN<>8oU@7aj@722p~`x$^o%15O2W} zQ4K(R5QwirT?%sXD=g|(05K?CodF0SP#A)o^9gFhL?B)Zjj^{zMn(Vgg6j zxpU_jK79D#4wN$jVr3vsfvN|&{yoSXfB<5F#?CWnLd}P!GmwE_`1tr3R)vHxJUVoU z;RMiI;U7Ty82F(McnHLu(3}E_l-nS400M{wntfhCo&E)yX#avZ-#{@A45MF<9x;Hz z4lSY{BV~fOP)EH02p|@y4KPE$Kyv_tjEu~^`}glN965WI;l_&>3~!m4VFpeGVn3)0 zVaeeeEFA&_5G?D#4E+fW52hzio+tt7dm^Ah;l~e#JMZ4X4D5u`pP`QU2lWw%{s$01 zxUwNTH0uR`vRkc+3M|{L0pd2OxFS>?3IGToW*i2Bk`pV``xg$qd*=yF8X#vr0J$9M zy07T20tg^xJOwPwRUpGpK{Y>y#^wX4;lH73-~b@N0A_|Q{Wj4Xb^rhX07*qoM6N<$ Ef)-GsSpWb4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/installtypepage.png b/doc/salome/gui/images/installtypepage.png new file mode 100755 index 0000000000000000000000000000000000000000..8359d54c05a592161162802a226c919ed85c0c06 GIT binary patch literal 18643 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2d_clone.png b/doc/salome/gui/images/plot2d_clone.png new file mode 100755 index 0000000000000000000000000000000000000000..441482d205ef6e04cff83702e3dffa48cad36280 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!-v3#%^mv{$y}th4;LG>j22D2@7>_Us*Zlq_=-C#s zYEDYRj;g7RiPv=64t;PfC~RP8lGf1Cai7$<`5yCC?^YuN6BCBHJJ|L31RM&OfB!Z; z`E67C@e~Vbg@%X?o|A;imJ`U!$JxT8>BqEDi*Z^1rtpt-1)%5 zD(=8wD7g5->O#efZA>fzj?8nl(kG;7I4}sB6vS7v9qyOEFS+gNap6=2pu&m5VLxKH z1srsaNHKl3VrN&s6OglxjYB~!DW-Xy;PgZV2B6%HP5c}Z>emc9v{xiu?a;SjWa?m@ z^iIK*pQEA6NPySq&C}-FD((6X3=h8;ZQR(!$H3Il*?5Wp=x7d6_a#gX3`s1Zj8|9~ b7}*#co=2>4HtstE3}yyTS3j3^P6z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;j7da6RCwBA{Qv(y12q9a0I`4w0|SHq|Ni}B`2G7g z!}sss8NPh^!tnO(TSjsW1PCA|5b^EXH->$Zk_?9=Bp6Ns@rMr|K*GvE%>7(j8^sGR zjg3+GFZA?K_y7R}Ht^@qpA7$jF8dEO`2W|h41fRr1qplH)X?}MdG#vKeND~(FvG>q zp5=J~v4r~>ke0Y~iRX!y7MKsx1Q0+BpfD5@6Z`+t-2DFwUETkWAd(>555(3$tPjNQ zP(#IG{KpV=aQ;K6p#TBI2r`hLpZ`C|+kgK2L3aHFAl?DQUx1j0$RKUl?&jS!Z4A6AQ4e~ZC zD=RGg^kK0~YO(FdyWPpa-S5gfG2q3VRL5UjVtbbtV z!IPDN_snZY7@3(F7@1iaHYX}E1}%O1pAqVXbp`P1Q6JT z!otG;-KJduyYSD?Zw#B0RY3+;pvCeRBsMlaIGh0j2y7rDBcnbG3(EzhWOD$BFF*}s zAR=}pV95p`fZ(wVGz{b-8zkFbAjRSfBp2c0gUta5Ab2c8a|JAiltcL>$1*?wF(4IR z{~tf}MNT%{OzWe7gEs@1r*@tZ zKjrc3k>fLo~i)U3Sq uv~vT)qN+@00f!KC0fmMYc?u2#VrGdB7>)^pUXO@geCxyM1#Bl literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2d_logarithmic_horizontal.png b/doc/salome/gui/images/plot2d_logarithmic_horizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..fb62cd77242c43e92c8dd638560f0ce535fae6fb GIT binary patch literal 721 zcmV;?0xtcDP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;M@d9MRCwBA{Qv(y12q9a05LI882|*JLyk=VfI%pT z{(u`htAnVZSZD$%(&gYax0rd02#Dy-?!JD_45|v5iHLx^LsemB>j)sQDKlpTfXrr) zS4d}g_+UE2|NsAhd_+(vDCRIcxIYDjfA4M|gOYL)!|hv54615%3_yo5^!D~D0|XG* z!2kdMAld#K$OpOZADXLvqVaz~ee(lZ*aIMdpa%X0y5~P!BZQA?;9m>_e`2#p1t5UH zk@D|9&{aT}-MQTXRPYO|=-*!izIme_jb8(H*_F#h3}3(gVmNpp18yQf0D%nz8K$CI z1`LZzuvhS54b3L7VZVO;WYE#=V=y(F42+!La03AX2yCFLS{2aN28J8gYk(SBz+s9F zYiW1EQ-Qw01coDrGZ}X8N@eiyoC`M)Ab?0phgYu@5mW;ZKvYlI009I~%@A)v67!!w zpoIMor>0-OAnJbq{tH%%3;+TMY~b~4Rp77#fwO0F8NPh^iPb<`yBT2G#B?&l&YdX? zj!v_{{1wZi7*3yor~wEd7D!t9#c=*yJ}^7|0cN9L3_pPMKP(1r+nNZCl>ZE0ftIdZ z5zX)$=t7Ws7yt+$uz^2*`~>F7-@xeq12zg1Q5t*eIQN%Vgo9e zcL5-PKrZ|O#CNFVz&ii|1acua5K90t4;2jj0uW#TvY}<(S$VC|00000NkvXXu0mjf D{xKcg literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2d_logarithmic_vertical.png b/doc/salome/gui/images/plot2d_logarithmic_vertical.png new file mode 100755 index 0000000000000000000000000000000000000000..825d59edbabe2880137e8a8f6537a7124335edef GIT binary patch literal 744 zcmVP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;UP(kjRCwBA{Qv(y0|>adxcoOTFkm1R%$_});nSy2 zj3741EPw!Ffl2)R`JP;e+Ww1^*Zn6thtbxOcaY;orYsK)GK)JwJhZK7oXl zf%pXwe+392xPgEE{9$--e+pdVzkk0O6qWLT1|Tc}S)im`#Bl3oBT)V)7(;;v5bpru zy8ro1s$3J~*v7ytnTH}Kc5UkrEe z_JEuLM1R2=KrT^LtwQng^=suo-~43w{{1(@w{O2O!W1BY;0FHq@qA2Q2igUq38f0fKbBl_N`X1ArSnRK~t*(Ys~)s{TJw?zhD|2 z00a;dz9ez&D#XQCuM~mtrHcgwlMz4wF%eP#G6)%*I+=r4JwO1lAahjJs^RP#*Q*%F z0RRDnVjy}Lk^=w&h>3y903d*@P6C{$oJo_kZx@0+RcK zBnJZk0R%Vj`}gnQya_V!-@iW$KY#uP;=c@5*3(cl?AVda@ayLvoaqoCfZzsx{rZ(b zL$ehwaqvI}gM;HthHYCDkzDwn!NX%N!;0lm48K7x{DbL2fB-@<@Z8xvaQ^)M{SU+E z&yYd^M#BsQfp6b_f!Y6{WhpWM2p|?jarKYk%NIxq0y6Xm&|CB7hA@OjEJM*Sb!q@u z9#ohzGBIKp2oOMwuoAnZq~t%jF$*l1CjhAhK(j6a1Q6UnMn*<`Ae8{b24t9d0cIdT afB^t!_g5XG@sD@_00003l7U6wDlZF%!YXMF0SBHVt%=MY6Dv cp@EU%tcRE8y!p@O06oUw>FVdQ&MBb@063vwkpKVy literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2d_settings.png b/doc/salome/gui/images/plot2d_settings.png new file mode 100755 index 0000000000000000000000000000000000000000..64df2460b754730b6147340d542bd8906eeb292b GIT binary patch literal 764 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;a!Eu%RCwBAU?2k+8yo-E)YSZsO%5P{NJh4{w*S9= zS^oda=SBZzWMn{wawE$F1Q1Ec!NCD&*sA|uzAXE%sHg}stQ?4~kqre1ASO}_{Qn%Q2q2;jw6?bXziU@E(7+!ISFb)`xP7Z0BwTapVjaWVw{Qm<00a;tu@SL-TRPCN z?+jP2JYWzJ;b3_8?i<68AHNv>{{7G3$Y5vRgRBe`o;)B1Kmf52iq$P!(ohV0`Qj6UgJUm9`T&~p3qX7XAb=Q& zG3?5f`wRktYz(hneqyk9fExx1xEDzD5s;w(0ff~+dwcu;TepI|`5kPS5YS~WUVKD1 z>;lvfWJA9K1P~)~z=P<&fB!OoWAon+uwlZ&>|n#7VTNqj4k-N<*)aeC1UAsXz~KLp zBV~}J^#3m~Hh+R+Q&^aT;pMAOK+C#`G7JO&0*FaYPVWDa!+GE&p{!g4q`xv;ym*g6 zP>`Ku!$1HafEf7r`2K(XH0?htD=Wy$n?cUJcCGRM;lri>p{ajARJ<8I-(mv*0R%$I zP>q|RcsYo_b4UJvBypk*0|+2k)~i7BQpAD%#SFiG|ADE2CkdS1L;?T-#0S{4$M-&89cov!@}+n)WFBYWK)0uf+ZVnSk{5M2$r1~poXmh;=9Bc2oONbu#ySt u9gv|{fcOUxvq8PN4_Zw9CdNR300RJfm=zC?k1w(S0000 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2d_splines.png b/doc/salome/gui/images/plot2d_splines.png new file mode 100755 index 0000000000000000000000000000000000000000..06a95572db8bb67fe21ae249da802c8da1091026 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!SQl!+hddLc<2_oQ5l`3jex% z`5hP%O$8DKA~ti0d}jD4z95D-giqxg)7^vyhC?5Wt{BuR@UaOvEZWt`z{tjMtT_Mo UjN^6nz|dvzboFyt=akR{0Oiz+d;kCd literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/productpage3.png b/doc/salome/gui/images/productpage3.png new file mode 100755 index 0000000000000000000000000000000000000000..7c2db8b20193fd73d6e7d6a182656fdce94d0da7 GIT binary patch literal 24281 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%0Akp6KK$oLQz&m(|!7HlSd=7oDcST-D%M1 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 z�wyT5bGziiPo&xSVgcHi3vWe}rCzZAn4jD`^A9I03%zF8VVL%VDUqCmqRskQEQ9 zHdV#`j4>;O3ovGUv*l?<2Ds(yUK}vQBz_vxSnDb0H5lhrF!*r?s95gxCi>)ufH$-_0ilOmAujBoK5lv^)L@;8#ddwKwzDIp1N@!j`CxR|;$&iXz>q zlugl==eD>1QwwmJyoJHOs)wl_Dsxyfh9-do^J|MweY%*zvSvnY`d-Zad+2Rlzb278vY}+eqqs#dl^!wNx(I zb0U6MkKcLW0DyxJ%KB}tl1NLau5%L$_`Oc6w5fL7;CL~<^lt=}#-14;B`LPd_599d z;1}4m7C*xaC1b`@=q*kbQM}F`9DQWy0H9@{ZR*X!%Ue$l7F_8pg9=y--1@Ln9rK2? z56>EkoaqX`@}nEL>)_6oyg>0YG$vb+*C{^T=#Xz*K3QJzD&KHUA2_MhitBZA^pfz+ zVHOPYfI&=sOSyv%oW8O!{UCyJ<;Od!akbPW#W!nEPTUA{9=W_QEYqTrDHfI@?jCvLB z`fJXi7gmY(q6a$|vao2qEmAV|XR@m?af11m#|GeD^q4KIlSblkp1@yQVO%$+qbFPS zEuUbx}|2ZJ!dhI|ORqDaM- zFv-d$SB`v#$sZkdw@E55D1W3w3|D*#_dd4M*~$g5#yVhGQzd`f_TtQw^gp8&qplO@ zoYQhRRI@S{tn>O6-`8VR@nL@^vV6-2>|=rVV7dgi{7M}2w(H$y!`8`n zFd9VuTHnXYNV2<0oz(Tu(Y(-r-lOyH1ne(b&WM!e6RVMih4`^Y zKjkB6H-HA|RWsF*^}u@*sf^ZnE(cM}OvFfX#@fh`7ATnIzkeNK=RLELTz)zWXZi