From 3593b4d1585d69f34034e5c678dc97b6e92a85cf Mon Sep 17 00:00:00 2001 From: vsr Date: Thu, 9 Aug 2012 06:20:16 +0000 Subject: [PATCH] Merge from V6_main_20120808 08Aug12 --- adm_local/cmake_files/UseQT4EXT.cmake | 39 + .../unix/config_files/check_salome_version.m4 | 48 + bin/gui_setenv.py | 34 + .../images/SALOME_pythonplugins_dialog.png | Bin 0 -> 49883 bytes .../gui/images/SALOME_pythonplugins_menu.png | Bin 0 -> 44122 bytes .../images/SALOME_pythonplugins_result.png | Bin 0 -> 88437 bytes .../gui/images/analytical_curves_dlg.png | Bin 0 -> 17057 bytes .../gui/images/change_background_dlg.png | Bin 0 -> 7101 bytes doc/salome/gui/images/copy-paste.png | Bin 0 -> 35311 bytes doc/salome/gui/images/glviewer_toolbar.png | Bin 0 -> 4521 bytes doc/salome/gui/images/graduatedaxes2.png | Bin 0 -> 18984 bytes doc/salome/gui/images/head.png | Bin 0 -> 78545 bytes doc/salome/gui/images/image54.png | Bin 0 -> 330988 bytes doc/salome/gui/images/image65.png | Bin 0 -> 155770 bytes doc/salome/gui/images/image67.png | Bin 0 -> 129948 bytes doc/salome/gui/images/image69.png | Bin 0 -> 24613 bytes doc/salome/gui/images/image70.png | Bin 0 -> 32453 bytes doc/salome/gui/images/image73.png | Bin 0 -> 24548 bytes doc/salome/gui/images/image75.png | Bin 0 -> 22790 bytes doc/salome/gui/images/image94.png | Bin 0 -> 35603 bytes doc/salome/gui/images/image95.png | Bin 0 -> 32407 bytes doc/salome/gui/images/newsticn.png | Bin 0 -> 512 bytes doc/salome/gui/images/note1.png | Bin 0 -> 1793 bytes .../gui/images/plot2dviewer_toolbar.png | Bin 0 -> 9470 bytes .../gui/images/pref_salome_directories.png | Bin 0 -> 30485 bytes doc/salome/gui/images/pref_salome_general.png | Bin 0 -> 64090 bytes .../gui/images/pref_salome_objbrowser.png | Bin 0 -> 40011 bytes .../gui/images/pref_salome_occviewer.png | Bin 0 -> 61017 bytes .../gui/images/pref_salome_plot2dviewer.png | Bin 0 -> 52728 bytes .../gui/images/pref_salome_shortcuts.png | Bin 0 -> 49844 bytes .../gui/images/pref_salome_vtkviewer.png | Bin 0 -> 75199 bytes doc/salome/gui/images/qxviewer_toolbar.png | Bin 0 -> 3882 bytes doc/salome/gui/images/save.png | Bin 0 -> 900 bytes doc/salome/gui/images/valueslabelingprops.png | Bin 0 -> 18350 bytes .../gui/images/vtk_view_parameters_dlg.png | Bin 0 -> 33311 bytes doc/salome/gui/images/vtkviewer_toolbar.png | Bin 0 -> 15471 bytes doc/salome/gui/input/gl_2d_viewer.doc | 71 ++ .../gui/input/howtos_and_best_practives.doc | 463 +++++++++ doc/salome/gui/input/qxscene_2d_viewer.doc | 54 + doc/salome/gui/input/using_input_widgets.doc | 64 ++ doc/salome/gui/input/using_pluginsmanager.doc | 204 ++++ doc/salome/gui/static/doxygen.css | 836 ++++++++++++++++ doc/salome/gui/static/header.html.in | 20 + doc/salome/tui/images/guiscreen.png | Bin 0 -> 67101 bytes doc/salome/tui/images/head.png | Bin 0 -> 78545 bytes doc/salome/tui/static/header.html.in | 20 + src/CAF/resources/CAF_msg_fr.ts | 59 ++ src/CAM/resources/CAM_msg_fr.ts | 19 + src/GLViewer/resources/GLViewer_msg_fr.ts | 117 +++ src/LightApp/LightApp.qrc | 7 + src/LightApp/LightApp_FullScreenHelper.cxx | 189 ++++ src/LightApp/LightApp_FullScreenHelper.h | 59 ++ src/LightApp/LightApp_PyInterp.cxx | 102 ++ src/LightApp/LightApp_PyInterp.h | 39 + src/LightApp/LightApp_WgViewModel.cxx | 54 + src/LightApp/LightApp_WgViewModel.h | 47 + src/LightApp/resources/LightApp_msg_fr.ts | 935 ++++++++++++++++++ src/LogWindow/resources/LogWindow_msg_fr.ts | 42 + src/OCCViewer/OCCViewer_CubeAxesDlg.cxx | 321 ++++++ src/OCCViewer/OCCViewer_CubeAxesDlg.h | 99 ++ src/OCCViewer/OCCViewer_FontWidget.cxx | 99 ++ src/OCCViewer/OCCViewer_FontWidget.h | 50 + src/OCCViewer/OCCViewer_ViewFrame.cxx | 339 +++++++ src/OCCViewer/OCCViewer_ViewFrame.h | 135 +++ src/OCCViewer/resources/OCCViewer_msg_fr.ts | 442 +++++++++ src/OCCViewer/resources/occ_view_ambient.png | Bin 0 -> 1435 bytes .../resources/occ_view_anticlockwise.png | Bin 0 -> 936 bytes .../resources/occ_view_clockwise.png | Bin 0 -> 869 bytes .../resources/occ_view_graduated_axes.png | Bin 0 -> 650 bytes .../resources/occ_view_maximized.png | Bin 0 -> 236 bytes .../resources/occ_view_minimized.png | Bin 0 -> 255 bytes .../resources/occ_view_style_switch.png | Bin 0 -> 782 bytes src/OCCViewer/resources/occ_view_sync.png | Bin 0 -> 627 bytes .../occ_view_zooming_style_switch.png | Bin 0 -> 3389 bytes src/ObjBrowser/resources/OB_msg_fr.ts | 38 + src/Plot2d/Plot2d_Algorithm.cxx | 72 ++ src/Plot2d/Plot2d_Algorithm.h | 58 ++ src/Plot2d/Plot2d_AnalyticalCurve.cxx | 512 ++++++++++ src/Plot2d/Plot2d_AnalyticalCurve.h | 156 +++ src/Plot2d/Plot2d_AnalyticalCurveDlg.cxx | 705 +++++++++++++ src/Plot2d/Plot2d_AnalyticalCurveDlg.h | 129 +++ src/Plot2d/Plot2d_AnalyticalParser.cxx | 276 ++++++ src/Plot2d/Plot2d_AnalyticalParser.h | 52 + src/Plot2d/Plot2d_Histogram.cxx | 258 +++++ src/Plot2d/Plot2d_Histogram.h | 68 ++ src/Plot2d/Plot2d_NormalizeAlgorithm.cxx | 182 ++++ src/Plot2d/Plot2d_NormalizeAlgorithm.h | 54 + src/Plot2d/Plot2d_Object.cxx | 543 ++++++++++ src/Plot2d/Plot2d_Object.h | 138 +++ src/Plot2d/Plot2d_PlotItems.cxx | 933 +++++++++++++++++ src/Plot2d/Plot2d_PlotItems.h | 192 ++++ src/Plot2d/Plot2d_SetupCurveScaleDlg.cxx | 138 +++ src/Plot2d/Plot2d_SetupCurveScaleDlg.h | 58 ++ src/Plot2d/resources/Plot2d_msg_fr.ts | 774 +++++++++++++++ .../resources/plot2d_analytical_curve.png | Bin 0 -> 1189 bytes .../resources/plot2d_lmax_normalization.png | Bin 0 -> 288 bytes .../resources/plot2d_lmin_normalization.png | Bin 0 -> 285 bytes src/Plot2d/resources/plot2d_print.png | Bin 0 -> 967 bytes .../resources/plot2d_rmax_normalization.png | Bin 0 -> 264 bytes .../resources/plot2d_rmin_normalization.png | Bin 0 -> 254 bytes src/PyConsole/resources/PyConsole_msg_fr.ts | 42 + src/QDS/resources/QDS_msg_fr.ts | 51 + src/Qtx/QtxBackgroundTool.cxx | 753 ++++++++++++++ src/Qtx/QtxBackgroundTool.h | 139 +++ src/Qtx/QtxBiColorTool.cxx | 216 ++++ src/Qtx/QtxBiColorTool.h | 66 ++ src/Qtx/QtxShortcutEdit.cxx | 404 ++++++++ src/Qtx/QtxShortcutEdit.h | 87 ++ src/Qtx/QtxWebBrowser.cxx | 435 ++++++++ src/Qtx/QtxWebBrowser.h | 82 ++ src/QxGraph/resources/QxGraph_msg_fr.ts | 31 + src/QxScene/resources/QxSceneViewer_msg_fr.ts | 38 + src/SPlot2d/SPlot2d_Histogram.cxx | 84 ++ src/SPlot2d/SPlot2d_Histogram.h | 54 + src/STD/resources/STD_msg_fr.ts | 493 +++++++++ src/SUIT/SUIT_ShortcutMgr.cxx | 187 ++++ src/SUIT/SUIT_ShortcutMgr.h | 75 ++ src/SUIT/resources/SUIT_images.ts | 15 + src/SUIT/resources/SUIT_msg_fr.ts | 151 +++ src/SUIT/resources/icon_visibility_off.png | Bin 0 -> 344 bytes src/SUIT/resources/icon_visibility_on.png | Bin 0 -> 3184 bytes src/SUITApp/SUITApp_init_python.cxx | 45 + src/SUITApp/SUITApp_init_python.hxx | 59 ++ src/SUITApp/resources/SUITApp_msg_fr.ts | 19 + .../resources/SUPERVGraph_msg_fr.ts | 27 + src/SVTK/resources/SVTK_msg_fr.ts | 607 ++++++++++++ src/SVTK/resources/vtk_view_highlight.png | Bin 0 -> 835 bytes src/SVTK/resources/vtk_view_sync.png | Bin 0 -> 627 bytes .../vtk_view_zooming_style_switch.png | Bin 0 -> 3389 bytes src/SVTK/vtkPVAxesActor.cxx | 812 +++++++++++++++ src/SVTK/vtkPVAxesActor.h | 293 ++++++ src/SVTK/vtkPVAxesWidget.cxx | 869 ++++++++++++++++ src/SVTK/vtkPVAxesWidget.h | 159 +++ src/SalomeApp/addvars2notebook.py | 85 ++ src/SalomeApp/resources/SalomeApp_msg_fr.ts | 517 ++++++++++ src/SalomeApp/salome_pluginsmanager.py | 328 ++++++ src/Style/resources/Style_msg_fr.ts | 287 ++++++ src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts | 222 +++++ src/VTKViewer/VTKViewer.qrc | 14 + src/VTKViewer/VTKViewer_Algorithm.cxx | 42 + src/VTKViewer/VTKViewer_ArcBuilder.cxx | 672 +++++++++++++ src/VTKViewer/VTKViewer_ArcBuilder.h | 189 ++++ src/VTKViewer/VTKViewer_CellCenters.cxx | 184 ++++ src/VTKViewer/VTKViewer_CellCenters.h | 60 ++ src/VTKViewer/VTKViewer_DataSetMapper.cxx | 111 +++ src/VTKViewer/VTKViewer_DataSetMapper.h | 71 ++ src/VTKViewer/VTKViewer_FramedTextActor.cxx | 529 ++++++++++ src/VTKViewer/VTKViewer_FramedTextActor.h | 131 +++ src/VTKViewer/VTKViewer_MarkerDef.h | 65 ++ src/VTKViewer/VTKViewer_MarkerDlg.cxx | 142 +++ src/VTKViewer/VTKViewer_MarkerDlg.h | 69 ++ src/VTKViewer/VTKViewer_MarkerUtils.cxx | 159 +++ src/VTKViewer/VTKViewer_MarkerUtils.h | 48 + src/VTKViewer/VTKViewer_MarkerWidget.cxx | 273 +++++ src/VTKViewer/VTKViewer_MarkerWidget.h | 77 ++ src/VTKViewer/VTKViewer_OpenGLRenderer.cxx | 262 +++++ src/VTKViewer/VTKViewer_OpenGLRenderer.h | 70 ++ src/VTKViewer/VTKViewer_PolyDataMapper.cxx | 585 +++++++++++ src/VTKViewer/VTKViewer_PolyDataMapper.h | 122 +++ src/VTKViewer/VTKViewer_Texture.cxx | 491 +++++++++ src/VTKViewer/VTKViewer_Texture.h | 71 ++ src/VTKViewer/resources/VTKViewer_msg_fr.ts | 231 +++++ src/VTKViewer/resources/marker_1.png | Bin 0 -> 239 bytes src/VTKViewer/resources/marker_2.png | Bin 0 -> 261 bytes src/VTKViewer/resources/marker_3.png | Bin 0 -> 282 bytes src/VTKViewer/resources/marker_4.png | Bin 0 -> 274 bytes src/VTKViewer/resources/marker_5.png | Bin 0 -> 266 bytes src/VTKViewer/resources/marker_6.png | Bin 0 -> 283 bytes src/VTKViewer/resources/marker_7.png | Bin 0 -> 282 bytes src/VTKViewer/resources/marker_8.png | Bin 0 -> 320 bytes src/VTKViewer/resources/marker_9.png | Bin 0 -> 300 bytes .../resources/vtk_view_anticlockwise.png | Bin 0 -> 936 bytes .../resources/vtk_view_clockwise.png | Bin 0 -> 869 bytes 173 files changed, 22743 insertions(+) create mode 100644 adm_local/cmake_files/UseQT4EXT.cmake create mode 100644 adm_local/unix/config_files/check_salome_version.m4 create mode 100644 bin/gui_setenv.py create mode 100644 doc/salome/gui/images/SALOME_pythonplugins_dialog.png create mode 100644 doc/salome/gui/images/SALOME_pythonplugins_menu.png create mode 100644 doc/salome/gui/images/SALOME_pythonplugins_result.png create mode 100755 doc/salome/gui/images/analytical_curves_dlg.png create mode 100644 doc/salome/gui/images/change_background_dlg.png create mode 100644 doc/salome/gui/images/copy-paste.png create mode 100644 doc/salome/gui/images/glviewer_toolbar.png create mode 100644 doc/salome/gui/images/graduatedaxes2.png create mode 100755 doc/salome/gui/images/head.png create mode 100644 doc/salome/gui/images/image54.png create mode 100644 doc/salome/gui/images/image65.png create mode 100644 doc/salome/gui/images/image67.png create mode 100644 doc/salome/gui/images/image69.png create mode 100644 doc/salome/gui/images/image70.png create mode 100644 doc/salome/gui/images/image73.png create mode 100644 doc/salome/gui/images/image75.png create mode 100644 doc/salome/gui/images/image94.png create mode 100644 doc/salome/gui/images/image95.png create mode 100644 doc/salome/gui/images/newsticn.png create mode 100644 doc/salome/gui/images/note1.png create mode 100644 doc/salome/gui/images/plot2dviewer_toolbar.png create mode 100644 doc/salome/gui/images/pref_salome_directories.png create mode 100644 doc/salome/gui/images/pref_salome_general.png create mode 100644 doc/salome/gui/images/pref_salome_objbrowser.png create mode 100644 doc/salome/gui/images/pref_salome_occviewer.png create mode 100644 doc/salome/gui/images/pref_salome_plot2dviewer.png create mode 100644 doc/salome/gui/images/pref_salome_shortcuts.png create mode 100644 doc/salome/gui/images/pref_salome_vtkviewer.png create mode 100644 doc/salome/gui/images/qxviewer_toolbar.png create mode 100644 doc/salome/gui/images/save.png create mode 100644 doc/salome/gui/images/valueslabelingprops.png create mode 100644 doc/salome/gui/images/vtk_view_parameters_dlg.png create mode 100644 doc/salome/gui/images/vtkviewer_toolbar.png create mode 100644 doc/salome/gui/input/gl_2d_viewer.doc create mode 100644 doc/salome/gui/input/howtos_and_best_practives.doc create mode 100644 doc/salome/gui/input/qxscene_2d_viewer.doc create mode 100755 doc/salome/gui/input/using_input_widgets.doc create mode 100644 doc/salome/gui/input/using_pluginsmanager.doc create mode 100644 doc/salome/gui/static/doxygen.css create mode 100755 doc/salome/gui/static/header.html.in create mode 100644 doc/salome/tui/images/guiscreen.png create mode 100755 doc/salome/tui/images/head.png create mode 100755 doc/salome/tui/static/header.html.in create mode 100644 src/CAF/resources/CAF_msg_fr.ts create mode 100755 src/CAM/resources/CAM_msg_fr.ts create mode 100755 src/GLViewer/resources/GLViewer_msg_fr.ts create mode 100644 src/LightApp/LightApp.qrc create mode 100644 src/LightApp/LightApp_FullScreenHelper.cxx create mode 100644 src/LightApp/LightApp_FullScreenHelper.h create mode 100644 src/LightApp/LightApp_PyInterp.cxx create mode 100644 src/LightApp/LightApp_PyInterp.h create mode 100644 src/LightApp/LightApp_WgViewModel.cxx create mode 100644 src/LightApp/LightApp_WgViewModel.h create mode 100755 src/LightApp/resources/LightApp_msg_fr.ts create mode 100755 src/LogWindow/resources/LogWindow_msg_fr.ts create mode 100644 src/OCCViewer/OCCViewer_CubeAxesDlg.cxx create mode 100644 src/OCCViewer/OCCViewer_CubeAxesDlg.h create mode 100644 src/OCCViewer/OCCViewer_FontWidget.cxx create mode 100644 src/OCCViewer/OCCViewer_FontWidget.h create mode 100644 src/OCCViewer/OCCViewer_ViewFrame.cxx create mode 100644 src/OCCViewer/OCCViewer_ViewFrame.h create mode 100755 src/OCCViewer/resources/OCCViewer_msg_fr.ts create mode 100644 src/OCCViewer/resources/occ_view_ambient.png create mode 100644 src/OCCViewer/resources/occ_view_anticlockwise.png create mode 100644 src/OCCViewer/resources/occ_view_clockwise.png create mode 100755 src/OCCViewer/resources/occ_view_graduated_axes.png create mode 100644 src/OCCViewer/resources/occ_view_maximized.png create mode 100644 src/OCCViewer/resources/occ_view_minimized.png create mode 100755 src/OCCViewer/resources/occ_view_style_switch.png create mode 100755 src/OCCViewer/resources/occ_view_sync.png create mode 100755 src/OCCViewer/resources/occ_view_zooming_style_switch.png create mode 100755 src/ObjBrowser/resources/OB_msg_fr.ts create mode 100755 src/Plot2d/Plot2d_Algorithm.cxx create mode 100755 src/Plot2d/Plot2d_Algorithm.h create mode 100755 src/Plot2d/Plot2d_AnalyticalCurve.cxx create mode 100755 src/Plot2d/Plot2d_AnalyticalCurve.h create mode 100755 src/Plot2d/Plot2d_AnalyticalCurveDlg.cxx create mode 100755 src/Plot2d/Plot2d_AnalyticalCurveDlg.h create mode 100755 src/Plot2d/Plot2d_AnalyticalParser.cxx create mode 100755 src/Plot2d/Plot2d_AnalyticalParser.h create mode 100644 src/Plot2d/Plot2d_Histogram.cxx create mode 100644 src/Plot2d/Plot2d_Histogram.h create mode 100755 src/Plot2d/Plot2d_NormalizeAlgorithm.cxx create mode 100755 src/Plot2d/Plot2d_NormalizeAlgorithm.h create mode 100755 src/Plot2d/Plot2d_Object.cxx create mode 100755 src/Plot2d/Plot2d_Object.h create mode 100644 src/Plot2d/Plot2d_PlotItems.cxx create mode 100644 src/Plot2d/Plot2d_PlotItems.h create mode 100755 src/Plot2d/Plot2d_SetupCurveScaleDlg.cxx create mode 100755 src/Plot2d/Plot2d_SetupCurveScaleDlg.h create mode 100755 src/Plot2d/resources/Plot2d_msg_fr.ts create mode 100755 src/Plot2d/resources/plot2d_analytical_curve.png create mode 100755 src/Plot2d/resources/plot2d_lmax_normalization.png create mode 100755 src/Plot2d/resources/plot2d_lmin_normalization.png create mode 100755 src/Plot2d/resources/plot2d_print.png create mode 100755 src/Plot2d/resources/plot2d_rmax_normalization.png create mode 100755 src/Plot2d/resources/plot2d_rmin_normalization.png create mode 100755 src/PyConsole/resources/PyConsole_msg_fr.ts create mode 100755 src/QDS/resources/QDS_msg_fr.ts create mode 100644 src/Qtx/QtxBackgroundTool.cxx create mode 100644 src/Qtx/QtxBackgroundTool.h create mode 100644 src/Qtx/QtxBiColorTool.cxx create mode 100644 src/Qtx/QtxBiColorTool.h create mode 100755 src/Qtx/QtxShortcutEdit.cxx create mode 100755 src/Qtx/QtxShortcutEdit.h create mode 100644 src/Qtx/QtxWebBrowser.cxx create mode 100644 src/Qtx/QtxWebBrowser.h create mode 100755 src/QxGraph/resources/QxGraph_msg_fr.ts create mode 100755 src/QxScene/resources/QxSceneViewer_msg_fr.ts create mode 100644 src/SPlot2d/SPlot2d_Histogram.cxx create mode 100644 src/SPlot2d/SPlot2d_Histogram.h create mode 100755 src/STD/resources/STD_msg_fr.ts create mode 100644 src/SUIT/SUIT_ShortcutMgr.cxx create mode 100644 src/SUIT/SUIT_ShortcutMgr.h create mode 100644 src/SUIT/resources/SUIT_images.ts create mode 100755 src/SUIT/resources/SUIT_msg_fr.ts create mode 100644 src/SUIT/resources/icon_visibility_off.png create mode 100644 src/SUIT/resources/icon_visibility_on.png create mode 100644 src/SUITApp/SUITApp_init_python.cxx create mode 100644 src/SUITApp/SUITApp_init_python.hxx create mode 100755 src/SUITApp/resources/SUITApp_msg_fr.ts create mode 100755 src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts create mode 100755 src/SVTK/resources/SVTK_msg_fr.ts create mode 100755 src/SVTK/resources/vtk_view_highlight.png create mode 100755 src/SVTK/resources/vtk_view_sync.png create mode 100755 src/SVTK/resources/vtk_view_zooming_style_switch.png create mode 100644 src/SVTK/vtkPVAxesActor.cxx create mode 100644 src/SVTK/vtkPVAxesActor.h create mode 100644 src/SVTK/vtkPVAxesWidget.cxx create mode 100644 src/SVTK/vtkPVAxesWidget.h create mode 100644 src/SalomeApp/addvars2notebook.py create mode 100755 src/SalomeApp/resources/SalomeApp_msg_fr.ts create mode 100644 src/SalomeApp/salome_pluginsmanager.py create mode 100644 src/Style/resources/Style_msg_fr.ts create mode 100755 src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts create mode 100644 src/VTKViewer/VTKViewer.qrc create mode 100644 src/VTKViewer/VTKViewer_Algorithm.cxx create mode 100644 src/VTKViewer/VTKViewer_ArcBuilder.cxx create mode 100644 src/VTKViewer/VTKViewer_ArcBuilder.h create mode 100644 src/VTKViewer/VTKViewer_CellCenters.cxx create mode 100644 src/VTKViewer/VTKViewer_CellCenters.h create mode 100644 src/VTKViewer/VTKViewer_DataSetMapper.cxx create mode 100644 src/VTKViewer/VTKViewer_DataSetMapper.h create mode 100644 src/VTKViewer/VTKViewer_FramedTextActor.cxx create mode 100644 src/VTKViewer/VTKViewer_FramedTextActor.h create mode 100644 src/VTKViewer/VTKViewer_MarkerDef.h create mode 100644 src/VTKViewer/VTKViewer_MarkerDlg.cxx create mode 100644 src/VTKViewer/VTKViewer_MarkerDlg.h create mode 100755 src/VTKViewer/VTKViewer_MarkerUtils.cxx create mode 100755 src/VTKViewer/VTKViewer_MarkerUtils.h create mode 100644 src/VTKViewer/VTKViewer_MarkerWidget.cxx create mode 100644 src/VTKViewer/VTKViewer_MarkerWidget.h create mode 100644 src/VTKViewer/VTKViewer_OpenGLRenderer.cxx create mode 100644 src/VTKViewer/VTKViewer_OpenGLRenderer.h create mode 100644 src/VTKViewer/VTKViewer_PolyDataMapper.cxx create mode 100644 src/VTKViewer/VTKViewer_PolyDataMapper.h create mode 100644 src/VTKViewer/VTKViewer_Texture.cxx create mode 100644 src/VTKViewer/VTKViewer_Texture.h create mode 100755 src/VTKViewer/resources/VTKViewer_msg_fr.ts create mode 100755 src/VTKViewer/resources/marker_1.png create mode 100755 src/VTKViewer/resources/marker_2.png create mode 100755 src/VTKViewer/resources/marker_3.png create mode 100755 src/VTKViewer/resources/marker_4.png create mode 100755 src/VTKViewer/resources/marker_5.png create mode 100755 src/VTKViewer/resources/marker_6.png create mode 100755 src/VTKViewer/resources/marker_7.png create mode 100755 src/VTKViewer/resources/marker_8.png create mode 100755 src/VTKViewer/resources/marker_9.png create mode 100644 src/VTKViewer/resources/vtk_view_anticlockwise.png create mode 100644 src/VTKViewer/resources/vtk_view_clockwise.png diff --git a/adm_local/cmake_files/UseQT4EXT.cmake b/adm_local/cmake_files/UseQT4EXT.cmake new file mode 100644 index 000000000..e3a8605c4 --- /dev/null +++ b/adm_local/cmake_files/UseQT4EXT.cmake @@ -0,0 +1,39 @@ +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +INSTALL(CODE "MACRO(QT4_COMPILE_TS_ON_INSTALL MYLRELEASE MYTSFILE MYFULLDIR MYOUTQMFILE) + FILE(MAKE_DIRECTORY \${MYFULLDIR}) + MESSAGE(STATUS \"Compiling \${MYTSFILE}\") + EXECUTE_PROCESS(COMMAND \${MYLRELEASE} \${MYTSFILE} -qm \${MYFULLDIR}/\${MYOUTQMFILE}) +ENDMACRO(QT4_COMPILE_TS_ON_INSTALL)") + +# This MACRO uses the following vars +# - QT_LRELEASE_EXECUTABLE : (given by default by FindQT.cmake) +# +# MYTSFILES containing all ts files to be compiled. +# WHERETOINSTALL contains directory (relative to install_prefix) where to install files after compilation of ts files too qm. +MACRO(QT4_INSTALL_TS_RESOURCES MYTSFILES WHERETOINSTALL) + INSTALL(CODE "SET(INSTALL_TS_DIR ${WHERETOINSTALL})") + SET(MYSOURCES) + FOREACH(input ${MYTSFILES}) + STRING(REGEX REPLACE ".ts" "" base ${input}) + SET(output "${base}.qm") + INSTALL(CODE "QT4_COMPILE_TS_ON_INSTALL( \"${QT_LRELEASE_EXECUTABLE}\" \"${CMAKE_CURRENT_SOURCE_DIR}/${input}\" \"${CMAKE_INSTALL_PREFIX}/\${INSTALL_TS_DIR}\" ${output})") + ENDFOREACH(input ${MYIDLFILES}) +ENDMACRO(QT4_INSTALL_TS_RESOURCES) diff --git a/adm_local/unix/config_files/check_salome_version.m4 b/adm_local/unix/config_files/check_salome_version.m4 new file mode 100644 index 000000000..308d4af3a --- /dev/null +++ b/adm_local/unix/config_files/check_salome_version.m4 @@ -0,0 +1,48 @@ +dnl Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +dnl +dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +dnl + +# Check SALOME version +# + +AC_DEFUN([CHECK_SALOME_VERSION],[ +AC_REQUIRE([AC_LINKER_OPTIONS])dnl + +AC_CHECKING(for salome version) + +salome_version_ok=no +SALOME_VERSION="" + +salomeVersionFile=${GUI_ROOT_DIR}/include/salome/GUI_version.h +SALOME_VERSION=$(grep GUI_VERSION_STR ${salomeVersionFile} | cut -d'"' -f2 | cut -d"." -f1) + +if test "x${SALOME_VERSION}" = "x" ; then + AC_MSG_WARN("Cannot determine the SALOME version. GUI module is required. Specify the variable GUI_ROOT_DIR") +else + salome_version_ok=yes + AC_MSG_RESULT(Using salome version ${SALOME_VERSION}) +fi + +AC_SUBST(SALOME_VERSION) +AC_MSG_RESULT(for salome version: $salome_version_ok) + +])dnl + diff --git a/bin/gui_setenv.py b/bin/gui_setenv.py new file mode 100644 index 000000000..4cadb294e --- /dev/null +++ b/bin/gui_setenv.py @@ -0,0 +1,34 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import os, re + +# ----------------------------------------------------------------------------- + +def set_env( args ): + """Add environment required for GUI module""" + vtk_overloads_dir = os.path.join( os.getenv( "GUI_ROOT_DIR" ), "lib", "paraview" ) + dirs = re.split( ":|;", os.getenv( 'VTK_AUTOLOAD_PATH', vtk_overloads_dir ) ) + if vtk_overloads_dir not in dirs: dirs[0:0] = [vtk_overloads_dir] + os.environ['VTK_AUTOLOAD_PATH'] = os.pathsep.join(dirs) + return + + diff --git a/doc/salome/gui/images/SALOME_pythonplugins_dialog.png b/doc/salome/gui/images/SALOME_pythonplugins_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..9da2f08bd0e63ebb68570f823841d1513d29f5e6 GIT binary patch literal 49883 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 Ok&{w-RVeZP(|-Upe4IuA literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/SALOME_pythonplugins_result.png b/doc/salome/gui/images/SALOME_pythonplugins_result.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbcad80b11f3ed91c88bfb0d6ef4cb5ea7fe6ab GIT binary patch literal 88437 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

CNaZ2Nf(N~ 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/analytical_curves_dlg.png b/doc/salome/gui/images/analytical_curves_dlg.png new file mode 100755 index 0000000000000000000000000000000000000000..6bddc84cc03a4fe216828446993d2dc58ea22c12 GIT binary patch literal 17057 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/change_background_dlg.png b/doc/salome/gui/images/change_background_dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0e6a4a3cd3fd82dea1b069f9ee80d4f93b92eb GIT binary patch literal 7101 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 CsZ|UB literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/glviewer_toolbar.png b/doc/salome/gui/images/glviewer_toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..c18f17807071c676d046a7d6832a7cac8e008263 GIT binary patch literal 4521 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 D4zrO! literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image54.png b/doc/salome/gui/images/image54.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6b1e52b3c9ed5858139591713f9fe96cd662d6 GIT binary patch literal 330988 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
  • (3eNUigeA5tzb1f#ZJ(H6$= zI(}PEqcQx@K(c1l1&cvD-=*w)AgxNBF1%zF{*)FfjaA|-7ii;Y6^5!ym7*kN;NGnf zdZv@mbw%EVwIbd49iC(4KGBQ}C^~`T(E96P8^X>GP)5LsU39Ue(CWNxt^ z3FzVl7_F~pf{aW^?M-Do2%6Lb0!_>kMIodL**p_(7?O7&vkk0;5i@|i<$&GFi!it* z;6YkG9+DuKMg>c`oO~ObVG&l+8CLJ_ndEGSvGccH2qT9-lb2FRICYAsR;~F-zC|%b zSunK%*Y4!7NI9*8*5Z&HKt7UB$#c04i0Ak=-K&vN$y~Whj|NyVDp?BJ*%bvn7)qokO+{G}7lK#C2duMsL5T_iy1a@BI3?cfA3O=2MJ zV3f@~#c7+|qEMMUM-fAqqVMDlQIyTj`r0LB2q{H09w{srk(^CC2S)G3G*XgzM3ftJ zj52~SmD+@PTMXNq+g1Oi>l`W#st}I$m*&6*CaC~fWJ`WOASXUtbep0@_fJXw-B5`K2S>>N2rU^Gf2<|YOJW>q zH<6^NE{MaN5?|UK#I!i5=q@zjCcptG9p_JAMb}9!0L4~xlz>_W55(^CkxrzPLE;8& z(l)Xu*^|K%q92WGRu2S`Rdd0FOG@@sD6C5nSNb9d27y5II@lCb<$ua;tdYl+7=uX? z`lLoppofYdL=j>;mkqBzswcAY(co>q$F zR{}`$<$SSbMc%qH1Xhs0qAdEnK&_4qg*87@5(%yVTBXJeof}J9AYkFQk#U+wJbgTL z>EH$j*c5Ql4>-g=kN}e_bEIKS(_uwMl)f+vUU($bK@dh|3D+-eu;^}|{;U!aS`aU~ zyos8V*dh3vOhHh4!)TM&a(knPo&xp@Ry7o7@T z5fq5-13k}Oi}V!Yrf`hnO&8_xk5LPJceREOY{;1t+cZASe%btECs&~21=S!$RX%yi z6#|FNaHSS9q-{BqhOx-%7;v>ER{iG}xSFD@3le!HXIZ|+r(0_54A<_J>o&K&&K)7Y zv`FeGn23l1+GN`L>)=SSK*k3%R|vuTnGh#?M>0-8r&tlz(|Q;}335hO!eOg{My6{5 zYHol5#$E%^kZF3j3VR0t16D|knV{{36!`=`L*DA)q$%89b2ngAYu0=S*=!m%NgWs6 zEHRg8yMQd33`aGCzBDC?o(M?5GNB=0an&0~(BJFp)Gs1; zM5dr9tEd|yA#tGv0HS;=gn}bu^{HekBWQ!N?Ud9OFtQvn1p!4a&L3BWZel}Lyd(gt z-9?AQ7jcLxCa_txByU+TW|jsc6c}QHL5Z&W;bb+za}`dP2WN|@LleCC!rl~tjH5>b zaZpWAS)k-TS#aVjKn+T44drI0RyA5rkOJY1WvK;9BJRqcpiu&SaK!r{5``h|r+yf( z#O!$MdWo1B9^?~--S&aB>1}Nb7!lc61vjW;WLtGyo{nX=ggz(TjLHw0RVRiZ1HdN4 zp=2RVwXURqDUsB}NW&d}!M}nE<|mMnfDB{8{czFCG@N_?2IHnI5}3@ab6)W0NH4*e z&+PU;7zalpX!7z5CO#VBh;ihRb7v`lYvA!FjtVkVM;$V$YdGLBIhfbhxh1&gbgKh% zP>8cqNfb)8Q+Cb|!EH!60hFkfQ$US=jbhzKhMeNQ!!FEBlc~T8*kN~38;XFShWve02$g?P5coJ|aI6u=9dH@>9Z42*3f+ zWhyUr+1(QGK${Iz#DYIq1a_Dc#LaAey5fhjNjf7(!}miU`Y3Ea61R+JE

    P=qSph4f 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�k>M`jX!*bD-Q-m=gW#koxXWXt@igIR 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image65.png b/doc/salome/gui/images/image65.png new file mode 100644 index 0000000000000000000000000000000000000000..92631b2d04dacc7f63a76e2ce068c2ba52a9d207 GIT binary patch literal 155770 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
      BkoBOtcfRjc_a^Q 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image67.png b/doc/salome/gui/images/image67.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4bda602dff17086e04872ee11ad18e642eb4d7 GIT binary patch literal 129948 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 =X=OW!CGS{j8`+{&}B=N^hIQBT24d^ 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
      GpM6A@0P=ZdO1_JX?kg{C` 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image69.png b/doc/salome/gui/images/image69.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9cefb9cd0286568de25d65f99535c1bf6f6b85 GIT binary patch literal 24613 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image70.png b/doc/salome/gui/images/image70.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c147aa8c491101d931039f09fc6dd57f91bbf9 GIT binary patch literal 32453 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 WSik+pT;t;2(;s>2uRr*y-~Jy^JfNTe literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image94.png b/doc/salome/gui/images/image94.png new file mode 100644 index 0000000000000000000000000000000000000000..4f32ce39eca2c135effa14f4333066786e0109dd GIT binary patch literal 35603 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 F{{%&P()<7b literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/image95.png b/doc/salome/gui/images/image95.png new file mode 100644 index 0000000000000000000000000000000000000000..1678fefb135a53690ccbb0f759a745c22f95685f GIT binary patch literal 32407 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/newsticn.png b/doc/salome/gui/images/newsticn.png new file mode 100644 index 0000000000000000000000000000000000000000..765baba3b2333d2a8eec5710565067dfdea70966 GIT binary patch literal 512 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/plot2dviewer_toolbar.png b/doc/salome/gui/images/plot2dviewer_toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..b394dee951b56222a526363a2fa3886889013cf7 GIT binary patch literal 9470 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/pref_salome_directories.png b/doc/salome/gui/images/pref_salome_directories.png new file mode 100644 index 0000000000000000000000000000000000000000..c47b4578827d500f109f5e4be6a992801a442649 GIT binary patch literal 30485 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/pref_salome_general.png b/doc/salome/gui/images/pref_salome_general.png new file mode 100644 index 0000000000000000000000000000000000000000..db05ca064a9c87eee0a7ab52ba0b9e7d11a06f03 GIT binary patch literal 64090 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�`p5lIB)oOSfy6LC>wbK9Wp+ptXC@ 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�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 X&&&gbWHLNS_|e`^)_At>q~Cu5KEnEF literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/qxviewer_toolbar.png b/doc/salome/gui/images/qxviewer_toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..716a078c0d2758a3ccea26b7781db8b24e577754 GIT binary patch literal 3882 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/save.png b/doc/salome/gui/images/save.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2f9863540fcf84dc96e916d4ee17101ab6d2af GIT binary patch literal 900 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/vtk_view_parameters_dlg.png b/doc/salome/gui/images/vtk_view_parameters_dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..a289e806b2b1ec85d3519b14bd41511b7f59d404 GIT binary patch literal 33311 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 G1OE@6BP+T9 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/input/gl_2d_viewer.doc b/doc/salome/gui/input/gl_2d_viewer.doc new file mode 100644 index 000000000..3f0c35f57 --- /dev/null +++ b/doc/salome/gui/input/gl_2d_viewer.doc @@ -0,0 +1,71 @@ +/*! + +\page gl_2d_viewer_page GL 2D Viewer + +

      Operations

      + +The functionalities of GL viewer are available via its Viewer +Toolbar. Buttons marked with small downward triangles have extended +functionality which can be accessed by locking on them with left mouse +button. + +\image html glviewer_toolbar.png +
      + +\image html gl_view_dump.png + +Dump View - exports an object from the viewer in bmp, png or +jpeg image format. +
      + +\image html gl_view_fitall.png + +Fit all - scales the presentation so that it could fit within +the Viewer boundaries. +
      + +\image html gl_view_fitarea.png + +Fit area - resizes the view to place in the visible area only +the contents of a frame drawn with pressed left mouse button. +
      + +\image html gl_view_fitselect.png + +Fit selection - resizes the view to fit in the visible area +only currently selected objects. +
      + +\image html gl_view_zoom.png + +Zoom - allows to zoom in and out. +
      + +\image html gl_view_pan.png + +Panning - if the represented objects are greater that the +visible area and you don't wish to use Fit all functionality, +click on this button and you'll be able to drag the scene to see its +remote parts. +
      + +\image html gl_view_glpan.png + +Global panning - allows to select a point to be the center of +the presentation showing all displayed objects in the visible ares. +
      + +\image html gl_view_reset.png + +Reset - restores the default position the scene. +
      + +\anchor gl_background +

      Background

      + +GL Viewer background can be customized using the "Change background" +popup menu command that opens standard "Select Color" dialog box: + +\image html selectcolor.png + +*/ diff --git a/doc/salome/gui/input/howtos_and_best_practives.doc b/doc/salome/gui/input/howtos_and_best_practives.doc new file mode 100644 index 000000000..e064bf281 --- /dev/null +++ b/doc/salome/gui/input/howtos_and_best_practives.doc @@ -0,0 +1,463 @@ +/*! + +\page howtos How-To's and Best Practices + +These documents provide guidelines and best practices explaining different aspects +and usage examples of SALOME platform. + +- \subpage use_case_builder +- \subpage drag_and_drop +- \subpage using_pluginsmanager + +\page use_case_builder Customize data tree representation in the Object browser by means of use case builder + +\tableofcontents + +In SALOME, the representation of the data tree in the Object browser for the \a full +(CORBA-based) module is done basing on the study contents as it is supplied by SALOME +data server (SALOMEDS). In contrast to the \a light module which data tree is completely +defined and can be easily attuned by the module specific implementation, \a full module +must publish its data in the CORBA study by means of the corresponding API of SALOME +data server, namely \c SALOMEDS::StudyBuilder. As soon as data entities are published +in the study, they are shown in the Object browser, in the same order as they appear +in the study tree. Re-arrangement of the data entities with such approach is not a +trivial task: for example, when copying/moving any data entity at the new position +within the tree, it is necessary to copy all its attributes as well +and to clear (in case of move operation) the data entity at the original position. Also, it is not possible to +make some data items in the tree "invisible" for the user (though it might be useful). + +Use case builder provides an alternative and more flexible way for customizing the +data tree representation. It implements another approach to the data tree hierarchy, +based on the tree node attributes. With use case builder it is possible to arrange +and easily re-arrange the data items in the data tree in any appropriate way. + +For example, with use case builder it is easy to implement such operations as +\ref drag_and_drop "Drag and Drop" and Copy/Cut/Paste. With use case builder approach +it is not important how data entities are arranged in the study tree, they even may +lie on the same level - use case builder allows providing custom data tree +representation, completely indepedent on the study data tree itself. It is even possible +to hide some data entities in the tree representation while still keeping them in the +study (to store specific module data). + +Object browser automatically checks it the module root data object +contains a tree node attribute and switches to the browsing of the +data tree for such module using the use case +builder. Otherwise, it browses data using an ordinary study tree iterator. Thus, it is +possible to have in the same study some modules based on use case builder approach and +others not using it. + +\section use_case_builder_usage Use case builder usage + +To obtain a reference to the use case builder, the function \c GetUseCaseBuilder() of the +\c SALOMEDS::Study interface can be used: + +\code +interface Study +{ + // Get reference to the use case builder + UseCaseBuilder GetUseCaseBuilder(); +}; +\endcode + +\c SALOMEDS::UseCaseBuilder interface of the \c SALOMEDS CORBA module provides several +methods that can be used to build a custom data tree. Its API is +similar to the API of +\c SALOMEDS::StudyBuilder interface - it operates with terms \a "father object" and +\a "child object". In addition, use case builder uses term \a "current object" that is +used as a parent of the children objects added if the parent is not explicitly +specified. + +\code +interface UseCaseBuilder +{ + // Set top-level root object of the use case tree as the current one. + // This method is usually used to add SComponent items to the top level of the tree + boolean SetRootCurrent(); + + // Set the object theObject as the current object of the use case builder + boolean SetCurrentObject(in SObject theObject); + + // Append object SObject to the end of children list of the current object + boolean Append(in SObject theObject); + + // Append object SObject to the end of children list of the parent object theFather + boolean AppendTo(in SObject theFather, in SObject theObject); + + // Insert object theFirst before the object theNext (under the same parent object) + boolean InsertBefore(in SObject theFirst, in SObject theNext); + + // Remove object from the use case tree (without removing it from the study) + boolean Remove(in SObject theObject); + + // Check if the object theObject has children (in the use case tree) + boolean HasChildren(in SObject theObject); + + // Get father object of the given object theObject in the use cases tree + SObject GetFather(in SObject theObject); + + // Check if given object theObject is added to the use case tree + boolean IsUseCaseNode(in SObject theObject); + + // Get the current object of the use case builder + SObject GetCurrentObject(); +}; +\endcode + +\section browse_use_case_tree Browsing use case data tree + +Browsing the use case tree can be done by means of the use case iterator, that is +provided by the \c SALOMEDS::UseCaseIterator interface of the \c SALOMEDS CORBA +module. Access to the use case iterator can be done via \c SALOMEDS::UseCaseBuilder +interface: + +\code +interface UseCaseBuilder +{ + // Get a reference to the use case iterator and initialize it + // by the given object theObject + UseCaseIterator GetUseCaseIterator(in SObject theObject); +}; +\endcode + +The API of the \c SALOMEDS::UseCaseIterator interface is similar to the +\c SALOMEDS::ChildIterator: + +\code +interface UseCaseIterator +{ + // Activate or reset use case iterator; boolean parameter allLevels + // specifies if the iterator should browse recursively on all sub-levels or + // on the first sub-level only. + void Init(in boolean allLevels); + // Check if the iterator can browse to the next item + boolean More(); + // Browse the iterator to the next object + void Next(); + // Get the object currently pointed by the iterator + SObject Value(); +}; +\endcode + +Typical usage of the \c UseCaseIterator is as follows: + +\code +// get use case builder +SALOMEDS::UseCaseBuilder_var useCaseBuilder = study->GetUseCaseBuilder(); + +// get the use case iterator +SALOMEDS::UseCaseIterator_var iter = useCaseIter->GetUseCaseIterator( sobject.in() ); +// iterate through the sub-items recursively +for ( useCaseIter->Init( true ); useCaseIter->More(); useCaseIter->Next() ) { + SALOMEDS::SObject_var child = useCaseIter->Value(); + // do something with the child + // ... + // clean-up + child->UnRegister(); +} +// clean-up +useCaseIter->UnRegister(); +useCaseBuilder->UnRegister(); +\endcode + +\section use_case_compatibility Remark about compatibility with existing studies + +If you decide to switch your module to the use case builder approach to provide +customization for the data tree representation, you must take care of compatibility +with existing SALOME studies. Basically it means that you have to add +a simple code to \c Load() (and \c LoadASCII() if necessary) method +of your module, which adds tree node attributes to all data entities +in the data tree of your module. The simplest way to do +this is to iterate through all data items and recursively add them to +the use case builder: + +\code +// find component +SALOMEDS::SComponent_var comp = study->FindComponent( "MYMODULE" ); +// add tree node attributes only if component data is present in the study +if ( !CORBA::is_nil( comp ) ) { + // get the use case builder + SALOMEDS::UseCaseBuilder_var useCaseBuilder = study->GetUseCaseBuilder(); + // check if tree nodes are already set + if ( !useCaseBuilder->IsUseCaseNode( comp.in() ) ) { + // set the current node of the use case builder to the root + useCaseBuilder->SetRootCurrent(); + // add component item to the top level of the use case tree + useCaseBuilder->Append( comp.in() ); + // iterate through all child items recursively + SALOMEDS::ChildIterator_var iter = study->NewChildIterator( comp.in() ); + for ( iter->InitEx( true ); iter->More(); iter->Next() ) { + SALOMEDS::SObject_var sobj = iter->Value(); + SALOMEDS::SObject_var father = sobj->GetFather(); + // add an object to the corresponding level in the use case tree + useCaseBuilder->AppendTo( father.in(), sobj.in() ); + // clean up (avoid memory leaks) + sobj->UnRegister(); + father->UnRegister(); + } + } + useCaseBuilder->UnRegister(); // clean up +} +\endcode + +\page drag_and_drop Implementing Drag and Drop functionality in SALOME module + +\tableofcontents + +Drag and Drop provides a simple visual mechanism to transfer +information between and within applications. + +In some aspects Drag and drop operates similarly to the clipboard copy/cut/paste +mechanism. + +Since SALOME GUI is implemented on Qt, the drag and drop functionality support +is provided by means of the corresponding Qt mechanisms. + +Currently dragging and dropping of the items can be done within Object browser only, +however this functionality can be extended to other GUI elements as well. + +\section enable_drag_and_drop Enabling drag and drop in SALOME module + +The Drag and drop functionality is enabled by default in the Object browser. However, +to allow dragging of a data object or dropping data on it, it is necessary to redefine +\c isDraggable() and \c isDropAccepted() methods of the corresponding class, a successor +of the \c SUIT_DataObject. These methods are defined in the base class \c SUIT_DataObject +and default implementation of both functions returns \c false, which prevents dragging and +dropping: + +\code +bool SUIT_DataObject::isDraggable() const +{ + return false; +} + +bool SUIT_DataObject::isDropAccepted() const +{ + return false; +} +\endcode + +If your data model is based on the \c SUIT_DataObject and \c SUIT_TreeModel, just +re-implement these functions in your successor data object class and return \c true +when it is needed (for example, depending on the data object type, state, etc). + +Another alternative is available if your module is directly inherited from +\c LightApp_Module or \c SalomeApp_Module class (as the majority of existing SALOME modules). +The class \c LightApp_Module (and thus \c SalomeApp_Module also) already provides +high-level API that can be used for enabling drag and drop functionality. + +To enable dragging, redefine \c isDraggable() method of your module class. In this method +you can analyze the data object subject to the drag operation and decide if +it is necessary to enable or prevent its dragging: + +\code +bool MyModuleGUI::isDraggable( const SUIT_DataObject* what ) const +{ + bool result = false; + const MyDataObject* obj = dynamic_cast( what ); + if ( obj ) { + // check if object can be dragged + result = ; + } + return result; +} +\endcode + +Note, that you should not invoke here method \c isDragEnabled() of your data object class +(in case if it inherits \c LightApp_DataObject or \c SalomeApp_DataObject), unless you +redefine methods \c isDraggable() and \c isDropAccepted() in your data object class. +The reason is that the implementation of these methods in \c LightApp_DataObject class +redirects calls to the \c LightApp_Module - be careful to avoid entering endless +recursion loop. + +To allow data dropping to an object (the object under the mouse cursor in the +Object browser during the drag operation) redefine \c isDropAccepted() method of your +module class: + +\code +bool MyModuleGUI::isDropAccepted( const SUIT_DataObject* where ) const +{ + bool result = false; + const MyDataObject* obj = dynamic_cast( where ); + if ( obj ) { + // check if object supports dropping + result = ; + } + return result; +} +\endcode + +The caution about avoiding recursive loop mentioned above is also valid for +\c isDropAccepted() method. + +\section handle_data_dropping Handling data dropping + +When dragging operation is completed (the data is dropped to an object) the module owning +the item on which the data is dropped is notified by invoking its \c dropObjects() method: + +\code +void LightApp_Module::dropObjects( const DataObjectList& what, + SUIT_DataObject* where, + const int row, + Qt::DropAction action ) +{ +} +\endcode + +The default implementation does nothing. However, this method can be redifined in the +successor class and handle the operation properly. The list of dropped +data objects is passed via \c what parameter. The data object on which +the data is dropped is passed via \c where parameter. The parameter \c row specifies in the children list +the position of object where data is dropped; if this parameter is equal to -1, the +data is dropped to the end of the children list. Performed drop action is passed +via \c action parameter; possible values are \c Qt::CopyAction and \c Qt::MoveAction +(other actions are currently unsupported). + +The method \c dropObjects() should analyze the parameters and apply +the corresponding actions for rearrangement of the data tree, copying or moving the data items depending on the +operation performed. For example: + +\code +void MyModuleGUI::dropObjects( const DataObjectList& what, SUIT_DataObject* where, + const int row, Qt::DropAction action ) +{ + if ( action != Qt::CopyAction && action != Qt::MoveAction ) + return; // unsupported action + + // get parent object + MyDataObject* whereObj = dynamic_cast( where ); + if ( !dataObj ) return; // wrong parent + + // iterate through all objects being dropped + for ( int i = 0; i < what.count(); i++ ) { + MyDataObject* whatObj = dynamic_cast( what[i] ); + if ( !whatObj ) continue; // skip wrong objects + // perform copying or moving + copyOrMove( whatObj, // data object being copied/moved + whereObj, // target data object + row, // index in the target data object + action == Qt::CopyAction ); // true if copying is done + } + // update Object browser + getApp()->updateObjectBrowser( false ); +} +\endcode + +In the above code the function \c copyOrMove() performs actual data tree rearrangement. + +\section drag_drop_light_modules Drag and Drop in "light" modules + +The data model of the \a light (not having CORBA engine) SALOME module is usually +based on the custom tree of data objects. The general approach is to +inherit a custom data +object class from the \c LightApp_DataObject and a custom data model from the +\c LightApp_DataModel class. The data model class is responsible for building the +appropriate presentation of the data tree in the Object browser. + +Thus, the implementation of the drag and drop functionality in a \a light module (more +precisely, the method \a dropObjects() as described above), consists in copying data +entities (by creating new instances of the corresponding data object class) or moving +existing data objects to the new position in a tree. The Object browser will update the +tree representation automatically, as soon as \c updateObjectBrowser() function is called. + +\section drag_drop_full_modules Using UseCaseBuilder for Drag and Drop handling in "full" modules + +Drag and drop operation requires underlying data model to allow flexible re-arrangement of +the data entities inside the data tree. In a \a full (CORBA engine based) SALOME +module, which data model is usually based on the hierarchy of \c SALOMEDS::SObject entities +provided by the data server functionality, re-arrangement of the data +tree is not a trivial task. + +However, SALOME data server (\c SALOMEDS) CORBA module proposes a mechanism that can be used +to customize data tree representation in a simple and flexible way - +\ref use_case_builder "use case builder". + +With use case builder, the \c dropObjects() function can be easily implemented. For example: + +\code +// GUI part: process objects dropping +void MyModuleGUI::dropObjects( const DataObjectList& what, SUIT_DataObject* where, + const int row, Qt::DropAction action ) +{ + if ( action != Qt::CopyAction && action != Qt::MoveAction ) + return; // unsupported action + + // get parent object + SalomeApp_DataObject* dataObj = dynamic_cast( where ); + if ( !dataObj ) return; // wrong parent + _PTR(SObject) parentObj = dataObj->object(); + + // collect objects being dropped + MYMODULE_ORB::object_list_var objects = new MYMODULE_ORB::object_list(); + objects->length( what.count() ); + int count = 0; + for ( int i = 0; i < what.count(); i++ ) { + dataObj = dynamic_cast( what[i] ); + if ( !dataObj ) continue; // skip wrong objects + _PTR(SObject) sobj = dataObj->object(); + objects[i] = _CAST(SObject, sobj)->GetSObject(); + count++; + } + objects->length( count ); + + // call engine function + engine()->copyOrMove( objects.in(), // what + _CAST(SObject, parentObj)->GetSObject(), // where + row, // row + action == Qt::CopyAction ); // isCopy + + // update Object browser + getApp()->updateObjectBrowser( false ); +} + +// Engine part: perform actual data copying / moving +void MyModule::copyOrMove( const MYMODULE_ORB::object_list& what, + SALOMEDS::SObject_ptr where, + CORBA::Long row, CORBA::Boolean isCopy ) +{ + if ( CORBA::is_nil( where ) ) return; // bad parent + + SALOMEDS::Study_var study = where->GetStudy(); // study + SALOMEDS::StudyBuilder_var studyBuilder = study->NewBuilder(); // study builder + SALOMEDS::UseCaseBuilder_var useCaseBuilder = study->GetUseCaseBuilder(); // use case builder + SALOMEDS::SComponent_var father = where->GetFatherComponent(); // father component + std::string dataType = father->ComponentDataType(); + if ( dataType != "MYMODULE" ) return; // not a MYMODULE component + + SALOMEDS::SObject_var objAfter; + if ( row >= 0 && useCaseBuilder->HasChildren( where ) ) { + // insert at a given row -> find insertion position + SALOMEDS::UseCaseIterator_var useCaseIt = useCaseBuilder->GetUseCaseIterator( where ); + int i; + for ( i = 0; i < row && useCaseIt->More(); i++, useCaseIt->Next() ); + if ( i == row && useCaseIt->More() ) { + objAfter = useCaseIt->Value(); + } + } + // process all objects in a given list + for ( int i = 0; i < what.length(); i++ ) { + SALOMEDS::SObject_var sobj = what[i]; + if ( CORBA::is_nil( sobj ) ) continue; // skip bad object + if ( isCopy ) { + // copying is performed + // get the name of the object + CORBA::String_var name = sobj->GetName(); + // create a new object, as a child of the component object + SALOMEDS::SObject_var new_sobj = studyBuilder->NewObject( father ); + new_sobj->SetAttrString( "AttributeName", name.in() ); + sobj = new_sobj; + // ... perform other necessary data copying like + // adding the corresponding attributes or creation + // of servant data entities... + } + // insert the object or its copy to the use case tree + if ( !CORBA::is_nil( objAfter ) ) + useCaseBuilder->InsertBefore( sobj, objAfter ); // insert at a given row + else + useCaseBuilder->AppendTo( where, sobj ); // append to the + end of the list + } +} + +\endcode + +*/ diff --git a/doc/salome/gui/input/qxscene_2d_viewer.doc b/doc/salome/gui/input/qxscene_2d_viewer.doc new file mode 100644 index 000000000..08cc74db9 --- /dev/null +++ b/doc/salome/gui/input/qxscene_2d_viewer.doc @@ -0,0 +1,54 @@ +/*! + +\page qxscene_2d_viewer_page QxScene 2D Viewer + +

      Operations

      + +The functionalities of QxScene viewer are available via its Viewer +Toolbar. Buttons marked with small downward triangles have extended +functionality which can be accessed by locking on them with left mouse +button. + +\image html qxviewer_toolbar.png +
      + +\image html qx_view_fitall.png + +Fit all - scales the presentation so that it could fit within +the Viewer boundaries. +
      + +\image html qx_view_fitarea.png + +Fit area - resizes the view to place in the visible area only +the contents of a frame drawn with pressed left mouse button. +
      + +\image html qx_view_zoom.png + +Zoom - allows to zoom in and out. +
      + +\image html qx_view_pan.png + +Panning - if the represented objects are greater that the +visible area and you don't wish to use Fit all functionality, +click on this button and you'll be able to drag the scene to see its +remote parts. +
      + +\image html qx_view_glpan.png + +Global panning - allows to select a point to be the center of +the presentation showing all displayed objects in the visible ares. +
      + +\image html qx_view_reset.png + +Reset - restores the default position the scene. +
      + +For more details about QxScene viewer, refer to the SALOME YACS module +User's guide. + +*/ diff --git a/doc/salome/gui/input/using_input_widgets.doc b/doc/salome/gui/input/using_input_widgets.doc new file mode 100755 index 000000000..bf0d0d8e4 --- /dev/null +++ b/doc/salome/gui/input/using_input_widgets.doc @@ -0,0 +1,64 @@ +/*! + +\page using_input_widgets_page Using input widgets + +This section contains some hints that might be useful when working +with SALOME GUI input widgets. + +

      Spin boxes

      + +This type of widgets is used for numeric (integer or floating-point) +data input. Spin boxes are used in standard \b SALOME modules if the +input value has a clearly defined input range (and precision in +case of a floating-point value). + +Input precision has a specific semantics in \b SALOME floating-point +spin boxes: +- Positive precision value means that a number in the fixed-point format +(corresponding to the "f" format specifier for C printf function) is +expected. Positive precision value is the maximum allowed number of +digits after the decimal separator. +- Negative precision value means that a number either in the fixed-point +or the scientific (exponetial) format is expected. This is similar to the +behavior of the "g" format specifier for C printf function. Negative +precision value is the maximum allowed number of significant digits in +mantissa (note that one digit is always before the decimal separator). + +To make the user aware of an input value constraints applied by some +\b SALOME operations, the following basic capabilties are provided by +spin boxes: +- The text input manually in a spin box by the user is checked to be a +number of valid type (integer or floating-point). +- The text is converted to a number and checked to be within the valid +range. +- Additionally, for floating-point data the input text is checked +against the precision rules described above. + +If the input text in a spin box does not meet the +constraints, the user is shown a message in a +tooltip near the spin box just as he types in it. The tooltip contains +information about the valid data range. For a floating-point input, the +tooltip also contains information about the expected precision. + +In standard \b SALOME modules the precision value can be adjusted through +\ref setting_preferences_page "user preferences" of the correspodning modules, and the tooltip contains a +reference to the corresponding parameter in the preferences. + +On-line documentation for each standard SALOME module contains the +list of user preferences that can be used for tuning floating-point +precision for different types of input quantities. + +

      Spin boxes and SALOME Notebook

      + +Apart from the numeric input, spin boxes in some \b SALOME modules accept +the names of \b Notebook variables (see \ref using_notebook "Using Notebook" +page for more details about \b Notebook). + +If a spin box accepts variable names, then it is +additionally checked whether the manually input text represents a variable name. Variable +names should comply with the common naming rules for \b Python variables. +If the input is neither a valid number nor a variable name, +the tooltip informs the user that variable names are also acceptable in this spin box. + + +*/ diff --git a/doc/salome/gui/input/using_pluginsmanager.doc b/doc/salome/gui/input/using_pluginsmanager.doc new file mode 100644 index 000000000..c8e5ec6c0 --- /dev/null +++ b/doc/salome/gui/input/using_pluginsmanager.doc @@ -0,0 +1,204 @@ +/*! + +\page using_pluginsmanager Extend SALOME gui functions using python plugins + +-# \ref S1_SALOMEPLUGINS +-# \ref S2_SALOMEPLUGINS +-# \ref S3_SALOMEPLUGINS +-# \ref S4_SALOMEPLUGINS +-# \ref S5_SALOMEPLUGINS + +\section S1_SALOMEPLUGINS Objectives + +The SALOME python plugin manager allows the end user to extend the +graphic interface of SALOME with custom functions written as python +modules. The screenshots below show the example of a tool that creates +a mesh from a set of geometrical parameters with the support of +simple graphical interface: + +The default menu for plugins is "Tool->Extensions": +\image html SALOME_pythonplugins_menu.png + +In this example, the plugin provides a small interface to input the +parameters (not provided by the plugin manager): +\image html SALOME_pythonplugins_dialog.png + +Then creates the mesh model: +\image html SALOME_pythonplugins_result.png + +In this example, the end user has to write: + +-# the python script that creates the mesh from the parameters, using + the GEOM and SMESH python interface, as in a clasic use case. +-# the dialog box in PyQt to input the parameters +-# the file salome_plugins.py that declares the plugins + +This page explains only the last point. + +\section S2_SALOMEPLUGINS Principles + +The general form of the file salome_plugins.py is: + +\code +import salome_pluginsmanager + +# Creation of the plugin +def myplugin1(context): + ... + # Here is the code of the plugin myplugin1 + ... + +def myplugin2(context): + ... + # Here is the code of the plugin myplugin2 + ... + +# Declaration of the plugins to the pluginsmanager +salome_pluginsmanager.AddFunction('My plugin n°1', 'This action runs the plugin n°1', myplugin1) +salome_pluginsmanager.AddFunction('My plugin n°2', 'This action runs the plugin n°2', myplugin2) +... +\endcode + +The procedure is to define a function that implements the plugin, and +to declare this function to the plugins manager. The implementation +can be very variable. It is advisable to consider this function as a +proxy to your code that you can manage in a python package +installed in the standard SALOME python directories. + +In this code, the variable "context" is automatically transmitted by +the pluginmanager when you request the plugin. This context provides +you with at at least the following attributes: + +\code +activeStudy = context.study +salomegui = context.sg +\endcode + +Once written, this script salome_plugin.py has to be moved to a +specific place on your filesystem where SALOME is programmed to search +for plugins. The possible directories are (in search order): + +-# The directory <*_ROOT_DIR>/share/salome/plugins/, when + this plugin is developped in the framework of a SALOME module + (<*_ROOT_DIR> is the root installation directory of the module, and + is the name of the module in low letters). +-# The directory ~/.config/salome/Plugins for personnal end user + plugins. +-# Any path in the shell variable SALOME_PLUGIN_PATH (each path must be + separated by a comma ":" for unix and ";" for windows). This + variable should be set and exported before running the SALOME application. + +\section S3_SALOMEPLUGINS A complete example + +Suppose that you write a SALOME script that creates a trihedron for each of +your studies (a simple and standard SALOME script, that every end user +is capable to write if he reads the documentation and follows the +training course): + +\code +# Intialize the geompy factory with the active study +import salome +import geompy +geompy.init_geom(salome.myStudy) + +# Create the objects +Vx = geompy.MakeVectorDXDYDZ(10, 0, 0) +Vy = geompy.MakeVectorDXDYDZ(0, 10, 0) +Vz = geompy.MakeVectorDXDYDZ(0, 0, 10) +origin = geompy.MakeVertex(0, 0, 0) + +# Register the objects in the active study +geompy.addToStudy( Vx, "Vx" )) +geompy.addToStudy( Vy, "Vy" )) +geompy.addToStudy( Vz, "Vz" )) +geompy.addToStudy( origin, "origin" )) +\endcode + +The job consists in creating the file salome_plugins.py as follows: + +\code +import salome_pluginsmanager +def trihedron(context): + import geompy + # Intialize the geompy factory with the active study + activeStudy = context.study + geompy.init_geom(activeStudy) + # Create the objects + Vx = geompy.MakeVectorDXDYDZ(10, 0, 0) + Vy = geompy.MakeVectorDXDYDZ(0, 10, 0) + Vz = geompy.MakeVectorDXDYDZ(0, 0, 10) + origin = geompy.MakeVertex(0, 0, 0) + # Register the objects in the active study + geompy.addToStudy( Vx, "Vx" ) + geompy.addToStudy( Vy, "Vy" ) + geompy.addToStudy( Vz, "Vz" ) + geompy.addToStudy( origin, "origin" ) + +# Register the function in the plugin manager +salome_pluginsmanager.AddFunction('O,Vx,Vy,Vz', + 'Creates the trihedron', + trihedron) + +\endcode + +Move this script in the directory +~/.config/salome/Plugins, run SALOME and enjoy your new function. + +\section S4_SALOMEPLUGINS How to select an object of the object browser + +Sometimes it can be useful to retrieve an object of the object browser to perform +an action on it, for example, to select a mesh and display some information related to it. + +Some important methods and objects to use are as follows: +-# context.sg.getObjectBrowser(): to connect the signal event + `selectionChanged()` to a custom slot +-# context.salome.sg.getAllSelected(): to get the list of selected object + in the object browser +-# objId = context.salome.sg.getSelected(0): + to get the first selected object in the object browser +-# salomeObj = context.salome.study.FindObjectID(objId).GetObject(): + to retrieve the salome object from selection. It can be a GEOM, SMESH, or any + other module object. + + If it is a mesh, then it is possible to call GetMEDMesh() on the object. + If it is not a mesh, this call will raise an exception. + So it is possible to write the mesh retrieval in the following way: +\code +mesh = None +try: + mesh = salomeObj.GetMEDMesh() +except: + print "The selection is not a mesh" +\endcode + +A example of those methods is available with the demo examples. +See the next chapter \ref S5_SALOMEPLUGINS. + +\section S5_SALOMEPLUGINS Other examples + +The GUI module provides you with some basic demo examples located in +the directory src/SalomeApp/pluginsdemo of the source space and +installed in the directory $GUI_ROOT_DIR/share/salome/plugins/gui/demo. + +\note These examples are automatically installed when you install the GUI +but are not activated. To activate the plugins, edit the file +$GUI_ROOT_DIR/share/salome/plugins/gui/demo/salome_plugins.py and turn the +variable DEMO_IS_ACTIVATED to True. + +The demo examples are: +-# \b trihedron: create a trihedron and display it with fit on the size +-# \b tube_shapewithgui: create a geom object from parameters given by a + dialog box. +-# \b tube_meshwithgui: create a mesh object from parameters given by a + dialog box. This illustrates that a plugin can work with more than + one SALOME module. +-# \b tube_shapewithguiAndPreview: same than tube_shapewithgui but with + an additionnal preview function (button apply in the dialog box). +-# \b runSalomeShellSession: run a SALOME prepared shell session in a + xterm. +-# \b minmax: computes the min and max values of a control on a selected mesh. + \note This plugin is available in the SMESH module only. To activate it, edit + the file $GUI_ROOT_DIR/share/salome/plugins/gui/demo/smesh_plugins.py and turn the variable + DEMO_IS_ACTIVATED to True. + +*/ diff --git a/doc/salome/gui/static/doxygen.css b/doc/salome/gui/static/doxygen.css new file mode 100644 index 000000000..7a2dcbde8 --- /dev/null +++ b/doc/salome/gui/static/doxygen.css @@ -0,0 +1,836 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.version { + border:1px solid #0000FF; + color: #CCCCCC; + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; + text-align: center; + width:100px; + -moz-border-radius: 8px; + margin: 5px; +} + +div.footer1 { + background-color: #DFE5F1; + border: 1px solid #AAAAAA; + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 10px; + margin-top: 15px; +} + + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0D000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + background-color: #175783; + border: 1px solid; + height: 80px; + background-repeat: no-repeat; +/* font: 300% arial,sans-serif;*/ + margin: 0px; + padding: 0px; +} + +#projectbrief +{ + font: 120% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + background: url("head.png"); + background-color: #175783; + border: 1px solid; + height: 80px; + background-repeat: no-repeat; + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + diff --git a/doc/salome/gui/static/header.html.in b/doc/salome/gui/static/header.html.in new file mode 100755 index 000000000..4571b4363 --- /dev/null +++ b/doc/salome/gui/static/header.html.in @@ -0,0 +1,20 @@ + + + + + +$title + +$treeview +$search +$mathjax + + + + +
      +
      Version: @VERSION@
      + +
      diff --git a/doc/salome/tui/images/guiscreen.png b/doc/salome/tui/images/guiscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..bc900e20650bf4973f0fdbd0cbd3b8f286140fb6 GIT binary patch literal 67101 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
      diff --git a/src/CAF/resources/CAF_msg_fr.ts b/src/CAF/resources/CAF_msg_fr.ts new file mode 100644 index 000000000..a1a8505b9 --- /dev/null +++ b/src/CAF/resources/CAF_msg_fr.ts @@ -0,0 +1,59 @@ + + + + + CAF_Application + + MEN_APP_EDIT + &Editer + + + INF_ALL_FILTER + Tous les fichiers (*.*) + + + INF_ALL_DOCUMENTS_FILTER + Tous les documents lisibles + + + MEN_DESK_EDIT + &Editer + + + MEN_APP_EDIT_UNDO + &Défaire + + + MEN_APP_EDIT_REDO + &Refaire + + + PRP_APP_EDIT_REDO + Refaire la dernière opération + + + PRP_APP_EDIT_UNDO + Défaire la dernière opération + + + TOT_APP_EDIT_REDO + Refaire + + + TOT_APP_EDIT_UNDO + Défaire + + + INF_APP_REDOACTIONS + Refait %1 action(s) + + + INF_APP_UNDOACTIONS + Défait %1 action(s) + + + ABOUT_INFO + Application SUIT Caf + + + diff --git a/src/CAM/resources/CAM_msg_fr.ts b/src/CAM/resources/CAM_msg_fr.ts new file mode 100755 index 000000000..09e8fecd3 --- /dev/null +++ b/src/CAM/resources/CAM_msg_fr.ts @@ -0,0 +1,19 @@ + + + + + @default + + ERROR_TLT + Erreur + + + ERROR_ACTIVATE_MODULE_MSG + Impossible d'activer le module %1 + + + MODULE_ROOT_OBJECT_TOOLTIP + %1 objet-racine du module + + + diff --git a/src/GLViewer/resources/GLViewer_msg_fr.ts b/src/GLViewer/resources/GLViewer_msg_fr.ts new file mode 100755 index 000000000..32fea6fa1 --- /dev/null +++ b/src/GLViewer/resources/GLViewer_msg_fr.ts @@ -0,0 +1,117 @@ + + + + + @default + + DSC_FITSELECT + Montrer la zone choisie dans la vue + + + ERROR + Erreur + + + MNU_DUMP_VIEW + Sauvegarder + + + MNU_PAN_VIEW + Déplacement + + + DSC_GLOBALPAN_VIEW + Sélection d'un nouveau centre de vue + + + MNU_ZOOM_VIEW + Zoomer + + + DSC_PAN_VIEW + Déplacer la vue + + + DSC_FITALL + Montrer tous les objets dans la vue + + + MNU_FITALL + Tout afficher + + + MNU_GLOBALPAN_VIEW + Déplacement global + + + INF_APP_DUMP_VIEW + Sauvegarder la vue + + + GL_IMAGE_FILES + Fichiers images (*.bmp *.png) + + + MNU_RESET_VIEW + Restaurer + + + DSC_FITRECT + Montrer la zone dans la vue + + + MNU_FITRECT + Afficher la zone + + + CHANGE_BGCOLOR + Changer la couleur d'arrière-plan... + + + DSC_DUMP_VIEW + Sauvegarder la vue en cours dans un fichier image + + + MNU_FITSELECT + Afficher la sélection + + + DSC_ZOOM_VIEW + Zoomer la vue + + + DSC_RESET_VIEW + Restaurer le point de vue + + + ERR_DOC_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + + GLViewer_ViewFrame + + DUMP_VIEW_SAVE_FILE_DLG_CAPTION + Sauvegarder la vue dans le fichier + + + DUMP_VIEW_ERROR_DLG_TEXT + Impossible de sauvegarder la vue dans le fichier + + + DUMP_VIEW_ERROR_DLG_CAPTION + Erreur + + + + GLViewer_ViewManager + + GL_VIEW_TITLE + Scène GL:%M - visualiseur:%V + + + diff --git a/src/LightApp/LightApp.qrc b/src/LightApp/LightApp.qrc new file mode 100644 index 000000000..ffcce9a7b --- /dev/null +++ b/src/LightApp/LightApp.qrc @@ -0,0 +1,7 @@ + + + images/en.png + images/fr.png + + + diff --git a/src/LightApp/LightApp_FullScreenHelper.cxx b/src/LightApp/LightApp_FullScreenHelper.cxx new file mode 100644 index 000000000..a64f864f3 --- /dev/null +++ b/src/LightApp/LightApp_FullScreenHelper.cxx @@ -0,0 +1,189 @@ +// Copyright (C) 2007-2012 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: LightApp_FullScreenHelper.h +// Created: 04/10/2011 18:44:25 PM +// Author: OCC team +// +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include "LightApp_FullScreenHelper.h" +#include "LightApp_Application.h" + + +/*! + * Constructor + */ +LightApp_FullScreenHelper::LightApp_FullScreenHelper() +{ + myStatusBarVisibility = false; +} + +/*! + * Destructor + */ +LightApp_FullScreenHelper::~LightApp_FullScreenHelper() +{ + +} + + +/*! + * Switch application to the full screen mode. + */ +void LightApp_FullScreenHelper::switchToFullScreen() { + + SUIT_Session* session = SUIT_Session::session(); + if(!session) + return; + + LightApp_Application* app = dynamic_cast( session->activeApplication() ); + + if(!app) + return; + + SUIT_Desktop* desktop = app->desktop(); + + if(!desktop) + return; + + desktop->setWindowState(desktop->windowState() ^ Qt::WindowFullScreen); + + if(desktop->menuBar()) + desktop->menuBar()->hide(); + + if(desktop->statusBar()) { + myStatusBarVisibility = desktop->statusBar()->isVisible(); + desktop->statusBar()->hide(); + QAction *act = app->action(STD_Application::ViewStatusBarId); + if(act) + act->setEnabled(false); + } + + + QList aDocWidgets = desktop->findChildren(); + myDocWidgetMap.clear(); + + QWidget* ob = app->objectBrowser(); + QObject* obParent = ob ? ob->parent() : 0; + + foreach(QDockWidget* aWidget, aDocWidgets) { + if(aWidget && aWidget->parent() == desktop) { + if( aWidget->isVisible() && aWidget != obParent ) { + aWidget->hide(); + QAction* act = aWidget->toggleViewAction(); + bool isActionEnabled = false; + if(act) { + isActionEnabled = act->isEnabled(); + if( isActionEnabled ) { + act->setEnabled(false); + } + } + + myDocWidgetMap.insert(aWidget, isActionEnabled); + } + } + } + + QList aToolBars = desktop->findChildren(); + myToolBarMap.clear(); + foreach(QToolBar* aWidget, aToolBars ) { + if( aWidget && aWidget->parent() == desktop ) { + if( aWidget->isVisible()) { + aWidget->hide(); + QAction* act = aWidget->toggleViewAction(); + bool isActionEnabled = false; + if(act) { + isActionEnabled = act->isEnabled(); + if( isActionEnabled ) { + act->setEnabled(false); + } + } + myToolBarMap.insert(aWidget, isActionEnabled); + } + } + } +} + +/*! + * Switch application to the normal screen mode. + */ +void LightApp_FullScreenHelper::switchToNormalScreen() { + + SUIT_Session* session = SUIT_Session::session(); + if(!session) + return; + + LightApp_Application* app = dynamic_cast( session->activeApplication() ); + + if(!app) + return; + + SUIT_Desktop* desktop = app->desktop(); + + if(!desktop) + return; + + desktop->setWindowState(desktop->windowState() ^ Qt::WindowFullScreen); + + + DocWidgetMap::iterator it = myDocWidgetMap.begin(); + for( ;it != myDocWidgetMap.end() ; it++ ) { + QDockWidget* aWidget = it.key(); + bool state = it.value(); + aWidget->show(); + QAction* act = aWidget->toggleViewAction(); + if(act && state) + act->setEnabled(true); + } + + ToolBarMap::iterator it1 = myToolBarMap.begin(); + for( ;it1 != myToolBarMap.end() ; it1++ ) { + QToolBar* aWidget = it1.key(); + bool state = it1.value(); + aWidget->show(); + QAction* act = aWidget->toggleViewAction(); + if(act && state) + act->setEnabled(true); + } + + if(desktop->menuBar()) + desktop->menuBar()->show(); + + if(desktop->statusBar() && myStatusBarVisibility) { + desktop->statusBar()->show(); + QAction *act = app->action(STD_Application::ViewStatusBarId); + if(act) + act->setEnabled(true); + } + +} diff --git a/src/LightApp/LightApp_FullScreenHelper.h b/src/LightApp/LightApp_FullScreenHelper.h new file mode 100644 index 000000000..3a8c0b869 --- /dev/null +++ b/src/LightApp/LightApp_FullScreenHelper.h @@ -0,0 +1,59 @@ +// Copyright (C) 2007-2012 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: LightApp_FullScreenHelper.h +// Created: 04/10/2011 18:39:25 PM +// Author: OCC team +// +#ifndef LIGHTAPP_FULLSCREEN_H +#define LIGHTAPP_FULLSCREEN_H + +#include "LightApp.h" + +#include +#include +#include + + +class LIGHTAPP_EXPORT LightApp_FullScreenHelper { + public: + + LightApp_FullScreenHelper(); + ~LightApp_FullScreenHelper(); + + void switchToFullScreen(); + void switchToNormalScreen(); + + private: + typedef QMap DocWidgetMap; + DocWidgetMap myDocWidgetMap; + + typedef QMap ToolBarMap; + ToolBarMap myToolBarMap; + + + bool myStatusBarVisibility; + +}; + + +#endif //LIGHTAPP_FULLSCREEN_H diff --git a/src/LightApp/LightApp_PyInterp.cxx b/src/LightApp/LightApp_PyInterp.cxx new file mode 100644 index 000000000..7b1ca1cb2 --- /dev/null +++ b/src/LightApp/LightApp_PyInterp.cxx @@ -0,0 +1,102 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) +// Date : 22/06/2007 +// +#include "LightApp_PyInterp.h" + +#include +#include + +#include + +/*! + * constructor : multi Python interpreter, one per SALOME study. + * calls initialize method defined in base class, which calls virtual methods + * initstate & initcontext redefined here. + */ +LightApp_PyInterp::LightApp_PyInterp(): PyConsole_Interp() +{ +} + +/*! + * Destructor. + */ +LightApp_PyInterp::~LightApp_PyInterp() +{ +} + +/*!\class LightApp_PyInterp + * EDF-CCAR + * When SALOME uses multi Python interpreter feature, + * Every study has its own interpreter and thread state (_tstate = Py_NewInterpreter()) + * This is fine because every study has its own modules (sys.modules) stdout and stderr + * BUT some Python modules must be imported only once. In multi interpreter context Python + * modules (*.py) are imported several times. + * The pyqt module must be imported only once because it registers classes in a C module. + * It's quite the same with omniorb modules (internals and generated with omniidl) + * This problem is handled with "shared modules" defined in salome_shared_modules.py + * These "shared modules" are imported only once and only copied in all the other interpreters + * BUT it's not the only problem. Every interpreter has its own __builtin__ module. That's fine + * but if we have copied some modules and imported others problems may arise with operations that + * are not allowed in restricted execution environment. So we must impose that all interpreters + * have identical __builtin__ module. + * That's all, for the moment ... + */ + + +bool LightApp_PyInterp::initContext() +{ + /*! + * The GIL is assumed to be held + * It is the caller responsability caller to acquire the GIL + * It will still be held on initContext output + */ + if ( !PyConsole_Interp::initContext() ) + return false; + + //Import special module to change the import mechanism + PyObjWrapper m1( PyImport_ImportModule( "import_hook" ) ); + if ( !m1 ) + { + PyErr_Print(); + return false; + } + + // Call init_shared_modules to initialize the shared import mechanism for modules + //that must not be imported twice + PyObjWrapper m2( PyObject_CallMethod( m1, (char*)"init_shared_modules", (char*)"O", SUIT_PYTHON::salome_shared_modules_module ) ); + if ( !m2 ) + { + PyErr_Print(); + return false; + } + return true; +} + +/*! + Do nothing + The initialization has been done in main + */ +void LightApp_PyInterp::initPython() +{ + _gtstate=SUIT_PYTHON::_gtstate; // initialisation in main + _interp=SUIT_PYTHON::_interp; +} diff --git a/src/LightApp/LightApp_PyInterp.h b/src/LightApp/LightApp_PyInterp.h new file mode 100644 index 000000000..813d3342d --- /dev/null +++ b/src/LightApp/LightApp_PyInterp.h @@ -0,0 +1,39 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) +// Date : 22/06/2007 +// +#ifndef _LIGHTAPP_PYINTERP_H_ +#define _LIGHTAPP_PYINTERP_H_ + +#include // this include must be first (see PyInterp_base.h)! + +class LightApp_PyInterp : public PyConsole_Interp +{ +public: + LightApp_PyInterp(); + virtual ~LightApp_PyInterp(); + +protected: + virtual void initPython(); + virtual bool initContext(); +}; + +#endif //_LIGHTAPP_PYINTERP_H_ diff --git a/src/LightApp/LightApp_WgViewModel.cxx b/src/LightApp/LightApp_WgViewModel.cxx new file mode 100644 index 000000000..cffcd1f9a --- /dev/null +++ b/src/LightApp/LightApp_WgViewModel.cxx @@ -0,0 +1,54 @@ +// Copyright (C) 2007-2012 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 : LightApp_LightApp_WgViewModel.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#include "LightApp_WgViewModel.h" +#include "SUIT_ViewWindow.h" + +LightApp_WgViewModel::LightApp_WgViewModel( const QString& type, QWidget* w ) + : SUIT_ViewModel(), + myType( type ), + myWidget( w ), + myCreated( false ) +{ +} + +LightApp_WgViewModel::~LightApp_WgViewModel() +{ +} + +SUIT_ViewWindow* LightApp_WgViewModel::createView( SUIT_Desktop* d ) +{ + SUIT_ViewWindow* vw = 0; + if ( !myCreated ) { + vw = new SUIT_ViewWindow( d ); + vw->setCentralWidget( myWidget ); + myCreated = true; + } + return vw; +} + +QString LightApp_WgViewModel::getType() const +{ + return myType; +} diff --git a/src/LightApp/LightApp_WgViewModel.h b/src/LightApp/LightApp_WgViewModel.h new file mode 100644 index 000000000..cedc4857e --- /dev/null +++ b/src/LightApp/LightApp_WgViewModel.h @@ -0,0 +1,47 @@ +// Copyright (C) 2007-2012 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 : LightApp_LightApp_WgViewModel.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#ifndef LIGHTAPP_WGVIEWMODEL_H +#define LIGHTAPP_WGVIEWMODEL_H + +#include "SUIT_ViewModel.h" +#include "SUIT_ViewManager.h" + +class LightApp_WgViewModel : public SUIT_ViewModel +{ + Q_OBJECT + +public: + LightApp_WgViewModel( const QString& type, QWidget* w ); + virtual ~LightApp_WgViewModel(); + + virtual SUIT_ViewWindow* createView( SUIT_Desktop* d ); + virtual QString getType() const; + +private: + QString myType; + QWidget* myWidget; + bool myCreated; +}; +#endif // LIGHTAPP_WGVIEWMODEL_H diff --git a/src/LightApp/resources/LightApp_msg_fr.ts b/src/LightApp/resources/LightApp_msg_fr.ts new file mode 100755 index 000000000..3506f41ca --- /dev/null +++ b/src/LightApp/resources/LightApp_msg_fr.ts @@ -0,0 +1,935 @@ + + + + + @default + + EXTERNAL_BROWSER_CANNOT_SHOW_PAGE + Le navigateur externe "%1" ne peut pas trouver la page d'aide "%2". Voulez-vous le modifierdans les préférences ? + + + ABOUT_COPYRIGHT + Copyright (C) 2007-2012 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 + + + ABOUT_CAPTION + A propos de %1 + + + ABOUT_BASE + Informations générales + + + ABOUT_MODULE_INFOS + Modules + + + ABOUT_UNKNOWN_VERSION + Inconnue + + + ABOUT_CLOSE + &Fermer + + + APP_NAME + SALOME + + + ABOUT_LICENSE + GNU LGPL + + + ABOUT_VERSION + Version %1 + + + ENTRY_COLUMN + Entrée + + + BROWSER_TITLE + Aide de SALOME + + + BROWSER_TOOLBAR_TITLE + Navigation + + + BROWSER_FILEMENU + &Fichier + + + BROWSER_CLOSE + &Fermer + + + BROWSER_BACK + Reculer + + + BROWSER_FORWARD + Avancer + + + BROWSER_FIND + &Chercher... + + + BROWSER_FINDNEXT + Chercher &suivant + + + BROWSER_FINDPREV + Chercher &précédent + + + + LightApp_Application + + LANG_CHANGED + La langue de l'application a été modifié. +Les modifications seront appliquées à la prochaine session. + + + MEN_DESK_THEME + T&hème + + + TOT_THEME + Thème + + + PRP_THEME + Changer les propriétés du style + + + TOT_FULLSCREEN + Plein écran + + + MEN_DESK_FULLSCREEN + Plein écran + + + PRP_FULLSCREEN + Basculer en mode plein écran + + + INF_TOOLBAR_MODULES + Modules + + + PREF_SHOW_LEGEND + Montrer la légende + + + MEN_DESK_RENAME + &Renommer + + + PREF_MULTI_FILE + Sauvegarde multi-fichiers + + + MEN_DESK_PREFERENCES + &Préférences... + + + PREF_TRIHEDRON_SHOW + Afficher le trièdre + + + PREF_TRIHEDRON + Trièdre + + + PREF_TRIHEDRON_SIZE + Taille + + + OBJECT_BROWSER + Arbre d'étude + + + PRP_DESK_PREFERENCES + Permettre de changer les préférences + + + PREF_GROUP_DIRECTORIES + Liste des répertoires + + + PREF_GROUP_VTKVIEWER + Scène VTK 3D + + + PREF_STORE_POS + Enregistrer la position des fenêtres + + + PREF_AUTO_SAVE + Intervalle d'enregistrement automatique (min) + + + PREF_AUTO_SAVE_DISABLED + Désactivé + + + PREF_PROJECTION_MODE + Mode de projection: + + + PREF_ORTHOGRAPHIC + Orthogonal + + + PREF_PERSPECTIVE + Perspective + + + PREF_NAVIGATION + Navigation: + + + PREF_STANDARD_STYLE + Style de contrôles type Salomé + + + PREF_KEYFREE_STYLE + Style sans clavier + + + PREF_ZOOMING + Mode de zoom: + + + PREF_ZOOMING_AT_CENTER + Relatif au centre de la scène + + + PREF_ZOOMING_AT_CURSOR + Relatif au curseur + + + PREF_INCREMENTAL_SPEED + Incrément de vitesse: + + + PREF_INCREMENTAL_SPEED_MODE + Mode de modification: + + + PREF_ARITHMETIC + Progression arithmétique + + + PREF_GEOMETRICAL + Progression géométrique + + + PREF_FRAME_SPACEMOUSE + Spacemouse + + + PREF_SHOW_STATIC_TRIHEDRON + Montrer le trièdre statique + + + PREF_SPACEMOUSE_FUNC_1 + Réduire l'incrément de vitesse + + + PREF_SPACEMOUSE_FUNC_2 + Augmenter l'incrément de vitesse + + + PREF_SPACEMOUSE_FUNC_3 + Changement Dominant/Combiné + + + PREF_SPACEMOUSE_BTN_1 + Bouton 1 + + + PREF_SPACEMOUSE_BTN_2 + Bouton 2 + + + PREF_SPACEMOUSE_BTN_3 + Bouton 3 + + + PREF_SPACEMOUSE_BTN_4 + Bouton 4 + + + PREF_SPACEMOUSE_BTN_5 + Bouton 5 + + + PREF_SPACEMOUSE_BTN_6 + Bouton 6 + + + PREF_SPACEMOUSE_BTN_7 + Bouton 7 + + + PREF_SPACEMOUSE_BTN_8 + Bouton 8 + + + PREF_SPACEMOUSE_BTN_* + Bouton * + + + PREF_SPACEMOUSE_BTN_10 + Bouton 10 + + + PREF_SPACEMOUSE_BTN_11 + Bouton 11 + + + PREF_FRAME_RECORDING + Enregistrement AVI + + + PREF_ALL_DISLPAYED_FRAMES + Enregistrer toutes les images affichées + + + PREF_FPS + FPS + + + PREF_GROUP_TTL + Paramètres + + + PREF_PROGRESSIVE + Progressif + + + PREF_QUALITY + Qualité + + + PREF_RECORDING_MODE + Mode + + + PREF_SKIPPED_FRAMES + Enregistrer à FPS donné + + + PREF_FRAME_GROUP_NAMES + Nom des groupes + + + PREF_GROUP_NAMES_TEXT_COLOR + Couleur du texte + + + PREF_GROUP_NAMES_TRANSPARENCY + Transparence + + + PREF_BOTTOM + Dessous + + + PREF_CURVE_TYPE + Type de courbe: + + + PREF_ISOS + Nombre d'isolignes + + + PREF_ISOS_U + Selon U + + + PREF_ISOS_V + Selon V + + + PREF_POINTS + Points + + + PRP_MODULE + Basculer vers le module "%1" + + + PREF_ASCII_FILE + Enregistrement ASCII + + + PREFERENCES_NOT_LOADED + Les préférences du module "<b>%N</b>" seront accessibles quand le module sera chargé + + + PREF_LINEAR + Linéaire + + + DATA_MODELS + Modèles de données + + + PRP_RENAME + Renommer la fenêtre active + + + TOT_RENAME + Renommer + + + MEN_RENAME_OBJ + Renommer + + + LOG_WINDOW + Fenêtre de messages + + + PREF_SPLINE + Spline + + + PREF_OBJ_BROWSER_SEARCH_TOOL + Outil de recherche + + + PREF_AUTO_HIDE_SEARCH_TOOL + Cacher automatiquement + + + PREF_OBJ_BROWSER_SETTINGS + Paramètres de l'arbre d'étude + + + PRP_APP_MODULE + Basculer au point neutre de la plate-forme SALOME + + + PREF_GROUP_PY_CONSOLE + Propriétés de la console Python + + + PREF_SHOW_BANNER + Afficher la bannière + + + PREF_GROUP_STYLE + Style Salomé + + + PREF_USE_SALOME_STYLE + Utiliser le style Salomé + + + PREF_MARKER_SIZE + Taille de repère: + + + PREF_TAB_VIEWERS + Scènes + + + PREF_APP + Application + + + PREF_TOP + Dessus + + + MEN_REFRESH + Rafraîchir + + + PREF_AUTO_SIZE_FIRST + Taille automatique pour la colonne "Nom" + + + PREF_RESIZE_ON_EXPAND_ITEM + Redimensionner les colonnes quand l'objet est déplié + + + PREF_BROWSE_TO_THE_PUBLISHED_OBJECT + Se déplacer sur l'objet publié + + + PREF_BROWSE_NEVER + Jamais + + + PREF_BROWSE_AFTER_APPLY_AND_CLOSE_ONLY + Seulement après "Appliquer et Fermer" + + + PREF_BROWSE_ALWAYS + Toujours + + + PREF_GROUP_SUPERV + Superviseur des graphes + + + PREF_TAB_OBJBROWSER + Arbre d'étude + + + PREF_TAB_GENERAL + Général + + + NEW_WINDOW_0 + Scène &GL + + + NEW_WINDOW_1 + Scène &Plot2d + + + NEW_WINDOW_2 + Scène &OCC + + + NEW_WINDOW_3 + Scène VT&K + + + NEW_WINDOW_4 + Scène &QxGraph + + + NEW_WINDOW_5 + Scène Qx&Scene + + + CREATING_NEW_WINDOW + Créer une nouvelle %1 + + + OBJ_BROWSER_NAME + Objet + + + PREF_LEGEND_POSITION + Position de la Légende: + + + PREF_RELATIVE_SIZE + Relative + + + PREF_VIEWER_BACKGROUND + Arrière-plan + + + PREF_VIEWER_BACKGROUND_COLOR + Couleur de l'arrière-plan + + + PREF_VIEWER_SELECTION + Couleur de sélection + + + PREF_XYVIEWER_BACKGROUND + Vue XY + + + PREF_XZVIEWER_BACKGROUND + Vue XZ + + + PREF_YZVIEWER_BACKGROUND + Vue YZ + + + PREF_3DVIEWER_BACKGROUND + Vue 3D + + + PREF_FONT + Police + + + PREF_LEGEND_FONT + Police de la légende + + + PREF_FONT_COLOR + Couleur de police de la légende + + + PREF_SELECTED_FONT_COLOR + Couleur de surlignement de la légende + + + PREF_LEFT + Gauche + + + PREF_TAB_DIRECTORIES + Emplacements + + + ACTIVATING_MODULE + Activation du module "%1" en cours + + + PREF_VERT_AXIS_SCALE + Echelle de l'axe vertical : + + + PREF_HOR_AXIS_SCALE + Echelle de l'axe horizontal : + + + PREF_GROUP_LANGUAGE + Langue + + + PREF_CURRENT_LANGUAGE + Langue actuelle + + + PREF_GROUP_LOOK_AND_FEEL + Aspect + + + PREF_OPAQUE_RESIZE + Redimensionnement opaque + + + PREF_GROUP_STUDY + Propiétés de l'étude + + + PREF_CATEGORY_SALOME + SALOME + + + PREF_DROP_DOWN_BUTTONS + Boutons alignés dans la barre + + + PREF_GROUP_COMMON + Commun + + + PREF_GROUP_OCCVIEWER + Scène OCC 3D + + + PREF_LOGARITHMIC + Logarithmique + + + MEN_DESK_MODULE_HELP + Module &Aide + + + PREF_SUPERV_TITLE_COLOR + Couleur de titre + + + PREF_PARAM + Paramètres + + + PREF_RIGHT + Droite + + + PREF_LINES + Lignes + + + INF_CANCELLED + L'activation du module est annulée + + + PREF_GROUP_EXT_BROWSER + Navigateur externe + + + PREF_SUPERV_CTRL_COLOR + Couleur de contrôle + + + PREF_GROUP_DEF_COLUMNS + Colonnnes par défaut + + + PREF_GROUP_PLOT2DVIEWER + Scène Plot2d + + + PREF_DEVIATION_COLOR + Couleur des marqueurs de déviation + + + PREF_DEVIATION_MARKER_LW + Epaisseur des lignes des marqueurs de déviation + + + PREF_DEVIATION_MARKER_TS + Taille des coches des marqueurs de déviation + + + MEN_DESK_MRU + &Récemment utilisés + + + TOT_DESK_PREFERENCES + Préférences + + + DEFINE_EXTERNAL_BROWSER + Le navigateur externe n'est pas trouvé. Voulez-vous le définir dans les préférences? + + + PREF_AUTO_SIZE + Taille automatique pour les autres colonnes + + + TOT_DESK_MRU + Récemment utilisés + + + ACTIVATE_MODULE_OP_NEW + &Nouveau + + + ACTIVATE_MODULE_OP_OPEN + &Ouvrir... + + + PYTHON_CONSOLE + Console Python + + + PREF_DYNAMIC_PRESELECTION + Utiliser l'algorithme de sélection avancée + + + TOT_CLOSE + Fermer + + + MEN_DESK_CLOSE + &Fermer + + + PRP_CLOSE + Fermer la fenêtre active + + + TOT_CLOSE_ALL + Tout fermer + + + MEN_DESK_CLOSE_ALL + &Tout fermer + + + PRP_CLOSE_ALL + Fermer toutes les fenêtres + + + TOT_GROUP_ALL + Tout grouper + + + MEN_DESK_GROUP_ALL + Tout &grouper + + + PRP_GROUP_ALL + Grouper toutes les fenêtres + + + ERR_DOC_NOT_EXISTS + Impossible d'ouvrir %1. +Le fichier n'existe pas + + + PREF_GROUP_MRU + Montrer les études récemment utilisées + + + PREF_MRU_VISIBLE_COUNT + Nombre d'études + + + PREF_MRU_INSERT_MODE + Mode d'insertion + + + PREF_MRU_MOVE_FIRST + Placer au début + + + PREF_MRU_MOVE_LAST + Placer à la fin + + + PREF_MRU_ADD_FIRST + Ajouter au début + + + PREF_MRU_ADD_LAST + Ajouter à la fin + + + PREF_MRU_LINK_TYPE + Type de lien + + + PREF_MRU_LINK_AUTO + Auto + + + PREF_MRU_LINK_SHORT + Court + + + PREF_MRU_LINK_FULL + Complet + + + PREFERENCES_NOT_SUPPORTED + Les préférences du module "%1" ne sont pas supportées + + + PREF_TAB_SHORTCUTS + Raccourcis clavier + + + PREF_GROUP_SHORTCUTS + Réglage des raccourcis clavier + + + + LightApp_Module + + MEN_HIDE + Cacher + + + TOP_DISPLAY_ONLY + Afficher uniquement + + + STB_DISPLAY_ONLY + Afficher uniquement + + + MEN_DISPLAY_ONLY + Afficher uniquement + + + TOP_HIDE + Cacher + + + MEN_ERASE_ALL + Tout cacher + + + STB_HIDE + Cacher + + + STB_SHOW + Afficher + + + TOP_SHOW + Afficher + + + MEN_SHOW + Afficher + + + STB_ERASE_ALL + Tout cacher + + + TOP_ERASE_ALL + Tout cacher + + + + LightApp_ModuleDlg + + DESCRIPTION + Vous activez le module + <b>%1</b>.<br>Choisissez l'action nécessaire avec le bouton correspondant ci-dessous + + + CANCEL + &Annuler + + + CAPTION + Activer le module + + + + LightApp_NameDlg + + TLT_RENAME + Renommer + + + NAME_LBL + Nom: + + + + LightApp_PreferencesDlg + + IMPORT_PREFERENCES + Importer les préférences + + + CAPTION + Préférences + + + WARNING + Avertissement + + + IMPORT_BTN_TEXT + Importer + + + DEFAULT_QUESTION + Voulez-vous restaurer les préférences par défaut ? + + + DEFAULT_BTN_TEXT + Défauts + + + + LightApp_ModuleAction + + ACTIVATE_MODULE_TOP + Activer/désactiver le module %1 + + + diff --git a/src/LogWindow/resources/LogWindow_msg_fr.ts b/src/LogWindow/resources/LogWindow_msg_fr.ts new file mode 100755 index 000000000..1e6a59100 --- /dev/null +++ b/src/LogWindow/resources/LogWindow_msg_fr.ts @@ -0,0 +1,42 @@ + + + + + LogWindow + + + EDIT_COPY_CMD + &Copier + + + + EDIT_CLEAR_CMD + &Effacer + + + + EDIT_SELECTALL_CMD + &Tout sélectionner + + + + EDIT_SAVETOFILE_CMD + &Sauvegarder le journal dans un fichier... + + + + ERR_ERROR + Erreur + + + + ERR_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + + BUT_OK + &OK + + + diff --git a/src/OCCViewer/OCCViewer_CubeAxesDlg.cxx b/src/OCCViewer/OCCViewer_CubeAxesDlg.cxx new file mode 100644 index 000000000..a37373729 --- /dev/null +++ b/src/OCCViewer/OCCViewer_CubeAxesDlg.cxx @@ -0,0 +1,321 @@ +// Copyright (C) 2007-2012 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 "OCCViewer_CubeAxesDlg.h" + +#include "OCCViewer_FontWidget.h" +#include "OCCViewer_ViewPort3d.h" +#include "OCCViewer_ViewWindow.h" + +#include "QtxAction.h" +#include "QtxIntSpinBox.h" + +#include + +#include +#include +#include + +/*! + \class OCCViewer_CubeAxesDlg::AxisWidget + \brief Axis tab widget of the "Graduated axis" dialog box + \internal +*/ + +/*! + Constructor +*/ +OCCViewer_AxisWidget::OCCViewer_AxisWidget (QWidget* theParent) +: ViewerTools_AxisWidgetBase(theParent) +{ +} + +/*! + Destructor +*/ +OCCViewer_AxisWidget::~OCCViewer_AxisWidget() +{ +} + +/*! + Create font widget +*/ +ViewerTools_FontWidgetBase* OCCViewer_AxisWidget::createFontWidget( QWidget* theParent ) +{ + OCCViewer_FontWidget* aFontWidget = new OCCViewer_FontWidget( theParent ); + aFontWidget->Initialize(); + return aFontWidget; +} + +/*! + Set axis data +*/ +void OCCViewer_AxisWidget::SetData( const AxisData& theAxisData ) +{ + myNameGrp->setChecked( theAxisData.DrawName ); + myAxisName->setText( theAxisData.Name ); + myNameFont->SetData( theAxisData.NameColor, 0, false, false, false ); + + myLabelsGrp->setChecked( theAxisData.DrawValues ); + myLabelNumber->setValue( theAxisData.NbValues ); + myLabelOffset->setValue( theAxisData.Offset ); + myLabelsFont->SetData( theAxisData.Color, 0, false, false, false ); + + myTicksGrp->setChecked( theAxisData.DrawTickmarks ); + myTickLength->setValue( theAxisData.TickmarkLength ); +} + +/*! + Get axis data +*/ +void OCCViewer_AxisWidget::GetData( AxisData& theAxisData ) +{ + theAxisData.DrawName = myNameGrp->isChecked(); + theAxisData.Name = myAxisName->text(); + + int aNameFamily; + bool aNameBold, aNameItalic, aNameShadow; + myNameFont->GetData( theAxisData.NameColor, aNameFamily, aNameBold, aNameItalic, aNameShadow ); + + theAxisData.DrawValues = myLabelsGrp->isChecked(); + theAxisData.NbValues = myLabelNumber->value(); + theAxisData.Offset = myLabelOffset->value(); + + int aLabelFamily; + bool aLabelBold, aLabelItalic, aLabelShadow; + myLabelsFont->GetData( theAxisData.Color, aLabelFamily, aLabelBold, aLabelItalic, aLabelShadow ); + + theAxisData.DrawTickmarks = myTicksGrp->isChecked(); + theAxisData.TickmarkLength = myTickLength->value(); +} + +/* + Class : OCCViewer_CubeAxesDlg + Description : Dialog for specifying cube axes properties +*/ + +/*! + Constructor +*/ +OCCViewer_CubeAxesDlg::OCCViewer_CubeAxesDlg(QtxAction* theAction, + OCCViewer_ViewWindow* theParent, + const char* theName): + ViewerTools_CubeAxesDlgBase(theAction, + theParent, + theName), + myMainWindow(theParent) +{ +} + +/*! + Destructor +*/ +OCCViewer_CubeAxesDlg::~OCCViewer_CubeAxesDlg() +{ +} + +/*! + Create axis widget +*/ +ViewerTools_AxisWidgetBase* OCCViewer_CubeAxesDlg::createAxisWidget( QWidget* theParent ) +{ + OCCViewer_AxisWidget* anAxisWidget = new OCCViewer_AxisWidget( theParent ); + anAxisWidget->initialize(); + return anAxisWidget; +} + +/*! + Update dialog fields, connect signals and slots, show dialog +*/ +void OCCViewer_CubeAxesDlg::initialize() +{ + ViewerTools_CubeAxesDlgBase::initialize(); + + for( int i = 0; i < 3; i++ ) + { + if( OCCViewer_AxisWidget* anAxisWidget = dynamic_cast( myAxes[ i ] ) ) + { + OCCViewer_AxisWidget::AxisData anAxisData; + switch( i ) + { + case 0: + anAxisData.Name = "X"; + anAxisData.NameColor = anAxisData.Color = Qt::red; + break; + case 1: + anAxisData.Name = "Y"; + anAxisData.NameColor = anAxisData.Color = Qt::green; + break; + case 2: + anAxisData.Name = "Z"; + anAxisData.NameColor = anAxisData.Color = Qt::blue; + break; + } + anAxisData.DrawName = true; + anAxisData.DrawValues = true; + anAxisData.NbValues = 3; + anAxisData.Offset = 2; + anAxisData.DrawTickmarks = true; + anAxisData.TickmarkLength = 5; + anAxisWidget->SetData( anAxisData ); + } + } +} + +/*! + Update dialog fields, connect signals and slots, show dialog +*/ +void OCCViewer_CubeAxesDlg::Update() +{ + ViewerTools_CubeAxesDlgBase::Update(); +} + +/*! + Verify validity of entry data +*/ +bool OCCViewer_CubeAxesDlg::onApply() +{ + bool isOk = ViewerTools_CubeAxesDlgBase::onApply(); + + try + { + QWidget *aCurrWid = this->focusWidget(); + aCurrWid->clearFocus(); + aCurrWid->setFocus(); + + if( OCCViewer_ViewPort3d* aViewPort = myMainWindow->getViewPort() ) + { + Handle(V3d_View) aView = aViewPort->getView(); + if( !aView.IsNull() ) + ApplyData( aView ); + } + } + catch(...) + { + isOk = false; + } + + return isOk; +} + +/*! + Get graduated trihedron parameters +*/ +void OCCViewer_CubeAxesDlg::GetData( bool& theIsVisible, OCCViewer_AxisWidget::AxisData theAxisData[3] ) +{ + theIsVisible = myIsVisible->isChecked(); + for( int i = 0; i < 3; i++ ) + if( OCCViewer_AxisWidget* anAxisWidget = dynamic_cast( myAxes[ i ] ) ) + anAxisWidget->GetData( theAxisData[i] ); +} + +/*! + Set graduated trihedron parameters +*/ +void OCCViewer_CubeAxesDlg::SetData( bool theIsVisible, OCCViewer_AxisWidget::AxisData theAxisData[3] ) +{ + myIsVisible->setChecked( theIsVisible ); + for( int i = 0; i < 3; i++ ) + if( OCCViewer_AxisWidget* anAxisWidget = dynamic_cast( myAxes[ i ] ) ) + anAxisWidget->SetData( theAxisData[i] ); +} + +/*! + Apply graduated trihedron parameters +*/ +void OCCViewer_CubeAxesDlg::ApplyData( const Handle(V3d_View)& theView ) +{ +#if OCC_VERSION_LARGE > 0x06030009 // available only with OCC-6.3-sp10 and higher version + if( theView.IsNull() ) + return; + + if( myIsVisible->isChecked() ) + { + OCCViewer_AxisWidget::AxisData anAxisData[3]; + for( int i = 0; i < 3; i++ ) + if( OCCViewer_AxisWidget* anAxisWidget = dynamic_cast( myAxes[ i ] ) ) + anAxisWidget->GetData( anAxisData[i] ); + + // A gap used offset of axis names' offset + // (this hard-coded value will be removed when the + // font support will be introduced in OCC-6.4) + int aGap = 20; + + theView->GraduatedTrihedronDisplay( + anAxisData[0].Name.toLatin1().constData(), + anAxisData[1].Name.toLatin1().constData(), + anAxisData[2].Name.toLatin1().constData(), + anAxisData[0].DrawName, + anAxisData[1].DrawName, + anAxisData[2].DrawName, + anAxisData[0].DrawValues, + anAxisData[1].DrawValues, + anAxisData[2].DrawValues, + Standard_True, // draw grid + Standard_False, // draw axes + anAxisData[0].NbValues - 1, + anAxisData[1].NbValues - 1, + anAxisData[2].NbValues - 1, + anAxisData[0].Offset, + anAxisData[1].Offset, + anAxisData[2].Offset, + anAxisData[0].Offset + aGap, // see above + anAxisData[1].Offset + aGap, // see above + anAxisData[2].Offset + aGap, // see above + anAxisData[0].DrawTickmarks, + anAxisData[1].DrawTickmarks, + anAxisData[2].DrawTickmarks, + anAxisData[0].TickmarkLength, + anAxisData[1].TickmarkLength, + anAxisData[2].TickmarkLength, + Quantity_NOC_WHITE, // grid color + Quantity_Color( anAxisData[0].NameColor.redF(), + anAxisData[0].NameColor.greenF(), + anAxisData[0].NameColor.blueF(), + Quantity_TOC_RGB ), + Quantity_Color( anAxisData[1].NameColor.redF(), + anAxisData[1].NameColor.greenF(), + anAxisData[1].NameColor.blueF(), + Quantity_TOC_RGB ), + Quantity_Color( anAxisData[2].NameColor.redF(), + anAxisData[2].NameColor.greenF(), + anAxisData[2].NameColor.blueF(), + Quantity_TOC_RGB ), + Quantity_Color( anAxisData[0].Color.redF(), + anAxisData[0].Color.greenF(), + anAxisData[0].Color.blueF(), + Quantity_TOC_RGB ), + Quantity_Color( anAxisData[1].Color.redF(), + anAxisData[1].Color.greenF(), + anAxisData[1].Color.blueF(), + Quantity_TOC_RGB ), + Quantity_Color( anAxisData[2].Color.redF(), + anAxisData[2].Color.greenF(), + anAxisData[2].Color.blueF(), + Quantity_TOC_RGB ) ); + } + else + theView->GraduatedTrihedronErase(); + + theView->Redraw(); +#endif +} diff --git a/src/OCCViewer/OCCViewer_CubeAxesDlg.h b/src/OCCViewer/OCCViewer_CubeAxesDlg.h new file mode 100644 index 000000000..250e4ad91 --- /dev/null +++ b/src/OCCViewer/OCCViewer_CubeAxesDlg.h @@ -0,0 +1,99 @@ +// Copyright (C) 2007-2012 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 OCCVIEWER_CUBEAXESDLG_H +#define OCCVIEWER_CUBEAXESDLG_H + +#include "OCCViewer.h" + +#include + +#include + +class OCCViewer_ViewWindow; + +/*! + * Class : OCCViewer_AxisWidget + * Description : Axis tab widget of the "Graduated axis" dialog box +*/ +class OCCVIEWER_EXPORT OCCViewer_AxisWidget : public ViewerTools_AxisWidgetBase +{ +public: + struct AxisData + { + bool DrawName; + QString Name; + QColor NameColor; + bool DrawValues; + int NbValues; + int Offset; + QColor Color; + bool DrawTickmarks; + int TickmarkLength; + }; + +public: + OCCViewer_AxisWidget( QWidget* ); + ~OCCViewer_AxisWidget(); + +public: + void SetData( const AxisData& ); + void GetData( AxisData& ); + +protected: + virtual ViewerTools_FontWidgetBase* createFontWidget( QWidget* ); +}; + +/*! + * Class : OCCViewer_CubeAxesDlg + * Description : Dialog for specifynig cube axes properties + */ +class OCCVIEWER_EXPORT OCCViewer_CubeAxesDlg : public ViewerTools_CubeAxesDlgBase +{ + Q_OBJECT + +public: + OCCViewer_CubeAxesDlg(QtxAction* theAction, + OCCViewer_ViewWindow* theParent, + const char* theName); + virtual ~OCCViewer_CubeAxesDlg(); + + virtual void initialize(); + + void GetData( bool& theIsVisible, OCCViewer_AxisWidget::AxisData theAxisData[3] ); + void SetData( bool theIsVisible, OCCViewer_AxisWidget::AxisData theAxisData[3] ); + + void ApplyData( const Handle(V3d_View)& theView ); + + virtual void Update(); + +private slots: + virtual bool onApply(); + +private: + virtual ViewerTools_AxisWidgetBase* createAxisWidget( QWidget* ); + +private: + OCCViewer_ViewWindow* myMainWindow; +}; + +#endif diff --git a/src/OCCViewer/OCCViewer_FontWidget.cxx b/src/OCCViewer/OCCViewer_FontWidget.cxx new file mode 100644 index 000000000..c963f71b0 --- /dev/null +++ b/src/OCCViewer/OCCViewer_FontWidget.cxx @@ -0,0 +1,99 @@ +// Copyright (C) 2007-2012 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 "OCCViewer_FontWidget.h" + +#include + +//#include + +/*! + * Class : OCCViewer_FontWidget + * Description : Dialog for specifynig font + */ + +/*! + Constructor +*/ +OCCViewer_FontWidget::OCCViewer_FontWidget( QWidget* theParent ) +: ViewerTools_FontWidgetBase( theParent ) +{ +} + +/*! + Destructor +*/ +OCCViewer_FontWidget::~OCCViewer_FontWidget() +{ +} + +void OCCViewer_FontWidget::InitializeFamilies() +{ + //myFamily->insertItem( myFamily->count(), tr( "ARIAL" ) ); + //myFamily->insertItem( myFamily->count(), tr( "COURIER" ) ); + //myFamily->insertItem( myFamily->count(), tr( "TIMES" ) ); +} + +void OCCViewer_FontWidget::SetData( const QColor& theColor, + const int theFamily, + const bool theBold, + const bool theItalic, + const bool theShadow ) +{ + ViewerTools_FontWidgetBase::SetData( theColor, + theFamily, + theBold, + theItalic, + theShadow ); + + /* + if ( theFamily == VTK_ARIAL ) + myFamily->setCurrentIndex( 0 ); + else if ( theFamily == VTK_COURIER ) + myFamily->setCurrentIndex( 1 ); + else + myFamily->setCurrentIndex( 2 ); + */ +} + +void OCCViewer_FontWidget::GetData( QColor& theColor, + int& theFamily, + bool& theBold, + bool& theItalic, + bool& theShadow ) const +{ + ViewerTools_FontWidgetBase::GetData( theColor, + theFamily, + theBold, + theItalic, + theShadow ); + + /* + int anItem = myFamily->currentIndex(); + if ( anItem == 0 ) + theFamily = VTK_ARIAL; + else if ( anItem == 1 ) + theFamily = VTK_COURIER; + else + theFamily = VTK_TIMES; + */ +} diff --git a/src/OCCViewer/OCCViewer_FontWidget.h b/src/OCCViewer/OCCViewer_FontWidget.h new file mode 100644 index 000000000..e35c23fdc --- /dev/null +++ b/src/OCCViewer/OCCViewer_FontWidget.h @@ -0,0 +1,50 @@ +// Copyright (C) 2007-2012 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 OCCVIEWER_FONTWIDGET_H +#define OCCVIEWER_FONTWIDGET_H + +#include "OCCViewer.h" + +#include + +/*! + * Class : OCCViewer_FontWidget + * Description : Dialog for specifynig font + */ +class OCCVIEWER_EXPORT OCCViewer_FontWidget : public ViewerTools_FontWidgetBase +{ + Q_OBJECT + +public: + OCCViewer_FontWidget( QWidget* ); + virtual ~OCCViewer_FontWidget(); + + virtual void SetData( const QColor&, const int, const bool, const bool, const bool ); + + virtual void GetData( QColor&, int&, bool&, bool&, bool& ) const; + +protected: + virtual void InitializeFamilies(); +}; + +#endif diff --git a/src/OCCViewer/OCCViewer_ViewFrame.cxx b/src/OCCViewer/OCCViewer_ViewFrame.cxx new file mode 100644 index 000000000..2d3b66ae7 --- /dev/null +++ b/src/OCCViewer/OCCViewer_ViewFrame.cxx @@ -0,0 +1,339 @@ +// Copyright (C) 2007-2012 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 "OCCViewer_ViewFrame.h" +#include "OCCViewer_ViewWindow.h" +#include "OCCViewer_ViewModel.h" + +#include + +#include +#include +#include + +OCCViewer_ViewFrame::OCCViewer_ViewFrame(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel) + : OCCViewer_ViewWindow( theDesktop, theModel ), myPopupRequestedView(0) +{ + QFrame* centralFrame = new QFrame( this ); + setCentralWidget( centralFrame ); + + OCCViewer_ViewWindow* view0 = theModel->createSubWindow(); + view0->setParent( centralFrame ); + myViews.append( view0 ); // MAIN_VIEW + + myLayout = new QGridLayout( centralFrame ); + myLayout->setMargin( 0 ); + myLayout->setSpacing( 1 ); + + myLayout->addWidget( view0, 1, 1 ); + connectViewSignals(view0); +} + +OCCViewer_ViewFrame::~OCCViewer_ViewFrame() +{ +} + +//************************************************************************************** +OCCViewer_ViewWindow* OCCViewer_ViewFrame::getView( const int i ) const +{ + return ( i >= 0 && i < myViews.count() ) ? myViews.at( i ) : 0 ; +} + +//************************************************************************************** +void OCCViewer_ViewFrame::setViewManager( SUIT_ViewManager* theMgr ) +{ + OCCViewer_ViewWindow::setViewManager(theMgr); + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->setViewManager(theMgr); + } +} + + +//************************************************************************************** +void OCCViewer_ViewFrame::onMaximizedView( OCCViewer_ViewWindow* theView, bool isMaximized) +{ + if (isMaximized) { + if (myViews.count() <= 1) + return; + + myLayout->setColumnStretch(0, 0); + myLayout->setColumnStretch(1, 0); + int i = 0; + OCCViewer_ViewWindow* view = 0; + for ( i = BOTTOM_RIGHT; i <= TOP_RIGHT; i++) { + view = myViews.at(i); + view->setVisible( view == theView ); + view->setMaximized( view == theView, false ); + } + } + else { + OCCViewer_Viewer* aModel = dynamic_cast(myManager->getViewModel()); + if (!aModel) return; + + myLayout->setColumnStretch(0, 10); + myLayout->setColumnStretch(1, 10); + + int i = 0; + if (myViews.count() == 1) { + //QColor aColor = myViews.at( MAIN_VIEW )->backgroundColor(); + OCCViewer_ViewWindow* view = 0; + for ( i = BOTTOM_LEFT; i <= TOP_RIGHT; i++) { + view = aModel->createSubWindow(); + view->set2dMode( (Mode2dType) i ); + view->setParent( centralWidget() ); + view->setViewManager(myManager); + myViews.append( view ); + aModel->initView(view); + view->setMaximized(false, false); + view->setDropDownButtons( dropDownButtons() ); + connectViewSignals(view); + view->setBackground(aModel->background(i)); + } + myLayout->addWidget( myViews.at(BOTTOM_LEFT), 1, 0 ); + myLayout->addWidget( myViews.at(TOP_LEFT), 0, 0 ); + myLayout->addWidget( myViews.at(TOP_RIGHT), 0, 1 ); + } + OCCViewer_ViewWindow* view = 0; + for ( i = BOTTOM_RIGHT; i <= TOP_RIGHT; i++) { + view = myViews.at(i); + view->show(); + view->setMaximized( false, false ); + ///////////////QApplication::processEvents(); // VSR: hangs up ? + if (view != theView) + view->onViewFitAll(); + } + } + myLayout->invalidate(); +} + +OCCViewer_ViewPort3d* OCCViewer_ViewFrame::getViewPort(int theView) +{ + return getView(theView)? getView(theView)->getViewPort() : 0; +} + +void OCCViewer_ViewFrame::updateEnabledDrawMode() +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->updateEnabledDrawMode(); + } +} + +void OCCViewer_ViewFrame::setCuttingPlane( bool on, const double x , const double y , const double z, + const double dx, const double dy, const double dz) +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->setCuttingPlane(on, x, y, z, dx, dy, dz); + aView->update(); + } +} + +//************************************************************************************** +void OCCViewer_ViewFrame::setCuttingPlane( bool on, const gp_Pln thePln ) +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->setCuttingPlane(on, thePln); + aView->update(); + } +} + +//************************************************************************************** +void OCCViewer_ViewFrame::setInteractionStyle( const int i ) +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->setInteractionStyle(i); + } +} + +//************************************************************************************** +void OCCViewer_ViewFrame::setZoomingStyle( const int i ) +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->setZoomingStyle(i); + } +} + +//************************************************************************************** +void OCCViewer_ViewFrame::connectViewSignals(OCCViewer_ViewWindow* theView) +{ + connect( theView, SIGNAL( maximized( OCCViewer_ViewWindow*, bool ) ), + this, SLOT( onMaximizedView( OCCViewer_ViewWindow*, bool ) ) ); + + connect( theView, SIGNAL( wheeling(SUIT_ViewWindow*, QWheelEvent*) ), + this, SIGNAL( wheeling(SUIT_ViewWindow*, QWheelEvent*) ) ); + + connect( theView, SIGNAL( keyReleased(SUIT_ViewWindow*, QKeyEvent*) ), + this, SIGNAL( keyReleased(SUIT_ViewWindow*, QKeyEvent*) ) ); + connect( theView, SIGNAL( keyPressed(SUIT_ViewWindow*, QKeyEvent*) ), + this, SIGNAL( keyPressed(SUIT_ViewWindow*, QKeyEvent*) ) ); + + connect( theView, SIGNAL( mouseDoubleClicked(SUIT_ViewWindow*, QMouseEvent*) ), + this, SIGNAL( mouseDoubleClicked(SUIT_ViewWindow*, QMouseEvent*) ) ); + connect( theView, SIGNAL( mousePressed(SUIT_ViewWindow*, QMouseEvent*) ), + this, SIGNAL( mousePressed(SUIT_ViewWindow*, QMouseEvent*) ) ); + connect( theView, SIGNAL( mouseReleased(SUIT_ViewWindow*, QMouseEvent*) ), + this, SIGNAL( mouseReleased(SUIT_ViewWindow*, QMouseEvent*) ) ); + connect( theView, SIGNAL( mouseMoving(SUIT_ViewWindow*, QMouseEvent*) ), + this, SIGNAL( mouseMoving(SUIT_ViewWindow*, QMouseEvent*) ) ); + + // The signal is used to process get/set background color from popup + connect( theView, SIGNAL( contextMenuRequested(QContextMenuEvent*) ), + this, SLOT( onContextMenuRequested(QContextMenuEvent*) ) ); + + connect( theView, SIGNAL( contextMenuRequested(QContextMenuEvent*) ), + this, SIGNAL( contextMenuRequested(QContextMenuEvent*) ) ); +} + +// obsolete +void OCCViewer_ViewFrame::setBackgroundColor( const QColor& theColor ) +{ + if (myPopupRequestedView) + myPopupRequestedView->setBackgroundColor(theColor); + else { + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + aView->setBackgroundColor(theColor); + } + } +} +void OCCViewer_ViewFrame::setBackground( const Qtx::BackgroundData& theBackground ) +{ + if (myPopupRequestedView) + myPopupRequestedView->setBackground(theBackground); + else { + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + aView->setBackground(theBackground); + } + } +} + +void OCCViewer_ViewFrame::onViewFitAll() +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->onViewFitAll(); + } +} + +void OCCViewer_ViewFrame::onFitAll() +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + aView->onFitAll(); + } +} + +// obsolete +QColor OCCViewer_ViewFrame::backgroundColor() const +{ + if (myPopupRequestedView) + return myPopupRequestedView->backgroundColor(); + + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + return aView->backgroundColor(); + } + return getView(MAIN_VIEW)->backgroundColor(); +} + +Qtx::BackgroundData OCCViewer_ViewFrame::background() const +{ + if (myPopupRequestedView) + return myPopupRequestedView->background(); + + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + return aView->background(); + } + return getView(MAIN_VIEW)->background(); +} + +QImage OCCViewer_ViewFrame::dumpView() +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + return aView->dumpView(); + } + return QImage(); +} + +bool OCCViewer_ViewFrame::dumpViewToFormat( const QImage& image, const QString& fileName, const QString& format ) +{ + foreach (OCCViewer_ViewWindow* aView, myViews) { + if (aView->isVisible()) + return aView->dumpViewToFormat( image, fileName, format ); + } + return false; +} + +void OCCViewer_ViewFrame::onContextMenuRequested(QContextMenuEvent*) +{ + myPopupRequestedView = dynamic_cast(sender()); +} + +void OCCViewer_ViewFrame::onDumpView() +{ + if (myPopupRequestedView) { + myPopupRequestedView->onDumpView(); + } + else { + getView(MAIN_VIEW)->onDumpView(); + } +} + +void OCCViewer_ViewFrame::setDropDownButtons( bool on ) +{ + foreach( OCCViewer_ViewWindow* aView, myViews ) { + aView->setDropDownButtons( on ); + } + OCCViewer_ViewWindow::setDropDownButtons( on ); +} + +QString OCCViewer_ViewFrame::getVisualParameters() +{ + QStringList params; + int maximizedView = 999; + for ( int i = BOTTOM_RIGHT; i <= TOP_RIGHT && i < myViews.count(); i++) { + if ( getView(i)->isVisible() ) + maximizedView = ( maximizedView != -1 ) ? ( maximizedView == 999 ? i : -1 ) : ( maximizedView ); + params << getView(i)->getVisualParameters(); + } + params.prepend( QString::number( maximizedView ) ); + return params.join( "|" ); +} + +void OCCViewer_ViewFrame::setVisualParameters( const QString& parameters ) +{ + QStringList params = parameters.split( "|" ); + if ( params.count() > 1 ) { + int maximizedView = params[0].toInt(); + if ( myViews.count() < params.count()-1 ) + onMaximizedView( getView(MAIN_VIEW), false ); // secondary views are not created yet, but should be + for ( int i = 1; i < params.count(); i++ ) { + int idx = i-1; + getView( idx )->setVisualParameters( params[i] ); + } + onMaximizedView( getView( maximizedView ), maximizedView != -1 ); // set proper sib-window maximized + } + else { + // handle obsolete versions - no parameters for xy, yz, xz views + getView(MAIN_VIEW)->setVisualParameters( parameters ); + } +} diff --git a/src/OCCViewer/OCCViewer_ViewFrame.h b/src/OCCViewer/OCCViewer_ViewFrame.h new file mode 100644 index 000000000..b00bc6a8b --- /dev/null +++ b/src/OCCViewer/OCCViewer_ViewFrame.h @@ -0,0 +1,135 @@ +// Copyright (C) 2007-2012 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 OCCVIEWER_VIEWFRAME_H +#define OCCVIEWER_VIEWFRAME_H + +#include "OCCViewer.h" +#include "OCCViewer_ViewWindow.h" + +#include + +class SUIT_Desktop; +class OCCViewer_Viewer; +class QGridLayout; + +class OCCVIEWER_EXPORT OCCViewer_ViewFrame : public OCCViewer_ViewWindow +{ + Q_OBJECT +public: + enum { MAIN_VIEW, BOTTOM_RIGHT=MAIN_VIEW, BOTTOM_LEFT, TOP_LEFT, TOP_RIGHT }; + + OCCViewer_ViewFrame(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel); + virtual ~OCCViewer_ViewFrame(); + + OCCViewer_ViewWindow* getView( const int ) const; + + virtual OCCViewer_ViewPort3d* getViewPort() { return getView(MAIN_VIEW)->getViewPort(); } + OCCViewer_ViewPort3d* getViewPort(int theView); + + virtual void performRestoring( const viewAspect& theAspect) { getView(MAIN_VIEW)->performRestoring(theAspect); } + virtual void initLayout() {} + + virtual void updateEnabledDrawMode(); + virtual void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0, + const double dx = 0, const double dy = 0, const double dz = 1); + + virtual void setCuttingPlane( bool on, const gp_Pln thePln ); + + virtual bool isCuttingPlane() { return getView(MAIN_VIEW)->isCuttingPlane(); } + + virtual QString getVisualParameters(); + virtual void setVisualParameters( const QString& parameters ); + + virtual void initSketchers() { getView(MAIN_VIEW)->initSketchers(); } + virtual OCCViewer_ViewSketcher* getSketcher( const int i) { return getView(MAIN_VIEW)->getSketcher(i); } + virtual void activateSketching( int i ) { getView(MAIN_VIEW)->activateSketching(i); } + + virtual int interactionStyle() const { return getView(MAIN_VIEW)->interactionStyle(); } + virtual void setInteractionStyle( const int i ); + + virtual int zoomingStyle() const { return getView(MAIN_VIEW)->zoomingStyle(); } + virtual void setZoomingStyle( const int ); + + virtual void setViewManager( SUIT_ViewManager* ); + + virtual bool eventFilter(QObject* watched, QEvent* e) { return SUIT_ViewWindow::eventFilter(watched, e); } + + virtual QColor backgroundColor() const; // obsolete + virtual void setBackgroundColor( const QColor& ); // obsolete + + virtual Qtx::BackgroundData background() const; + virtual void setBackground( const Qtx::BackgroundData& ); + + virtual void setDropDownButtons( bool ); + +public slots: + virtual void onFrontView() { getView(MAIN_VIEW)->onFrontView(); } + virtual void onViewFitAll(); + virtual void onBackView() { getView(MAIN_VIEW)->onBackView(); } + virtual void onTopView() { getView(MAIN_VIEW)->onTopView(); } + virtual void onBottomView() { getView(MAIN_VIEW)->onBottomView(); } + virtual void onLeftView() { getView(MAIN_VIEW)->onLeftView(); } + virtual void onRightView() { getView(MAIN_VIEW)->onRightView(); } + virtual void onClockWiseView() { getView(MAIN_VIEW)->onClockWiseView(); } + virtual void onAntiClockWiseView() { getView(MAIN_VIEW)->onAntiClockWiseView(); } + virtual void onResetView() { getView(MAIN_VIEW)->onResetView(); } + virtual void onFitAll(); + virtual void activateZoom() {} + virtual void activateWindowFit() {} + virtual void activateRotation() {} + virtual void activatePanning() {} + virtual void activateGlobalPanning() {} + virtual void onSetRotationPoint( bool on ) {} + virtual void onAxialScale() {} + virtual void onAmbientToogle() {} + virtual void onMemorizeView() {} + virtual void onRestoreView() {} + virtual void onSwitchInteractionStyle( bool on ) {} + + virtual void activateSetRotationGravity() {} + virtual void activateSetRotationSelected( double theX, double theY, double theZ ) {} + virtual void activateStartPointSelection() {} + virtual void updateGravityCoords() {} + + void onMaximizedView( OCCViewer_ViewWindow*, bool ); + + virtual void onDumpView(); + +protected: + virtual QImage dumpView(); + virtual bool dumpViewToFormat( const QImage&, const QString&, const QString& ); + +private slots: + void onContextMenuRequested(QContextMenuEvent*); + +private: + void connectViewSignals(OCCViewer_ViewWindow* theView); + + + QList myViews; + QGridLayout* myLayout; + + OCCViewer_ViewWindow* myPopupRequestedView; +}; + +#endif diff --git a/src/OCCViewer/resources/OCCViewer_msg_fr.ts b/src/OCCViewer/resources/OCCViewer_msg_fr.ts new file mode 100755 index 000000000..843d08b77 --- /dev/null +++ b/src/OCCViewer/resources/OCCViewer_msg_fr.ts @@ -0,0 +1,442 @@ + + + + + @default + + MNU_FRONT_VIEW + Avant + + + ERROR + Erreur + + + MNU_DUMP_VIEW + Sauvegarder la scène + + + DSC_TOP_VIEW + Vue de dessus + + + MNU_PAN_VIEW + Panoramique + + + MNU_CLONE_VIEW + Dupliquer la scène + + + DSC_SHOW_TRIHEDRE + Afficher/cacher le trièdre dans la scène + + + MNU_SHOW_TRIHEDRE + Afficher/cacher le trièdre + + + MNU_TOP_VIEW + Dessus + + + DSC_GLOBALPAN_VIEW + Sélection d'un nouveau centre de vue + + + DSC_ROTATE_VIEW + Tourner le point de vue autour du centre de la scène + + + MNU_ZOOM_VIEW + Zoom + + + DSC_PAN_VIEW + Déplacer la vue + + + DSC_LEFT_VIEW + Vue de gauche + + + DSC_SHOOT_VIEW + Memoriser l'état courant de la scène et l'ajouter dans la liste + + + DSC_FITALL + Redimentionner la scène pour montrer tous les objets + + + MNU_FITALL + Tout afficher + + + MNU_ROTATE_VIEW + Rotation + + + DSC_FRONT_VIEW + Vue de devant + + + MNU_ROTATIONPOINTGRAVITY_VIEW + Point de Rotation : le centre de gravité + + + MNU_GLOBALPAN_VIEW + Panoramique global + + + INF_APP_DUMP_VIEW + Sauvegarder la vue + + + DSC_CLIPPING + Définir le plan de coupe + + + DSC_CLONE_VIEW + Ouvrir une nouvelle fenêtre de visualisation pour la scène en cours + + + INF_APP_SHOOT_VIEW + Mémoriser la scène + + + MNU_CLIPPING + Plan de coupe + + + MNU_BACK_VIEW + Arrière + + + MNU_SHOOT_VIEW + Memoriser la vue + + + DSC_CHANGINGROTATIONPOINT_VIEW + Changer le point autour duquel la scène est tournée + + + MNU_BOTTOM_VIEW + Dessous + + + MNU_RESET_VIEW + Restaurer le point de vue + + + MNU_LEFT_VIEW + Gauche + + + DSC_RIGHT_VIEW + Vue de droite + + + DSC_ANTICLOCKWISE_VIEW + Tourner la vue à gauche + + + DSC_CLOCKWISE_VIEW + Tourner la vue à droite + + + MNU_CHANGINGROTATIONPOINT_VIEW + Changer le point de rotation + + + DSC_FITRECT + Redimensionner la scène pour ne montrer que sa partie choisie par l'encadré + + + MNU_FITRECT + Afficher la zone + + + DSC_BOTTOM_VIEW + Vue de dessous + + + DSC_DUMP_VIEW + Sauvegarder la scène en cours dans un fichier image + + + DSC_ZOOM_VIEW + Zoom la vue + + + MNU_ROTATIONPOINT000_VIEW + Point de Rotation : (0,0,0) + + + MNU_ROTATIONPOINTSELECTED_VIEW + Point de Rotation : le point choisi par l'utilisateur + + + DSC_RESET_VIEW + Restaurer le point de vue + + + ERR_DOC_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + DSC_PRESETS_VIEW + Restaurer d'un état mémorisé de la scène courante + + + MNU_PRESETS_VIEW + Restaurer la vue + + + MNU_ANTICLOCKWISE_VIEW + Tourner à gauche + + + MNU_CLOCKWISE_VIEW + Tourner à droite + + + MNU_RIGHT_VIEW + Droit + + + INF_APP_PRESETS_VIEW + Restaurer la scène + + + LBL_XYTOOLBAR_LABEL + Opérations sur la vue XY + + + LBL_XZTOOLBAR_LABEL + Opérations sur la vue XZ + + + LBL_YZTOOLBAR_LABEL + Opérations sur la vue YZ + + + LBL_3DTOOLBAR_LABEL + Opérations sur la vue 3D + + + DSC_BACK_VIEW + Vue arrière + + + DSC_SCALING + Changer l'échelle des axes de coordonnées + + + MNU_SCALING + Changer l'échelle + + + DSC_GRADUATED_AXES + Axes gradués + + + MNU_GRADUATED_AXES + Axes gradués + + + DSC_AMBIENT + Ne montrer que la lumière d'ambiance + + + MNU_AMBIENT + Ne montrer que la lumière d'ambiance + + + DSC_STYLE_SWITCH + Changer le style d'intéraction + + + MNU_STYLE_SWITCH + Changer le style d'intéraction + + + DSC_ZOOMING_STYLE_SWITCH + Changer le style de zoom + + + MNU_ZOOMING_STYLE_SWITCH + Changer le style de zoom + + + OCC_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg *.eps *.ps) + + + OCC_TEXTURE_FILES + Fichiers images (*.bmp *.gif *.pix *.xwd *.rgb *.rs) + + + DSC_MAXIMIZE_VIEW + Maximiser la vue + + + DSC_MINIMIZE_VIEW + Minimiser la vue + + + DSC_SYNCHRONIZE_VIEW + Synchroniser la vue + + + MNU_MAXIMIZE_VIEW + Maximiser + + + MNU_MINIMIZE_VIEW + Minimiser + + + MNU_SYNCHRONIZE_VIEW + Synchroniser + + + MNU_SYNC_NO_VIEW + [ Pas de vue appropriée ] + + + + OCCViewer_CreateRestoreViewDlg + + CAPTION + Restaurer la vue + + + + OCCViewer_SetRotationPointDlg + + LBL_X + X: + + + LBL_Y + Y: + + + LBL_Z + Z: + + + USE_BBCENTER + Utiliser le centre de la boîte englobante + + + LBL_TOORIGIN + Définir à l'origine + + + CAPTION + Indiquer le point de rotation + + + LBL_SELECTPOINT + Choisir le point dans la vue + + + + OCCViewer_ViewManager + + OCC_VIEW_TITLE + Scène OCC :%M - visualiseur:%V + + + + OCCViewer_Viewer + + MEN_DUMP_VIEW + Sauvegarder la vue + + + MEN_SHOW_TOOLBAR + Montrer la Barre d'Outils + + + MEN_CHANGE_BACKGROUND + Changer l'arrière-plan + + + MEN_CHANGE_IMAGE + Régler/Changer l''image d'arrière-plan... + + + SELECT_IMAGE + Sélectionner l'image + + + CENTERED + en mode centré + + + TILED + en mode pavé + + + STRETCHED + en mode étiré + + + GT_HORIZONTALGRADIENT + Gradient horizontal + + + GT_VERTICALGRADIENT + Gradient vertical + + + GT_FIRSTDIAGONALGRADIENT + Gradient de la première diagonale + + + GT_SECONDDIAGONALGRADIENT + Gradient de la seconde diagonale + + + GT_FIRSTCORNERGRADIENT + Gradient du premier coin + + + GT_SECONDCORNERGRADIENT + Gradient du second coin + + + GT_THIRDCORNERGRADIENT + Gradient du troisième coin + + + GT_FORTHCORNERGRADIENT + Gradient du quatrième coin + + + BG_IMAGE_FILES + Fichiers images (*.bmp *.gif *.pix *.xwd *.rgb *.rs) + + + + OCCViewer_AxialScaleDlg + + DLG_SCALING + Changer l'échelle des axes + + + LBL_X + X: + + + LBL_Y + Y: + + + LBL_Z + Z: + + + diff --git a/src/OCCViewer/resources/occ_view_ambient.png b/src/OCCViewer/resources/occ_view_ambient.png new file mode 100644 index 0000000000000000000000000000000000000000..7f411531766ea57ea588e7203b346f54b70eae2c GIT binary patch literal 1435 zcmV;M1!Ve(P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>5lKWrRCwBA{Qv(y0|Uc;W+1@^#N0qE2*jd5EM8W& zeciu*{}_J!_`&e`^Jj*4@7{s&(W5OvK>3$I{2GYg1MycN{>8xH_!l6682|s@#|Y%G z0x>7lFbN=*DK6f!y0^EN0R*0Z{l@SQXt6X8H<&LYBg1h0`phU^UatE`GdGdsTkI!e>$B$nnp?Wx> zW-tN-5X?XpAZCYpS>P*FBPclj1HJs`KM4N^^WOu#{`2Qgu>74nPnBN2d@lgi3o?Td zAb^lv2ns_^FR$*!ixw?n`1}px&DX#GGW-F$?hnvl5dRa5=e5EBCgfD8q(Szf+;2^Ihu^!nEyhE>a!0KNNV3|~HdVlXf^X88L17g*ihyU&Dv|Ng_Rq$CM4g8?9bSfGae1x5S9g*&B-i~U!z zv$KbR!U<&9zCC*wf}^4tzI^_~@CztrYGKL1{N)ovYI-_DZ*S&`7cbtifm0sDjQ;=u z1T*lDx_W%0wjO)DwY4O}uV23ye*gXrcBP$z1H-QE+ZpcPzQtf|XV38T@goMNFQ36C zeEs_4%b!1g-!d{Xd;ysOG7BJpK;ibEm)EP#((YsY!qtBnlCr-u+j|?9_eqy+AErNlQlaoPLLX3f#nHd_ce;M-f@)#B_tl0eF!9 zf(>F}VPRkb8p_NBG5E)iUtgJ+m>x+;2;Z1Lf4j1U4HLtKv$sAlGBWZ41Q5u}DvHVs z4AUq6W?*II$TK#ybv$!Sc-rqD@(VaPIKTz~HG|UxPy?9%@8ACqQc}YAyuHmIzIydR zR#lym!Nmh?nFl}sfn50ID=T;1!7$w z_7xKo`ws&B{r&%4U0whC`uc)W#D6_KrK5#~p%M4*FOvX<#Q&Sm+5bnxGK1t|0Ro5- zls|!9kprbepds&oG%wU9IaXG;oqm3P47cxXU13N z(<0)2W_3+wWpFnC#c=l2KXZTpf)oI7ypIKl1%Oxyh^;}cIdS5|e{LRz|1Z9A{QvMD zg7ZpQ{wt|4{!h+i28&;L$o?PXQc!*d2q1I=nSq!ah$TVZK74p$6g1)g-?WzvZXi02 zN&tJe0%Qh205LJ3g8$GI{{x6We);nKSzB95nY6UXoj0%lGc;EI0eK6q7?`0LI-CA5 zEL-q*I?%8VkQhJ!v0yRqFVsK=F)@J$!0=@f7UtW#am{;`GsgwDOzr!qDJJn#SwxhP p;rY}53@=~&p9oai0W$y~zyQ_0WlB6gqLcst002ovPDHLkV1go8n*0C& literal 0 HcmV?d00001 diff --git a/src/OCCViewer/resources/occ_view_anticlockwise.png b/src/OCCViewer/resources/occ_view_anticlockwise.png new file mode 100644 index 0000000000000000000000000000000000000000..991586fe6d877a528f2afa6647ccfcc5d92bd742 GIT binary patch literal 936 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 + + + + OB_Browser + + MEN_EXPAND_ALL + Tout déplier + + + MEN_COLLAPSE_ALL + Tout réduire + + + MEN_FIND + Chercher + + + + OB_FindDlg + + FIND + Chercher + + + CLOSE + Fermer + + + CASE_SENSITIVE + Sensible à la casse + + + IS_REG_EXP + Expression régulière + + + diff --git a/src/Plot2d/Plot2d_Algorithm.cxx b/src/Plot2d/Plot2d_Algorithm.cxx new file mode 100755 index 000000000..b96e411dc --- /dev/null +++ b/src/Plot2d/Plot2d_Algorithm.cxx @@ -0,0 +1,72 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Algorithm.cxx + +#include "Plot2d_Algorithm.h" + +/*! + Constructor +*/ +Plot2d_Algorithm::Plot2d_Algorithm(QObject *parent) : + QObject(parent), + myDataChanged(false) +{ +} + +/*! + Destructor +*/ +Plot2d_Algorithm::~Plot2d_Algorithm() +{ +} + +/*! + Sets input data values +*/ +void Plot2d_Algorithm::setInput(AlgoPlot2dInputData theInuptData) +{ + clear(); + myInuptData = theInuptData; + myDataChanged = true; +} + +/*! + Gets result data values +*/ +AlgoPlot2dOutputData Plot2d_Algorithm::getOutput() +{ + return myResultData; +} + +/*! + Check the data values changed +*/ +bool Plot2d_Algorithm::isDataChanged() +{ + return myDataChanged; +} + +void Plot2d_Algorithm::clear() { + myDataChanged=false; + myInuptData.clear(); + myResultData.clear(); +} diff --git a/src/Plot2d/Plot2d_Algorithm.h b/src/Plot2d/Plot2d_Algorithm.h new file mode 100755 index 000000000..e8a49e84b --- /dev/null +++ b/src/Plot2d/Plot2d_Algorithm.h @@ -0,0 +1,58 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Algorithm.h + +#ifndef PLOT2D_ALGORITHM_H +#define PLOT2D_ALGORITHM_H + +#include "Plot2d.h" + +#include +#include +#include + +class Plot2d_Object; + +typedef QList< QPair > AlgoPlot2dItem; +typedef QList AlgoPlot2dInputData; +typedef QMap AlgoPlot2dOutputData; + +class PLOT2D_EXPORT Plot2d_Algorithm : public QObject { + Q_OBJECT +public: + Plot2d_Algorithm(QObject *parent = 0); + ~Plot2d_Algorithm(); + + void setInput(AlgoPlot2dInputData); + AlgoPlot2dOutputData getOutput(); + virtual void execute() = 0; + virtual void clear(); + + bool isDataChanged(); + +protected: + AlgoPlot2dInputData myInuptData; + AlgoPlot2dOutputData myResultData; + bool myDataChanged; +}; + +#endif //PLOT2D_ALGORITHM_H diff --git a/src/Plot2d/Plot2d_AnalyticalCurve.cxx b/src/Plot2d/Plot2d_AnalyticalCurve.cxx new file mode 100755 index 000000000..e47fc3f1b --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalCurve.cxx @@ -0,0 +1,512 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalCurve.cxx +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) + +#include "Plot2d_AnalyticalParser.h" +#include "Plot2d_AnalyticalCurve.h" +#include "Plot2d_PlotItems.h" +#include "Plot2d_Object.h" + +#include + + +//Init static data; + +int Plot2d_AnalyticalCurve::myNbCurves = 0; + +/*! + Constructor +*/ +Plot2d_AnalyticalCurve::Plot2d_AnalyticalCurve() : + myAutoAssign(true), + myColor( 0, 0, 0 ), + myMarker( Plot2d::Circle ), + myMarkerSize( 0 ), + myLine( Plot2d::Solid ), + myLineWidth( 0 ), + myRangeBegin(0.0), + myRangeEnd(100.0), + myNbIntervals(100), + myExpression(""), + myAction(Plot2d_AnalyticalCurve::ActAddInView), + myState(Plot2d_AnalyticalCurve::StateNeedUpdate), + myCurve(0), + myActive(true), + myIsSelected(false) +{ + myName = QString("Analytical Curve %1").arg(++myNbCurves); +} + + +/*! + Destructor +*/ +Plot2d_AnalyticalCurve::~Plot2d_AnalyticalCurve() +{ +} + +/*! + Copy constructor. Makes deep copy of data +*/ +Plot2d_AnalyticalCurve::Plot2d_AnalyticalCurve( const Plot2d_AnalyticalCurve& curve ) +{ + myAutoAssign = curve.isAutoAssign(); + myColor = curve.getColor(); + myMarker = curve.getMarker(); + myMarkerSize = curve.getMarkerSize(); + myLine = curve.getLine(); + myLineWidth = curve.getLineWidth(); + myRangeBegin = curve.getRangeBegin(); + myRangeEnd = curve.getRangeEnd(); + myNbIntervals= curve.getNbIntervals(); + myPoints = curve.myPoints; + myAction = curve.getAction(); + myName = curve.getName(); + myExpression = curve.getExpression(); + myState = curve.state(); + myCurve = curve.myCurve; + myActive = curve.isActive(); +} + +/*! + operator=. Makes deep copy of data +*/ +Plot2d_AnalyticalCurve& Plot2d_AnalyticalCurve::operator=( const Plot2d_AnalyticalCurve& curve ) +{ + myAutoAssign = curve.isAutoAssign(); + myColor = curve.getColor(); + myMarker = curve.getMarker(); + myMarkerSize = curve.getMarkerSize(); + myLine = curve.getLine(); + myLineWidth = curve.getLineWidth(); + myRangeBegin = curve.getRangeBegin(); + myRangeEnd = curve.getRangeEnd(); + myNbIntervals= curve.getNbIntervals(); + myPoints = curve.myPoints; + myAction = curve.getAction(); + myName = curve.getName(); + myExpression = curve.getExpression(); + myState = curve.state(); + myCurve = curve.myCurve; + myActive = curve.isActive(); + return *this; +} + +/*! + Create plot object for the curve +*/ +QwtPlotItem* Plot2d_AnalyticalCurve::plotItem() +{ + if(!myCurve) { + myCurve = new Plot2d_QwtPlotCurve(QString("")); + updatePlotItem(); + } + return myCurve; +} + +/*! + Auto fill parameters of object by plot view +*/ +void Plot2d_AnalyticalCurve::autoFill( const QwtPlot* thePlot ) +{ + QwtSymbol::Style typeMarker; + QColor color; + Qt::PenStyle typeLine; + Plot2d::getNextMarker( QwtPlotItem::Rtti_PlotCurve, thePlot, typeMarker, color, typeLine ); + + setColor( color ); + setLine( Plot2d::qwt2plotLine( typeLine )); + setLineWidth(1); + setMarker( Plot2d::qwt2plotMarker( typeMarker ) ); +} + +/*! + Updates curve fields +*/ +void Plot2d_AnalyticalCurve::updatePlotItem() +{ + if ( !myCurve ) + return; + + Plot2d_QwtPlotCurve* aCurve = dynamic_cast(myCurve); + + if(!aCurve) + return; + + Qt::PenStyle ps = Plot2d::plot2qwtLine( getLine() ); + QwtSymbol::Style ms = Plot2d::plot2qwtMarker( getMarker() ); + + QColor aColor = isSelected() ? Plot2d_Object::selectionColor() : getColor(); + int lineW = getLineWidth(); + if ( isSelected() ) lineW += (lineW == 0 ? 3 : 2); + + int markerS = isSelected() ? getMarkerSize() + 2 : getMarkerSize(); + + aCurve->setSelected(isSelected()); + + aCurve->setPen( QPen(aColor , lineW, ps ) ); + aCurve->setSymbol( QwtSymbol( ms, QBrush( aColor ), + QPen( aColor ), + QSize( markerS , markerS ) ) ); + + aCurve->setLegendPen(QPen(getColor(), getLineWidth(), ps )); + aCurve->setLegendSymbol( QwtSymbol( ms, QBrush( getColor() ), + QPen( getColor() ), + QSize( getMarkerSize() , getMarkerSize() ))); + + double *x, *y; + long nb = getData( &x, &y ); + aCurve->setData( x, y, nb ); + aCurve->setTitle(getName()); +} + + +/*! + Calculate the curve points. +*/ +void Plot2d_AnalyticalCurve::calculate() { + if( state() == Plot2d_AnalyticalCurve::StateOk ) + return; + + if(myRangeBegin > myRangeEnd) + return; + + Plot2d_AnalyticalParser* parser = Plot2d_AnalyticalParser::parser(); + double* x = 0; + double* y = 0; + int nb = parser->calculate(getExpression(), getRangeBegin(), getRangeEnd(), + getNbIntervals(),&x,&y); + if( nb > 0 ) { + myPoints.clear(); + for( int i = 0; i < nb; i++ ) { + Plot2d_Point pnt(x[i], y[i]); + myPoints.append(pnt); + } + delete x; + delete y; + myState = Plot2d_AnalyticalCurve::StateOk; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} +/*! + Checks that this curve can be computed for the input QwtPlot +*/ +bool Plot2d_AnalyticalCurve::checkCurve( const QwtPlot* thePlot) { + if( !myExpression.isEmpty() && thePlot ) { + const QwtScaleDiv* div = thePlot->axisScaleDiv(QwtPlot::xBottom); + setRangeBegin(div->lowerBound()); + setRangeEnd(div->upperBound()); + calculate(); + } + return myState == Plot2d_AnalyticalCurve::StateOk; +} + + +/*! + Gets object's data +*/ +long Plot2d_AnalyticalCurve::getData( double** theX, double** theY ) const +{ + int aNPoints = myPoints.size(); + *theX = new double[aNPoints]; + *theY = new double[aNPoints]; + for (int i = 0; i < aNPoints; i++) { + (*theX)[i] = myPoints[i].x; + (*theY)[i] = myPoints[i].y; + } + return aNPoints; +} + +/*! + Sets curves's AutoAssign flag - in this case attributes will be set automatically +*/ +void Plot2d_AnalyticalCurve::setAutoAssign( bool on ) +{ + if( myAutoAssign != on ) { + myAutoAssign = on; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets curve's AutoAssign flag state +*/ +bool Plot2d_AnalyticalCurve::isAutoAssign() const +{ + return myAutoAssign; +} + +/*! + Sets curve's color. +*/ +void Plot2d_AnalyticalCurve::setColor( const QColor& color ) +{ + if(myColor != color) { + myColor = color; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets curve's color +*/ +QColor Plot2d_AnalyticalCurve::getColor() const +{ + return myColor; +} + + +/*! + Sets marker type ( and resets AutoAssign flag ) +*/ +void Plot2d_AnalyticalCurve::setMarker( Plot2d::MarkerType marker ) +{ + if(myMarker != marker) { + myMarker = marker; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets marker type +*/ +Plot2d::MarkerType Plot2d_AnalyticalCurve::getMarker() const +{ + return myMarker; +} + +/*! + Sets new marker size +*/ +void Plot2d_AnalyticalCurve::setMarkerSize( const int theSize ) +{ + if( myMarkerSize != theSize ) { + myMarkerSize = theSize < 0 ? 0 : theSize; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets marker size +*/ +int Plot2d_AnalyticalCurve::getMarkerSize() const +{ + return myMarkerSize; +} + +/*! + Sets line type +*/ +void Plot2d_AnalyticalCurve::setLine( Plot2d::LineType line ) +{ + if(myLine != line) { + myLine = line; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets line type +*/ +Plot2d::LineType Plot2d_AnalyticalCurve::getLine() const +{ + return myLine; +} + + +/*! + Sets line width +*/ +void Plot2d_AnalyticalCurve::setLineWidth( const int lineWidth ) +{ + if( myLineWidth != lineWidth ) { + myLineWidth = lineWidth < 0 ? 0 : lineWidth; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets line width +*/ +int Plot2d_AnalyticalCurve::getLineWidth() const +{ + return myLineWidth; +} + +/*! + Sets number of points +*/ +void Plot2d_AnalyticalCurve::setNbIntervals( const long nb ) +{ + if( myNbIntervals != nb ) { + myNbIntervals = nb < 1 ? 1 : nb; + myState = Plot2d_AnalyticalCurve::StateNeedUpdate; + } +} + +/*! + Gets number of points +*/ +long Plot2d_AnalyticalCurve::getNbIntervals() const +{ + return myNbIntervals; +} + +/*! + Sets X coordinate of the first curve points +*/ +void Plot2d_AnalyticalCurve::setRangeBegin( const double coord) { + if( myRangeBegin != coord ) { + myRangeBegin = coord; + myState = Plot2d_AnalyticalCurve::StateNeedUpdate; + } +} + +/*! + Gets X coordinate of the first curve points +*/ +double Plot2d_AnalyticalCurve::getRangeBegin() const { + return myRangeBegin; +} + +/*! + Sets X coordinate of the last curve points +*/ +void Plot2d_AnalyticalCurve::setRangeEnd( const double coord) { + if( myRangeEnd != coord ) { + myRangeEnd = coord; + myState = Plot2d_AnalyticalCurve::StateNeedUpdate; + } +} + +/*! + Gets X coordinate of the last curve points +*/ +double Plot2d_AnalyticalCurve::getRangeEnd() const { + return myRangeEnd; +} + +/*! + Sets the curve expression. +*/ +void Plot2d_AnalyticalCurve::setExpression( const QString& expr ) { + if( myExpression != expr ) { + myExpression = expr; + myState = Plot2d_AnalyticalCurve::StateNeedUpdate; + } +} + +/*! + Gets the curve expression. +*/ +QString Plot2d_AnalyticalCurve::getExpression() const { + return myExpression; +} + +/*! + Sets the curve name. +*/ +void Plot2d_AnalyticalCurve::setName( const QString& name ) { + if( myName != name ) { + myName = name; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } +} + +/*! + Gets the curve name. +*/ +QString Plot2d_AnalyticalCurve::getName() const { + return myName; +} + + +/*! + Sets the curve action. +*/ +void Plot2d_AnalyticalCurve::setAction(const int act) { + if( act == Plot2d_AnalyticalCurve::ActNothing ) { + myAction = act; + return; + } + + if(myAction != Plot2d_AnalyticalCurve::ActAddInView && + myAction != Plot2d_AnalyticalCurve::ActRemoveFromView) { + myAction = act; + } +} + +/*! + Gets the curve action. +*/ +int Plot2d_AnalyticalCurve::getAction() const { + return myAction; +} + +/*! + Gets the curve state. +*/ +int Plot2d_AnalyticalCurve::state() const { + return myState; +} + +/*! + Sets the curve active status. +*/ +void Plot2d_AnalyticalCurve::setActive(const bool on) { + if( myActive != on ) { + if(myActive && !on) + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + else if(!myActive && on) { + setAction(Plot2d_AnalyticalCurve::ActAddInView); + myState = Plot2d_AnalyticalCurve::StateNeedUpdate; + } + myActive = on; + } +} + +/*! + Gets the curve active status. +*/ +bool Plot2d_AnalyticalCurve::isActive() const { + return myActive; +} + + +/*! + Sets curve's selected property. +*/ +void Plot2d_AnalyticalCurve::setSelected(const bool on) { + if(myIsSelected != on) { + myIsSelected = on; + setAction(Plot2d_AnalyticalCurve::ActUpdateInView); + } + +} + +/*! + Gets curve's selected property. +*/ +bool Plot2d_AnalyticalCurve::isSelected() const { + return myIsSelected; +} diff --git a/src/Plot2d/Plot2d_AnalyticalCurve.h b/src/Plot2d/Plot2d_AnalyticalCurve.h new file mode 100755 index 000000000..2cb0f3499 --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalCurve.h @@ -0,0 +1,156 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalCurve.h +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) + +#ifndef PLOT2D_ANALYTICAL_CURVE_H +#define PLOT2D_ANALYTICAL_CURVE_H + +#include "Plot2d.h" + + +class QwtPlot; +class QwtPlotItem; + + +class PLOT2D_EXPORT Plot2d_AnalyticalCurve +{ +public: + + /* + Action enumeration. + */ + enum { + ActAddInView = 0, //! Add curve in view + ActRemoveFromView, //! Remove curve from view + ActUpdateInView, //! Update curve in view + ActNothing //! Do nothing + }; + + /* + State enumeration. + */ + enum { + StateOk = 0, + StateNeedUpdate + }; + + Plot2d_AnalyticalCurve(); + Plot2d_AnalyticalCurve( const Plot2d_AnalyticalCurve& ); + Plot2d_AnalyticalCurve& operator= ( const Plot2d_AnalyticalCurve& ); + + virtual ~Plot2d_AnalyticalCurve(); + + virtual QwtPlotItem* plotItem(); + virtual void autoFill( const QwtPlot* ); + virtual void updatePlotItem(); + virtual bool checkCurve( const QwtPlot* ); + + virtual void calculate(); + + long getData( double** , double** ) const; + + void setSelected(const bool); + bool isSelected() const; + + + + void setAutoAssign( bool ); + bool isAutoAssign( ) const; + + void setColor( const QColor& ); + QColor getColor() const; + + void setMarker( Plot2d::MarkerType ); + Plot2d::MarkerType getMarker() const; + + void setMarkerSize( const int ); + int getMarkerSize() const; + + void setLine( Plot2d::LineType ); + Plot2d::LineType getLine() const; + + void setLineWidth( const int ); + int getLineWidth() const; + + void setNbIntervals( const long ); + long getNbIntervals() const; + + void setRangeBegin( const double ); + double getRangeBegin() const; + + void setRangeEnd( const double ); + double getRangeEnd() const; + + void setExpression( const QString& ); + QString getExpression() const; + + void setName( const QString& ); + QString getName() const; + + void setActive(const bool); + bool isActive() const; + + void setAction(const int); + int getAction() const; + int state() const; + + +protected: + + bool myAutoAssign; + QColor myColor; + Plot2d::MarkerType myMarker; + int myMarkerSize; + Plot2d::LineType myLine; + int myLineWidth; + long myNbIntervals; + pointList myPoints; + double myRangeBegin; + double myRangeEnd; + QString myExpression; + QString myName; + int myAction; + int myState; + QwtPlotItem* myCurve; + bool myActive; + bool myIsSelected; + +private: + static int myNbCurves; + +}; + +typedef QList AnalyticalCurveList; + +class PLOT2D_EXPORT Plot2d_CurveContainer +{ +public: + virtual void addAnalyticalCurve( Plot2d_AnalyticalCurve* ) = 0; + virtual void removeAnalyticalCurve( Plot2d_AnalyticalCurve* ) = 0; + virtual void updateAnalyticalCurve( Plot2d_AnalyticalCurve*, bool = false ) = 0; + virtual void updateAnalyticalCurves() = 0; + virtual AnalyticalCurveList getAnalyticalCurves() const = 0; +}; + +#endif //PLOT2D_ANALYTICAL_CURVE_H + diff --git a/src/Plot2d/Plot2d_AnalyticalCurveDlg.cxx b/src/Plot2d/Plot2d_AnalyticalCurveDlg.cxx new file mode 100755 index 000000000..81e954d2c --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalCurveDlg.cxx @@ -0,0 +1,705 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalCurveDlg.cxx +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) + + + +// TODO : check what happens if invalid formula is given, e.g. x/0 +// TODO : check what happens if curve formala is valid in general but some there are some problems with calculating (e.g. logarithmic formulas and negative x) + +//Local includes +#include "Plot2d_AnalyticalCurveDlg.h" +#include "Plot2d_AnalyticalCurve.h" +#include "Plot2d_ViewFrame.h" + +//Qtx includes +#include +#include + +//SUIT includes +#include +#include +#include + +//Qt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//qwt includes +#include + +// Controls +const int MIN_NB_INTERVALS = 1; +const int MAX_NB_INTERVALS = 10000; +const int STEP = 1; +const int MIN_LINE_WIDTH = 0; +const int MAX_LINE_WIDTH = 10; + +const char* PROP_TITLE = "title"; +const char* PROP_VISIBLE = "visible"; +const char* PROP_STATUS = "status"; +const char* PROP_FORMULA = "formula"; +const char* PROP_NBINTERVALS = "nb_intervals"; +const char* PROP_AUTOASSIGN = "auto_assign"; +const char* PROP_MARKERTYPE = "marker_type"; +const char* PROP_LINETYPE = "line_type"; +const char* PROP_LINEWIDTH = "line_width"; +const char* PROP_COLOR = "color"; + +/* + \class Plot2d_AnalyticalCurveDlg::UpdateLocker + \brief Update locker class + \internal +*/ +class Plot2d_AnalyticalCurveDlg::UpdateLocker +{ +public: + UpdateLocker( QObject* ); + ~UpdateLocker(); +private: + QObject* myObject; + bool myLocked; +}; + +Plot2d_AnalyticalCurveDlg::UpdateLocker::UpdateLocker( QObject* object ) : myObject( object ) +{ + myLocked = myObject->blockSignals( true ); +} + +Plot2d_AnalyticalCurveDlg::UpdateLocker::~UpdateLocker() +{ + myObject->blockSignals( myLocked ); +} + +/* + \class Plot2d_AnalyticalCurveDlg::Updater + \brief Auxiliary class used for handle update requests from sub-widgets + \internal +*/ + +Plot2d_AnalyticalCurveDlg::Updater::Updater( QWidget* parent ) : QObject( parent ) +{/*nothing to do*/} + +Plot2d_AnalyticalCurveDlg::Updater::~Updater() +{/*nothing to do*/} + +/*! + Constructor +*/ +Plot2d_AnalyticalCurveDlg::Plot2d_AnalyticalCurveDlg( Plot2d_CurveContainer* container, QWidget* parent ) + : QDialog( parent ), myContainer( container ) +{ + setModal( true ); + setWindowTitle( tr( "ANALYTICAL_CURVE_TLT" ) ); + setSizeGripEnabled( true ); + + // Curves list widget + myCurvesList = new QListWidget( this ); + myCurvesList->setSelectionMode( QAbstractItemView::SingleSelection ); + + // Curve parameters group box + myCurveParams = new QGroupBox( tr( "AC_CURVE_PARAMS" ), this ); + + QLabel* formulaLabel = new QLabel( tr( "AC_FORMULA" ), myCurveParams ); + myFormula = new QLineEdit( myCurveParams ); + QLabel* nbIntervalsLabel = new QLabel( tr( "AC_NB_INTERVALS" ), myCurveParams ); + myNbIntervals = new QtxIntSpinBox( MIN_NB_INTERVALS, MAX_NB_INTERVALS, STEP, myCurveParams ); + + QGridLayout* paramsLayout = new QGridLayout( myCurveParams ); + paramsLayout->addWidget( formulaLabel, 0, 0 ); + paramsLayout->addWidget( myFormula, 0, 1 ); + paramsLayout->addWidget( nbIntervalsLabel, 1, 0 ); + paramsLayout->addWidget( myNbIntervals, 1, 1 ); + + // Curve properties group box + myCurveProps = new QGroupBox( tr( "AC_CURVE_PROPS" ), this ); + + myAutoAssign = new QCheckBox( tr( "AC_AUTO_ASSIGN" ), myCurveProps ); + myPropsGrp = new QWidget( myCurveProps ); + QLabel* markerLabel = new QLabel( tr( "AC_MARKER_TYPE" ), myPropsGrp ); + myMarkerType = new QComboBox( myPropsGrp ); + QLabel* lineTypeLabel = new QLabel( tr( "AC_LINE_TYPE" ), myPropsGrp ); + myLineType = new QComboBox( myPropsGrp ); + QLabel* lineWidthLabel = new QLabel( tr( "AC_LINE_WIDTH" ), myPropsGrp ); + myLineWidth = new QtxIntSpinBox( MIN_LINE_WIDTH, MAX_LINE_WIDTH, STEP, myPropsGrp ); + QLabel* colorLabel = new QLabel( tr("AC_CURVE_COLOR"), myPropsGrp ); + myColor = new QtxColorButton( myPropsGrp ); + + QGridLayout* propsGrpLayout = new QGridLayout( myPropsGrp ); + propsGrpLayout->addWidget( markerLabel, 0, 0 ); + propsGrpLayout->addWidget( myMarkerType, 0, 1 ); + propsGrpLayout->addWidget( lineTypeLabel, 1, 0 ); + propsGrpLayout->addWidget( myLineType, 1, 1 ); + propsGrpLayout->addWidget( lineWidthLabel, 2, 0 ); + propsGrpLayout->addWidget( myLineWidth, 2, 1 ); + propsGrpLayout->addWidget( colorLabel, 3, 0 ); + propsGrpLayout->addWidget( myColor, 3, 1 ); + + QVBoxLayout* propsLayout = new QVBoxLayout( myCurveProps ); + propsLayout->addWidget( myAutoAssign ); + propsLayout->addWidget( myPropsGrp ); + + // Add && Remove buttons + myAddButton = new QPushButton( tr("AC_ADD_BTN"), this ); + myAddButton->setAutoDefault( true ); + myRemoveButton = new QPushButton( tr("AC_REM_BTN"), this ); + myRemoveButton->setAutoDefault( true ); + + // OK, Apply, Close, Help buttons + QPushButton* okButton = new QPushButton( tr( "AC_OK_BTN" ), this ); + okButton->setDefault( true ); + okButton->setAutoDefault( true ); + + QPushButton* applyButton = new QPushButton( tr( "AC_APPLY_BTN" ), this ); + applyButton->setAutoDefault( true ); + + QPushButton* cancelButton = new QPushButton( tr( "AC_CLOSE_BTN" ), this ); + cancelButton->setAutoDefault( true ); + QPushButton* helpButton = new QPushButton( tr( "AC_HELP_BTN" ), this ); + helpButton->setAutoDefault( true ); + QHBoxLayout* btnLayout = new QHBoxLayout; + btnLayout->addWidget( okButton ); + btnLayout->addWidget( applyButton ); + btnLayout->addStretch(); + btnLayout->addWidget( cancelButton ); + btnLayout->addWidget( helpButton ); + + QGridLayout* mainLayout = new QGridLayout( this ); + mainLayout->addWidget( myCurvesList, 0, 0, 3, 1 ); + mainLayout->addWidget( myCurveParams, 0, 1, 1, 2 ); + mainLayout->addWidget( myCurveProps, 1, 1, 1, 2 ); + mainLayout->addWidget( myAddButton, 2, 1 ); + mainLayout->addWidget( myRemoveButton, 2, 2 ); + mainLayout->addLayout( btnLayout, 3, 0, 1, 3 ); + + // Fill combo boxes + QColor cl = myMarkerType->palette().color( QPalette::Text ); // color to draw markers + QSize sz = QSize( 16, 16 ); // size of the icons for markers + myMarkerType->setIconSize( sz ); + + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::None ), tr( "NONE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::Circle ), tr( "CIRCLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::Rectangle ), tr( "RECTANGLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::Diamond ), tr( "DIAMOND_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::DTriangle ), tr( "DTRIANGLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::UTriangle ), tr( "UTRIANGLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::LTriangle ), tr( "LTRIANGLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::RTriangle ), tr( "RTRIANGLE_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::Cross ), tr( "CROSS_MARKER_LBL" ) ); + myMarkerType->addItem( Plot2d::markerIcon( sz, cl, Plot2d::XCross ), tr( "XCROSS_MARKER_LBL" ) ); + + cl = myLineType->palette().color( QPalette::Text ); // color to draw line types + sz = QSize( 40, 16 ); // size of the icons for line types + myLineType->setIconSize( sz ); + + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::NoPen ), tr( "NONE_LINE_LBL" ) ); + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::Solid ), tr( "SOLID_LINE_LBL" ) ); + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::Dash ), tr( "DASH_LINE_LBL" ) ); + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::Dot ), tr( "DOT_LINE_LBL" ) ); + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::DashDot ), tr( "DASHDOT_LINE_LBL" ) ); + myLineType->addItem( Plot2d::lineIcon( sz, cl, Plot2d::DashDotDot ), tr( "DAHSDOTDOT_LINE_LBL" ) ); + + // Connections + myUpdater = new Updater( this ); + connect( myUpdater, SIGNAL( update() ), this, SLOT( updateCurve() ) ); + connect( myFormula, SIGNAL( textChanged( QString ) ), myUpdater, SIGNAL( update() ) ); + connect( myNbIntervals, SIGNAL( valueChanged( int ) ), myUpdater, SIGNAL( update() ) ); + connect( myAutoAssign, SIGNAL( stateChanged( int ) ), myUpdater, SIGNAL( update() ) ); + connect( myMarkerType, SIGNAL( activated( int ) ), myUpdater, SIGNAL( update() ) ); + connect( myLineType, SIGNAL( activated( int ) ), myUpdater, SIGNAL( update() ) ); + connect( myLineWidth, SIGNAL( valueChanged( int ) ), myUpdater, SIGNAL( update() ) ); + connect( myColor, SIGNAL( changed( QColor ) ), myUpdater, SIGNAL( update() ) ); + connect( myCurvesList, SIGNAL( itemChanged( QListWidgetItem* ) ), myUpdater, SIGNAL( update() ) ); + connect( myCurvesList, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) ); + connect( myAddButton, SIGNAL( clicked() ), this, SLOT( addCurve() ) ); + connect( myRemoveButton, SIGNAL( clicked()), this, SLOT( removeCurve() ) ); + connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); + connect( applyButton, SIGNAL( clicked() ), this, SLOT( apply() ) ); + connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); + connect( helpButton, SIGNAL( clicked() ), this, SLOT( help() ) ); + + // Initialize dialog box + init(); +} + +/*! + Destructor +*/ +Plot2d_AnalyticalCurveDlg::~Plot2d_AnalyticalCurveDlg() +{ +} + +void Plot2d_AnalyticalCurveDlg::init() +{ + AnalyticalCurveList curves = myContainer->getAnalyticalCurves(); + foreach ( Plot2d_AnalyticalCurve* curve, curves ) { + QListWidgetItem* item = new QListWidgetItem( curve->getName() ); + item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); + item->setCheckState( curve->isActive() ? Qt::Checked : Qt::Unchecked ); + initPropsFromCurve(curve); + QVariant var; + var.setValue( (void*)curve ); + item->setData( Qt::UserRole, var ); + myCurvesList->addItem( item ); + + if ( !myCurvesList->currentItem() ) + myCurvesList->setCurrentItem( item ); + } + + selectionChanged(); +} + +/*! + /brief Store curve properties in the local map. +*/ +void Plot2d_AnalyticalCurveDlg::initPropsFromCurve(Plot2d_AnalyticalCurve* curve) { + myProperties[ curve ][ PROP_TITLE ] = curve->getName(); + myProperties[ curve ][ PROP_VISIBLE ] = curve->isActive(); + myProperties[ curve ][ PROP_FORMULA ] = curve->getExpression(); + myProperties[ curve ][ PROP_NBINTERVALS ] = (int)curve->getNbIntervals(); + myProperties[ curve ][ PROP_AUTOASSIGN ] = curve->isAutoAssign(); + myProperties[ curve ][ PROP_MARKERTYPE ] = curve->getMarker(); + myProperties[ curve ][ PROP_LINETYPE ] = curve->getLine(); + myProperties[ curve ][ PROP_LINEWIDTH ] = curve->getLineWidth(); + myProperties[ curve ][ PROP_COLOR ] = curve->getColor(); + myProperties[ curve ][ PROP_STATUS ] = ItemExisting; +} + +QwtPlot* Plot2d_AnalyticalCurveDlg::getPlot() { + Plot2d_ViewFrame* frame = dynamic_cast(myContainer); + if( frame ) + return frame->getPlot(); + return 0; +} + +/*! + /brief Store local copy on the curves properties into curves. +*/ +bool Plot2d_AnalyticalCurveDlg::processCurves() { + // update curves + + QwtPlot* plot = getPlot(); + if(!plot) + return false; + + PropMap::Iterator it; + for ( it = myProperties.begin(); it != myProperties.end(); ++it ) { + Plot2d_AnalyticalCurve* curve = it.key(); + if ( propStatus( curve ) == ItemRemoved ) { + myContainer->removeAnalyticalCurve( curve ); + continue; + } + curve->setName( propTitle( curve ) ); + curve->setActive( propVisible( curve ) ); + curve->setExpression( propFormula( curve ) ); + curve->setNbIntervals( propIntervals(curve) ); + bool prevValue = curve->isAutoAssign(); + curve->setAutoAssign( propAutoAssign( curve ) ); + if ( !curve->isAutoAssign() ) { + curve->setMarker( propMarkerType( curve ) ); + curve->setLine( propLineType( curve ) ); + curve->setLineWidth( propLineWidth( curve ) ); + curve->setColor( propColor( curve ) ); + } else { + if(!prevValue){ + curve->autoFill(plot); + } + } + + if (! curve->checkCurve(plot) ) { + QListWidgetItem* item = getItem(curve); + if(item) { + myCurvesList->setCurrentItem( item ); + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "AC_CANT_CALCULATE" ) ); + } + return false; + } + + if ( propStatus( curve ) == ItemAdded ) { + myContainer->addAnalyticalCurve( curve ); + myProperties[ curve ][ PROP_STATUS ] = ItemExisting; + } + } + return true; +} + +/*! + \brief Private slot. Called when "Apply" button is clicked +*/ +void Plot2d_AnalyticalCurveDlg::apply() { + if(processCurves()) { + Plot2d_ViewFrame* f = dynamic_cast(myContainer); + if(f) + f->updateAnalyticalCurves(); + + AnalyticalCurveList curves = myContainer->getAnalyticalCurves(); + foreach ( Plot2d_AnalyticalCurve* curve, curves ) { + initPropsFromCurve(curve); + } + selectionChanged(); + } +} + +/*! + \brief Private slot. Called when "Ok" button is clicked +*/ +void Plot2d_AnalyticalCurveDlg::accept() +{ + if(processCurves()) + QDialog::accept(); +} + +/*! + \brief Private slot. Called when "Close" button is clicked +*/ +void Plot2d_AnalyticalCurveDlg::reject() +{ + // clean-up curves just created + PropMap::Iterator it; + for ( it = myProperties.begin(); it != myProperties.end(); ++it ) { + Plot2d_AnalyticalCurve* curve = it.key(); + if ( propStatus( curve ) == ItemAdded ) + delete curve; + } + QDialog::reject(); +} + +/*! + \brief Private slot. Called when "Add curve" button is clicked +*/ +void Plot2d_AnalyticalCurveDlg::addCurve() +{ + Plot2d_AnalyticalCurve* curve = new Plot2d_AnalyticalCurve(); + + if(curve->isAutoAssign()) { + QwtPlot* plot = getPlot(); + if(plot) + curve->autoFill(plot); + } + + QListWidgetItem* item = new QListWidgetItem(curve->getName()); + item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); + item->setCheckState( Qt::Checked ); + QVariant var; + var.setValue( (void*)curve ); + item->setData( Qt::UserRole, var ); + myCurvesList->addItem( item ); + + myProperties[ curve ][ PROP_STATUS ] = ItemAdded; + + myCurvesList->setCurrentItem( item ); +} + +/*! + \brief Private slot. Called when "Remove curve" button is clicked +*/ +void Plot2d_AnalyticalCurveDlg::removeCurve() +{ + QList items = myCurvesList->selectedItems(); + foreach( QListWidgetItem* item, items ) { + Plot2d_AnalyticalCurve* curve = (Plot2d_AnalyticalCurve*)( item->data( Qt::UserRole ).value() ); + delete item; + if ( propStatus( curve ) == ItemAdded ) { + myProperties.remove( curve ); + delete curve; + } + else { + myProperties[ curve ][ PROP_STATUS ] = ItemRemoved; + } + } +} + +/*! + \brief Private slot. Called when any curve property is changed. +*/ +void Plot2d_AnalyticalCurveDlg::updateCurve() +{ + UpdateLocker lock( myUpdater ); + + QListWidgetItem* item = selected(); + Plot2d_AnalyticalCurve* curve = selectedCurve(); + if ( item && curve ) { + myProperties[ curve ][ PROP_TITLE ] = item->text(); + myProperties[ curve ][ PROP_VISIBLE ] = item->checkState() == Qt::Checked; + myProperties[ curve ][ PROP_FORMULA ] = myFormula->text(); + myProperties[ curve ][ PROP_NBINTERVALS ] = myNbIntervals->value(); + myProperties[ curve ][ PROP_AUTOASSIGN ] = myAutoAssign->isChecked(); + myProperties[ curve ][ PROP_MARKERTYPE ] = myMarkerType->currentIndex(); + myProperties[ curve ][ PROP_LINETYPE ] = myLineType->currentIndex(); + myProperties[ curve ][ PROP_LINEWIDTH ] = myLineWidth->value(); + myProperties[ curve ][ PROP_COLOR ] = myColor->color(); + } + + updateState(); +} + +/*! + \brief Private slot. Update widgets state. +*/ +void Plot2d_AnalyticalCurveDlg::updateState() +{ + myPropsGrp->setEnabled( !myAutoAssign->isChecked() ); + myCurveParams->setEnabled( selectedCurve() != 0 ); + myCurveProps->setEnabled( selectedCurve() != 0 ); + myRemoveButton->setEnabled( selectedCurve() != 0 ); +} + +/*! + \brief Private slot. Called when selection in the curve list is changed. +*/ +void Plot2d_AnalyticalCurveDlg::selectionChanged() +{ + UpdateLocker lock( myUpdater ); + + Plot2d_AnalyticalCurve* curve = selectedCurve(); + + myFormula->setText( propFormula( curve ) ); + myNbIntervals->setValue( propIntervals( curve ) ); + myMarkerType->setCurrentIndex( (int)propMarkerType( curve ) ); + myLineType->setCurrentIndex( (int)propLineType( curve ) ); + myLineWidth->setValue( propLineWidth( curve ) ); + myColor->setColor( propColor( curve ) ); + myAutoAssign->setChecked( propAutoAssign( curve ) ); + + updateState(); +} + +/*! + \brief Show help page +*/ +void Plot2d_AnalyticalCurveDlg::help() +{ + SUIT_Application* app = SUIT_Session::session()->activeApplication(); + if ( app ) + app->onHelpContextModule( "GUI", "plot2d_viewer_page.html", "analytical_curve" ); +} + +/*! + \brief Get currently selected list widget item +*/ +QListWidgetItem* Plot2d_AnalyticalCurveDlg::selected() const +{ + QList items = myCurvesList->selectedItems(); + return items.count() > 0 ? items[0] : 0; +} + +/*! + \brief Get widget item by the curve +*/ +QListWidgetItem* Plot2d_AnalyticalCurveDlg::getItem(Plot2d_AnalyticalCurve* theCurve) const +{ + int nb = myCurvesList->count(); + QListWidgetItem* item = 0; + for(int i = 0; i < nb ; i++) { + item = myCurvesList->item(i); + if(item->data( Qt::UserRole ).value() == theCurve) + break; + } + return item; +} + +/*! + \brief Get currently selected curve +*/ +Plot2d_AnalyticalCurve* Plot2d_AnalyticalCurveDlg::selectedCurve() const +{ + return selected() ? (Plot2d_AnalyticalCurve*)( selected()->data( Qt::UserRole ).value() ) : 0; +} + +/*! + \brief Get curve property: status +*/ +int Plot2d_AnalyticalCurveDlg::propStatus( Plot2d_AnalyticalCurve* curve, const int def ) +{ + int val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_STATUS ) ) + myProperties[ curve ][ PROP_STATUS ] = def; + QVariant v = myProperties[ curve ][ PROP_STATUS ]; + if ( v.isValid() && v.type() == QVariant::Int ) val = v.toInt(); + } + return val; +} + +/*! + \brief Get curve property: title +*/ +QString Plot2d_AnalyticalCurveDlg::propTitle( Plot2d_AnalyticalCurve* curve, const QString& def ) +{ + QString val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_TITLE ) ) + myProperties[ curve ][ PROP_TITLE ] = def; + QVariant v = myProperties[ curve ][ PROP_TITLE ]; + if ( v.isValid() && v.type() == QVariant::String ) val = v.toString(); + } + return val; +} + +/*! + \brief Get curve property: visible flag +*/ +bool Plot2d_AnalyticalCurveDlg::propVisible( Plot2d_AnalyticalCurve* curve, bool def ) +{ + bool val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_VISIBLE ) ) + myProperties[ curve ][ PROP_VISIBLE ] = def; + QVariant v = myProperties[ curve ][ PROP_VISIBLE ]; + if ( v.isValid() && v.type() == QVariant::Bool ) val = v.toBool(); + } + return val; +} + +/*! + \brief Get curve property: formula +*/ +QString Plot2d_AnalyticalCurveDlg::propFormula( Plot2d_AnalyticalCurve* curve, const QString& def ) +{ + QString val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_FORMULA ) ) + myProperties[ curve ][ PROP_FORMULA ] = def; + QVariant v = myProperties[ curve ][ PROP_FORMULA ]; + if ( v.isValid() && v.type() == QVariant::String ) val = v.toString(); + } + return val; +} + +/*! + \brief Get curve property: nb intervals +*/ +int Plot2d_AnalyticalCurveDlg::propIntervals( Plot2d_AnalyticalCurve* curve, int def ) +{ + int val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_NBINTERVALS ) ) + myProperties[ curve ][ PROP_NBINTERVALS ] = def; + QVariant v = myProperties[ curve ][ PROP_NBINTERVALS ]; + if ( v.isValid() && v.type() == QVariant::Int ) val = v.toInt(); + } + return val; +} + +/*! + \brief Get curve property: marker type +*/ +Plot2d::MarkerType Plot2d_AnalyticalCurveDlg::propMarkerType( Plot2d_AnalyticalCurve* curve, Plot2d::MarkerType def ) +{ + Plot2d::MarkerType val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_MARKERTYPE ) ) + myProperties[ curve ][ PROP_MARKERTYPE ] = def; + QVariant v = myProperties[ curve ][ PROP_MARKERTYPE ]; + if ( v.isValid() && v.type() == QVariant::Int ) val = (Plot2d::MarkerType)( v.toInt() ); + } + return val; +} + +/*! + \brief Get curve property: line type +*/ +Plot2d::LineType Plot2d_AnalyticalCurveDlg::propLineType( Plot2d_AnalyticalCurve* curve, Plot2d::LineType def ) +{ + Plot2d::LineType val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_LINETYPE ) ) + myProperties[ curve ][ PROP_LINETYPE ] = def; + QVariant v = myProperties[ curve ][ PROP_LINETYPE ]; + if ( v.isValid() && v.type() == QVariant::Int ) val = (Plot2d::LineType)( v.toInt() ); + } + return val; +} + +/*! + \brief Get curve property: line width +*/ +int Plot2d_AnalyticalCurveDlg::propLineWidth( Plot2d_AnalyticalCurve* curve, int def ) +{ + int val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_LINEWIDTH ) ) + myProperties[ curve ][ PROP_LINEWIDTH ] = def; + QVariant v = myProperties[ curve ][ PROP_LINEWIDTH ]; + if ( v.isValid() && v.type() == QVariant::Int ) val = v.toInt(); + } + return val; +} + +/*! + \brief Get curve property: color +*/ +QColor Plot2d_AnalyticalCurveDlg::propColor( Plot2d_AnalyticalCurve* curve, const QColor& def ) +{ + QColor val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_COLOR ) ) + myProperties[ curve ][ PROP_COLOR ] = def; + QVariant v = myProperties[ curve ][ PROP_COLOR ]; + if ( v.isValid() && v.type() == QVariant::Color ) val = v.value(); + } + return val; +} + +/*! + \brief Get curve property: auto-assign flag +*/ +bool Plot2d_AnalyticalCurveDlg::propAutoAssign( Plot2d_AnalyticalCurve* curve, bool def ) +{ + bool val = def; + if ( curve ) { + if ( !myProperties.contains( curve ) ) + myProperties[ curve ] = CurveProps(); + if ( !myProperties[ curve ].contains( PROP_AUTOASSIGN ) ) + myProperties[ curve ][ PROP_AUTOASSIGN ] = def; + QVariant v = myProperties[ curve ][ PROP_AUTOASSIGN ]; + if ( v.isValid() && v.type() == QVariant::Bool ) val = v.toBool(); + } + return val; +} diff --git a/src/Plot2d/Plot2d_AnalyticalCurveDlg.h b/src/Plot2d/Plot2d_AnalyticalCurveDlg.h new file mode 100755 index 000000000..ae9f0180d --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalCurveDlg.h @@ -0,0 +1,129 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalCurveDlg.h +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) + + +#ifndef PLOT2D_ANALYTICAL_CURVE_DLG_H +#define PLOT2D_ANALYTICAL_CURVE_DLG_H + +#include "Plot2d.h" +#include "Plot2d_AnalyticalCurve.h" + +#include +#include + +class QListWidget; +class QListWidgetItem; +class QGroupBox; +class QLineEdit; +class QCheckBox; +class QComboBox; +class QPushButton; + +class QtxIntSpinBox; +class QtxColorButton; +class QwtPlot; + +class Plot2d_AnalyticalCurve; +class Plot2d_CurveContainer; +class Plot2d_ViewFrame; + +class PLOT2D_EXPORT Plot2d_AnalyticalCurveDlg : public QDialog +{ + Q_OBJECT + + class Updater; + class UpdateLocker; + + enum { ItemExisting, ItemAdded, ItemRemoved }; + +public: + Plot2d_AnalyticalCurveDlg( Plot2d_CurveContainer*, QWidget* ); + ~Plot2d_AnalyticalCurveDlg(); + + void accept(); + void reject(); + +private: + + void init(); + void initPropsFromCurve(Plot2d_AnalyticalCurve*); + QListWidgetItem* selected() const; + Plot2d_AnalyticalCurve* selectedCurve() const; + QListWidgetItem* getItem(Plot2d_AnalyticalCurve*) const; + bool processCurves(); + QwtPlot* getPlot(); + int propStatus( Plot2d_AnalyticalCurve* = 0, const int def = ItemExisting ); + QString propTitle( Plot2d_AnalyticalCurve* = 0, const QString& def = "" ); + bool propVisible( Plot2d_AnalyticalCurve* = 0, bool def = true ); + QString propFormula( Plot2d_AnalyticalCurve* = 0, const QString& def = "" ); + int propIntervals( Plot2d_AnalyticalCurve* = 0, int def = 100 ); + Plot2d::MarkerType propMarkerType( Plot2d_AnalyticalCurve* = 0, Plot2d::MarkerType def = Plot2d::None ); + Plot2d::LineType propLineType( Plot2d_AnalyticalCurve* = 0, Plot2d::LineType def = Plot2d::NoPen ); + int propLineWidth( Plot2d_AnalyticalCurve* = 0, int def = 0 ); + QColor propColor( Plot2d_AnalyticalCurve* = 0, const QColor& def = QColor() ); + bool propAutoAssign( Plot2d_AnalyticalCurve* = 0, bool def = true ); + +private slots: + void addCurve(); + void removeCurve(); + void updateCurve(); + void updateState(); + void selectionChanged(); + void help(); + void apply(); + +private: + typedef QMap CurveProps; + typedef QMap PropMap; + + Plot2d_CurveContainer* myContainer; + PropMap myProperties; + Updater* myUpdater; + + QListWidget* myCurvesList; + QGroupBox* myCurveParams; + QLineEdit* myFormula; + QtxIntSpinBox* myNbIntervals; + QGroupBox* myCurveProps; + QCheckBox* myAutoAssign; + QWidget* myPropsGrp; + QComboBox* myMarkerType; + QComboBox* myLineType; + QtxIntSpinBox* myLineWidth; + QtxColorButton* myColor; + QPushButton* myAddButton; + QPushButton* myRemoveButton; +}; + +class Plot2d_AnalyticalCurveDlg::Updater : public QObject +{ + Q_OBJECT +public: + Updater( QWidget* parent ); + ~Updater(); +signals: + void update(); +}; + +#endif //PLOT2D_ANALYTICAL_CURVE_DLG_H diff --git a/src/Plot2d/Plot2d_AnalyticalParser.cxx b/src/Plot2d/Plot2d_AnalyticalParser.cxx new file mode 100755 index 000000000..9eb5ac79d --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalParser.cxx @@ -0,0 +1,276 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalParser.cxx +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) +#include "Plot2d_AnalyticalParser.h" +#include + + +/* ================================== + * =========== PYTHON ============== + * ==================================*/ + +typedef struct { + PyObject_HEAD + int softspace; + std::string *out; + } PyStdOut; + +static void +PyStdOut_dealloc(PyStdOut *self) +{ + PyObject_Del(self); +} + +static PyObject * +PyStdOut_write(PyStdOut *self, PyObject *args) +{ + char *c; + int l; + if (!PyArg_ParseTuple(args, "t#:write",&c, &l)) + return NULL; + + //std::cerr << c ; + *(self->out)=*(self->out)+c; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef PyStdOut_methods[] = { + {"write", (PyCFunction)PyStdOut_write, METH_VARARGS, + PyDoc_STR("write(string) -> None")}, + {NULL, NULL} /* sentinel */ +}; + +static PyMemberDef PyStdOut_memberlist[] = { + {(char*)"softspace", T_INT, offsetof(PyStdOut, softspace), 0, + (char*)"flag indicating that a space needs to be printed; used by print"}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject PyStdOut_Type = { + /* The ob_type field must be initialized in the module init function + * to be portable to Windows without using C++. */ + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "PyOut", /*tp_name*/ + sizeof(PyStdOut), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)PyStdOut_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr, /*tp_getattro*/ + /* softspace is writable: we must supply tp_setattro */ + PyObject_GenericSetAttr, /* tp_setattro */ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + PyStdOut_methods, /*tp_methods*/ + PyStdOut_memberlist, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + 0, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +PyObject * newPyStdOut( std::string& out ) +{ + PyStdOut *self; + self = PyObject_New(PyStdOut, &PyStdOut_Type); + if (self == NULL) + return NULL; + self->softspace = 0; + self->out=&out; + return (PyObject*)self; +} + + +////////////////////////END PYTHON/////////////////////////// + + +//! The only one instance of Parser +Plot2d_AnalyticalParser* Plot2d_AnalyticalParser::myParser = 0; + +//Define the script +QString Plot2d_AnalyticalParser::myScript = QString(""); + +/*! + \brief Return the only instance of the Plot2d_AnalyticalParser + \return instance of the Plot2d_AnalyticalParser +*/ +Plot2d_AnalyticalParser* Plot2d_AnalyticalParser::parser() +{ + if ( !myParser ) + myParser = new Plot2d_AnalyticalParser(); + return myParser; +} + +/*! + \brief Constructor. + + Construct the Parser and initialize python interpritator. +*/ +Plot2d_AnalyticalParser::Plot2d_AnalyticalParser() +{ + /* Initialize the Python interpreter */ + if (Py_IsInitialized()) { + PyGILState_STATE gstate = PyGILState_Ensure(); + myMainMod = PyImport_AddModule("__main__"); + myMainDict = PyModule_GetDict(myMainMod); + PyGILState_Release(gstate); + initScript(); + } +} + +int Plot2d_AnalyticalParser::calculate( const QString& theExpr, + const double theMin, + const double theMax, + const int theNbStep, + double** theX, + double** theY) { + + QString aPyScript = myScript; + aPyScript = aPyScript.arg(theExpr); + int result = -1; + PyGILState_STATE gstate = PyGILState_Ensure(); + PyObject* obj = PyRun_String(qPrintable(aPyScript), Py_file_input, myMainDict, NULL); + + if(obj == NULL) { + PyErr_Print(); + PyGILState_Release(gstate); + return result; + + } else { + Py_DECREF(obj); + } + + PyObject* func = NULL; + PyObject* f_y = NULL; + + if(PyObject_HasAttrString(myMainMod, "Y")) { + f_y = PyObject_GetAttrString(myMainMod, "Y"); + } + + if(PyObject_HasAttrString(myMainMod, "coordCalculator")) { + func = PyObject_GetAttrString(myMainMod, "coordCalculator"); + } + + PyObject* new_stderr = NULL; + + if( f_y == NULL || func == NULL ) { + fflush(stderr); + std::string err_description=""; + new_stderr = newPyStdOut(err_description); + PySys_SetObject((char*)"stderr", new_stderr); + PyErr_Print(); + PySys_SetObject((char*)"stderr", PySys_GetObject((char*)"__stderr__")); + Py_DECREF(new_stderr); + PyGILState_Release(gstate); + return result; + } + + PyObject* coords; + coords = PyObject_CallFunction(func,(char*)"(d, d, i)", theMin, theMax, theNbStep ); + + new_stderr = NULL; + + if (coords == NULL){ + fflush(stderr); + std::string err_description=""; + new_stderr = newPyStdOut(err_description); + PySys_SetObject((char*)"stderr", new_stderr); + PyErr_Print(); + PySys_SetObject((char*)"stderr", PySys_GetObject((char*)"__stderr__")); + Py_DECREF(new_stderr); + PyGILState_Release(gstate); + return result; + } + + Py_ssize_t size = PyList_Size( coords ); + if( size <= 0 ) { + Py_DECREF(coords); + return result; + } + + result = size; + + *theX = new double[size]; + *theY = new double[size]; + + for ( Py_ssize_t i = 0; i< size; ++i ) { + PyObject* coord = PyList_GetItem( coords, i ); + (*theX)[i] = PyFloat_AsDouble(PyList_GetItem(coord, 0)); + (*theY)[i] = PyFloat_AsDouble(PyList_GetItem(coord, 1)); + } + + PyGILState_Release(gstate); + return result; +} + +/*! + \brief Initialize python script. +*/ +void Plot2d_AnalyticalParser::initScript() { + myScript.clear(); + myScript += "from math import * \n"; + myScript += "def Y(x): \n"; + myScript += " return "; + myScript += "%1\n"; + + myScript += "def coordCalculator(xmin, xmax, nstep): \n"; + myScript += " coords = [] \n"; + myScript += " xstep = (xmax - xmin) / nstep \n"; + myScript += " n = 0 \n"; + myScript += " while n <= nstep : \n"; + myScript += " x = xmin + n*xstep \n"; + myScript += " try: \n"; + myScript += " y = Y(x) \n"; + myScript += " coords.append([x,y]) \n"; + myScript += " except ValueError, ZeroDivisionError: \n"; + myScript += " pass \n"; + myScript += " n = n+1 \n"; + myScript += " return coords \n"; +} diff --git a/src/Plot2d/Plot2d_AnalyticalParser.h b/src/Plot2d/Plot2d_AnalyticalParser.h new file mode 100755 index 000000000..6f9f6e6e3 --- /dev/null +++ b/src/Plot2d/Plot2d_AnalyticalParser.h @@ -0,0 +1,52 @@ +// Copyright (C) 2007-2012 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 : Plot2d_AnalyticalParser.h +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) + +#ifndef PLOT2D_ANALYTICAL_Parser_H +#define PLOT2D_ANALYTICAL_Parser_H +#include + +#include "Plot2d.h" + +class PLOT2D_EXPORT Plot2d_AnalyticalParser { +public: + ~Plot2d_AnalyticalParser(); + + + static Plot2d_AnalyticalParser* parser(); + int calculate( const QString&, const double, + const double, const int, + double**, double**); + +private: + Plot2d_AnalyticalParser(); + void initScript(); + +private: + static Plot2d_AnalyticalParser* myParser; //!< instance of the Parser + PyObject* myMainMod; //!< main python module + PyObject* myMainDict; //!< main python dictionary + static QString myScript; //!< python script +}; + +#endif //PLOT2D_ANALYTICAL_Parser_H diff --git a/src/Plot2d/Plot2d_Histogram.cxx b/src/Plot2d/Plot2d_Histogram.cxx new file mode 100644 index 000000000..dec1fd9a1 --- /dev/null +++ b/src/Plot2d/Plot2d_Histogram.cxx @@ -0,0 +1,258 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Histogram.cxx +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) + +#include "Plot2d_Histogram.h" +#include "Plot2d_PlotItems.h" + +#include + +const int MAX_ATTEMPTS = 10; // max attempts + +/*! + Constructor. +*/ +Plot2d_Histogram::Plot2d_Histogram() +: Plot2d_Object(), + myColor( 0, 0, 0 ), + myWidth( 0 ), + myDefWidth( 0 ) +{ +} + +/*! + Destructor. +*/ +Plot2d_Histogram::~Plot2d_Histogram() +{ +} + +/*! + Copy constructor. Makes deep copy of data. +*/ +Plot2d_Histogram::Plot2d_Histogram( const Plot2d_Histogram& hist ) +: Plot2d_Object( hist ) +{ + myColor = hist.myColor; + myWidth = hist.myWidth; + myDefWidth = hist.myDefWidth; +} + +/*! + operator=. Makes deep copy of data. +*/ +Plot2d_Histogram& Plot2d_Histogram::operator=( const Plot2d_Histogram& hist ) +{ + Plot2d_Object::operator=(hist); + myColor = hist.myColor; + myWidth = hist.myWidth; + myDefWidth = hist.myDefWidth; + return *this; +} + +/*! + Get typeid for the plot2d histogram class +*/ +int Plot2d_Histogram::rtti() +{ + return QwtPlotItem::Rtti_PlotHistogram; +} + +/*! + Create plot object for the histogram +*/ +QwtPlotItem* Plot2d_Histogram::createPlotItem() +{ + Plot2d_HistogramItem* anItem = new Plot2d_HistogramItem(); + updatePlotItem( anItem ); + return anItem; +} + +/*! + Auto fill parameters of object by plot view +*/ +void Plot2d_Histogram::autoFill( const QwtPlot* thePlot ) +{ + setColor( getNextColor( thePlot ) ); +} + +/*! + Updates histogram fields +*/ +void Plot2d_Histogram::updatePlotItem( QwtPlotItem* theItem ) +{ + if ( theItem->rtti() != rtti() ) + return; + + Plot2d_HistogramItem* anItem = dynamic_cast( theItem ); + if ( !anItem ) + return; + + Plot2d_Object::updatePlotItem( theItem ); + + anItem->setData( getData() ); + anItem->setLegendPen(getColor()); + anItem->setSelected(isSelected()); + anItem->setColor( isSelected() ? Plot2d_Object::selectionColor() : getColor() ); +} + +/*! + Sets data to object +*/ +void Plot2d_Histogram::setData( const QList& theXVals, + const QList& theYVals ) +{ + pointList aPoints; + int aSize = theXVals.size(); + for ( int i = 0; i < aSize; i++ ) + aPoints.append( Plot2d_Point( theXVals[i], theYVals[i] ) ); + setPointList( aPoints ); + + myDefWidth = getMinInterval( theXVals )*(2./3.); + myWidth = 0; // myDefWidth // VSR: width should not be automatically reset to myDefWidth +} + +/*! + Gets data +*/ +QwtIntervalData Plot2d_Histogram::getData() const +{ + pointList aPoints = getPointList(); + int aSize = aPoints.size(); + + QwtArray anIntervals( aSize ); + QwtArray aValues( aSize ); + double aX; + double aWidth = myWidth <= 0 ? myDefWidth : myWidth; // VSR: width is either manually assigned or auto-calculated + for ( int i = 0; i < aSize; i++ ) { + aX = aPoints[i].x; + anIntervals[i] = QwtDoubleInterval( aX - aWidth/2, aX + aWidth/2 ); + aValues[i] = aPoints[i].y; + } + + return QwtIntervalData( anIntervals, aValues ); +} + +/*! + Sets color of histogram +*/ +void Plot2d_Histogram::setColor( const QColor& theColor ) +{ + myColor = theColor; + setAutoAssign( false ); +} + +/*! + Returns color of histogram +*/ +QColor Plot2d_Histogram::getColor() const +{ + return myColor; +} + +/*! + Sets custom width of a histogram bar +*/ +void Plot2d_Histogram::setWidth( const double theWidth ) +{ + myWidth = theWidth; + //setAutoAssign( false ); // VSR: width attribute is not auto-assigned +} + +/*! + Returns custom or automatic width for a histogram bar +*/ +double Plot2d_Histogram::getWidth( const bool isDef ) const +{ + return isDef ? myDefWidth : myWidth; +} + +/*! + Gets new unique marker for item if possible +*/ +QColor Plot2d_Histogram::getNextColor( const QwtPlot* thePlot ) +{ + bool bOk = false; + int cnt = 0; + QColor aColor; + while ( !bOk ) { + int aRed = (int)( 256.0 * rand() / RAND_MAX); // generate random color + int aGreen = (int)( 256.0 * rand() / RAND_MAX); // ... + int aBlue = (int)( 256.0 * rand() / RAND_MAX); // ... + aColor = QColor( aRed, aGreen, aBlue ); + bOk = ( ++cnt == MAX_ATTEMPTS ) || !existColor( thePlot, aColor ); + } + return aColor; +} + +/*! + Checks if color is already user by other histogram entity +*/ +bool Plot2d_Histogram::existColor( const QwtPlot* thePlot, const QColor& theColor ) +{ + bool ok = false; + + QColor bgColor = thePlot->palette().color( QPalette::Background ); + if ( Plot2d::closeColors( theColor, bgColor ) ) { + ok = true; + } + else { + QwtPlotItemList anItems = thePlot->itemList(); + QwtPlotItemIterator anIt = anItems.begin(), aLast = anItems.end(); + QwtPlotItem* anItem; + for( ; anIt != aLast && !ok; anIt++ ) { + anItem = *anIt; + if ( !anItem ) + continue; + if ( anItem->rtti() == rtti() ) { + Plot2d_HistogramItem* aHItem = dynamic_cast( anItem ); + ok = aHItem && Plot2d::closeColors( theColor, aHItem->color() ); + } + else if ( anItem->rtti() == QwtPlotItem::Rtti_PlotCurve ) { + QwtPlotCurve* aCurve = dynamic_cast( anItem ); + ok = aCurve && Plot2d::closeColors( theColor, aCurve->pen().color() ); + } + } + } + return ok; +} + +/*! + Return min interval from values +*/ +double Plot2d_Histogram::getMinInterval( const QList& theVals ) +{ + double aValue = -1; + int aSize = theVals.size(); + if ( aSize > 1 ) { + aValue = qAbs( theVals[1] - theVals[0] ); + double aDelta; + for ( int i = 2; i < aSize; i++ ) { + aDelta = qAbs( theVals[i] - theVals[i-1] ); + aValue = qMin( aValue, qMax( aDelta, 0. ) ); + } + aValue = aValue/2; + } + return aValue; +} + diff --git a/src/Plot2d/Plot2d_Histogram.h b/src/Plot2d/Plot2d_Histogram.h new file mode 100644 index 000000000..564aca0d9 --- /dev/null +++ b/src/Plot2d/Plot2d_Histogram.h @@ -0,0 +1,68 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Histogram.h +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) + +#ifndef PLOT2D_HISTOGRAM_H +#define PLOT2D_HISTOGRAM_H + +#include "Plot2d.h" +#include "Plot2d_Object.h" + +#include + +class PLOT2D_EXPORT Plot2d_Histogram : public Plot2d_Object +{ +public: + Plot2d_Histogram(); + Plot2d_Histogram( const Plot2d_Histogram& ); + + virtual ~Plot2d_Histogram(); + Plot2d_Histogram& operator= ( const Plot2d_Histogram& ); + + virtual int rtti(); + virtual QwtPlotItem* createPlotItem(); + virtual void autoFill( const QwtPlot* ); + virtual void updatePlotItem( QwtPlotItem* ); + + void setData( const QList&, const QList& ); + QwtIntervalData getData() const; + + void setColor( const QColor& ); + QColor getColor() const; + + void setWidth( const double ); + double getWidth( const bool ) const; + + static double getMinInterval( const QList& ); + +protected: + QColor getNextColor( const QwtPlot* ); + bool existColor( const QwtPlot*, const QColor& ); + +private: + QColor myColor; + double myWidth; + double myDefWidth; +}; + +#endif // PLOT2D_HISTOGRAM_H diff --git a/src/Plot2d/Plot2d_NormalizeAlgorithm.cxx b/src/Plot2d/Plot2d_NormalizeAlgorithm.cxx new file mode 100755 index 000000000..dd21e1a84 --- /dev/null +++ b/src/Plot2d/Plot2d_NormalizeAlgorithm.cxx @@ -0,0 +1,182 @@ +// Copyright (C) 2007-2012 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 : Plot2d_NormalizeAlgorithm.cxx + +#include "Plot2d_NormalizeAlgorithm.h" +#include +#include +#include "Plot2d_Object.h" + +/*! + Constructor +*/ +Plot2d_NormalizeAlgorithm::Plot2d_NormalizeAlgorithm(QObject *parent) : + Plot2d_Algorithm(parent), + myNormalizationMode(NormalizeNone) +{ +} + +/*! + Destructor +*/ +Plot2d_NormalizeAlgorithm::~Plot2d_NormalizeAlgorithm() +{ +} + +/*! + Sets normalozation mode +*/ +void Plot2d_NormalizeAlgorithm::setNormalizationMode(NormalizationMode theMode) { + if(myNormalizationMode != theMode) { + myNormalizationMode = theMode; + myDataChanged = true; + } +} + +/*! + Gets normalozation mode +*/ +Plot2d_NormalizeAlgorithm::NormalizationMode Plot2d_NormalizeAlgorithm::getNormalizationMode()const { + return myNormalizationMode; +} + +/*! + Gets k normalization coefficient +*/ +double Plot2d_NormalizeAlgorithm::getKkoef(Plot2d_Object* theObj) +{ + QMap::iterator it = myKkoefs.find(theObj); + if(it != myKkoefs.end()) + return it.value(); + return 0; +} + +/*! + Gets b normalization coefficient +*/ +double Plot2d_NormalizeAlgorithm::getBkoef(Plot2d_Object* theObj) +{ + QMap::iterator it = myBkoefs.find(theObj); + if(it != myBkoefs.end()) + return it.value(); + return 0; + +} + +void Plot2d_NormalizeAlgorithm::execute() { + if (!isDataChanged() || myInuptData.isEmpty()) + return; + + if (myNormalizationMode != NormalizeNone) { + QList yMinLst, yMaxLst; + QList aKkoefs,aBkoefs; + double _pMin, _pMax; + for (int i = 0; i < myInuptData.size(); ++i) { + QList aTmpItemValues; + Plot2d_Object* object = myInuptData.at(i); + double *x, *y; + long nb = object->getData( &x, &y ); + for (int j = 0; j < nb; ++j) { + aTmpItemValues<getPoint(j).y; + } + delete x; + delete y; + yMaxLst<<*(std::max_element(aTmpItemValues.begin(), aTmpItemValues.end())); + yMinLst<<*(std::min_element(aTmpItemValues.begin(), aTmpItemValues.end())); + } + _pMin = *(std::min_element(yMinLst.begin(), yMinLst.end())); + _pMax = *(std::max_element(yMaxLst.begin(), yMaxLst.end())); + + double pMin, pMax, kKoef, bKoef, yMin, yMax; + switch( getNormalizationMode() ) { + case NormalizeToMin: + pMin = _pMin; + for (int i = 0; i < yMaxLst.size(); ++i) { + yMin = yMinLst.at(i); + yMax = yMaxLst.at(i); + pMax = yMax; + kKoef = (pMax - pMin)/(yMax - yMin); + bKoef = pMin - kKoef * yMin; + aBkoefs<nbPoints(); ++j) { + yOld = myInuptData.at(i)->getPoint(j).y; + xOld = myInuptData.at(i)->getPoint(j).x; + yNew = aKkoefs.at(i) * yOld + aBkoefs.at(i); + tmpItem.append( qMakePair(xOld, yNew) ); + } + myResultData.insert(myInuptData.at(i),tmpItem); + myKkoefs.insert(myInuptData.at(i),aKkoefs.at(i)); + myBkoefs.insert(myInuptData.at(i),aBkoefs.at(i)); + } + } else { + for (int i = 0; i < myInuptData.size(); ++i) { + double yOld,xOld; + AlgoPlot2dItem tmpItem; + for (int j = 0; j < myInuptData.at(i)->nbPoints(); ++j) { + yOld = myInuptData.at(i)->getPoint(j).y; + xOld = myInuptData.at(i)->getPoint(j).x; + tmpItem.append( qMakePair(xOld, yOld) ); + } + myResultData.insert(myInuptData.at(i),tmpItem); + } + } + myDataChanged = false; +} + + +void Plot2d_NormalizeAlgorithm::clear() { + Plot2d_Algorithm::clear(); + myBkoefs.clear(); + myKkoefs.clear(); +} diff --git a/src/Plot2d/Plot2d_NormalizeAlgorithm.h b/src/Plot2d/Plot2d_NormalizeAlgorithm.h new file mode 100755 index 000000000..c25e49237 --- /dev/null +++ b/src/Plot2d/Plot2d_NormalizeAlgorithm.h @@ -0,0 +1,54 @@ +// Copyright (C) 2007-2012 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 : Plot2d_NormalizeAlgorithm.h + +#ifndef PLOT2D_NORMALIZEALGORITHM_H +#define PLOT2D_NORMALIZEALGORITHM_H + +#include "Plot2d.h" +#include "Plot2d_Algorithm.h" +#include + +class Plot2d_Object; + +class PLOT2D_EXPORT Plot2d_NormalizeAlgorithm : public Plot2d_Algorithm { + Q_OBJECT +public: + Plot2d_NormalizeAlgorithm(QObject *parent); + ~Plot2d_NormalizeAlgorithm(); + + enum NormalizationMode { NormalizeToMin, NormalizeToMax, NormalizeToMinMax, NormalizeNone }; + + void setNormalizationMode(NormalizationMode); + NormalizationMode getNormalizationMode() const; + double getKkoef(Plot2d_Object*); + double getBkoef(Plot2d_Object*); + virtual void execute(); + virtual void clear(); + +private: + NormalizationMode myNormalizationMode; + QMap myBkoefs; + QMap myKkoefs; +}; + +#endif //PLOT2D_NORMALIZEALGORITHM_H diff --git a/src/Plot2d/Plot2d_Object.cxx b/src/Plot2d/Plot2d_Object.cxx new file mode 100755 index 000000000..376a697b1 --- /dev/null +++ b/src/Plot2d/Plot2d_Object.cxx @@ -0,0 +1,543 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Object.cxx +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) +// + +#include "Plot2d_Object.h" + + +#include +#include + +// Static members +QColor Plot2d_Object::mySelectionColor; +QColor Plot2d_Object::myHighlightedLegendTextColor; + +/* + * Read colors from the resource manager. +*/ +void Plot2d_Object::initColors() { + SUIT_Session* session = SUIT_Session::session(); + if(!session) + return; + + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + if(resMgr) { + mySelectionColor = resMgr->colorValue( "Plot2d", "SelectionColor", QColor(80,80,80) ); + myHighlightedLegendTextColor = resMgr->colorValue( "Plot2d", "SelectedLegendFontColor", QColor(255,255,255) ); + } +} + +/*! + Constructor +*/ +Plot2d_Object::Plot2d_Object() +: myAutoAssign( true ), + myHorTitle( "" ), myVerTitle( "" ), + myHorUnits( "" ), myVerUnits( "" ), + myName( "" ), + myXAxis( QwtPlot::xBottom ), + myYAxis( QwtPlot::yLeft ), + myIsSelected(false), + myScale ( 1.0 ) +{ +} + +/*! + Destructor +*/ +Plot2d_Object::~Plot2d_Object() +{ +} + +/*! + Copy constructor. Makes deep copy of data. +*/ +Plot2d_Object::Plot2d_Object( const Plot2d_Object& object ) +{ + myAutoAssign = object.isAutoAssign(); + myHorTitle = object.getHorTitle(); + myVerTitle = object.getVerTitle(); + myHorUnits = object.getHorUnits(); + myVerUnits = object.getVerUnits(); + myName = object.getName(); + myXAxis = object.getXAxis(); + myYAxis = object.getYAxis(); + myPoints = object.getPointList(); + myScale = object.getScale(); +} + +/*! + operator=. Makes deep copy of data. +*/ +Plot2d_Object& Plot2d_Object::operator=( const Plot2d_Object& object ) +{ + myAutoAssign = object.isAutoAssign(); + myHorTitle = object.getHorTitle(); + myVerTitle = object.getVerTitle(); + myHorUnits = object.getHorUnits(); + myVerUnits = object.getVerUnits(); + myName = object.getName(); + myXAxis = object.getXAxis(); + myYAxis = object.getYAxis(); + myPoints = object.getPointList(); + myScale = object.getScale(); + return *this; +} + +/*! + Auto fill parameters of object by plot view +*/ +void Plot2d_Object::autoFill( const QwtPlot* ) +{ +} + +/*! + * Updates object fields + */ +void Plot2d_Object::updatePlotItem( QwtPlotItem* theItem ) +{ + if ( !theItem || theItem->rtti() != rtti() ) + return; + + if ( theItem->yAxis() != getYAxis() || theItem->xAxis() != getXAxis() ) { + theItem->setAxis( getXAxis(), getYAxis() ); + + QwtPlot* aPlot = theItem->plot(); + if ( aPlot ) { + theItem->detach(); + theItem->attach( aPlot ); + } + } + QString name = !getName().isEmpty() ? getName() : getVerTitle(); + if( myScale != 1.0 ) + name = name + QString("( *%1 )").arg(myScale); + theItem->setTitle( name ); +} + +/*! + \return title of table +*/ +QString Plot2d_Object::getTableTitle() const +{ + return QString(); +} + +/*! + Sets object's horizontal title +*/ +void Plot2d_Object::setHorTitle( const QString& title ) +{ + myHorTitle = title; +} + +/*! + Gets object's horizontal title +*/ +QString Plot2d_Object::getHorTitle() const +{ + return myHorTitle; +} + +/*! + Sets object's vertical title +*/ +void Plot2d_Object::setVerTitle( const QString& title ) +{ + myVerTitle = title; +} + +/*! + Gets object's vertical title +*/ +QString Plot2d_Object::getVerTitle() const +{ + return myVerTitle; +} + +/*! + Sets object's horizontal units +*/ +void Plot2d_Object::setHorUnits( const QString& units ) +{ + myHorUnits = units; +} + +/*! + Gets object's horizontal units +*/ +QString Plot2d_Object::getHorUnits() const +{ + return myHorUnits; +} + +/*! + Sets object's vertical units +*/ +void Plot2d_Object::setVerUnits( const QString& units ) +{ + myVerUnits = units; +} + +/*! + Gets object's vertical units +*/ +QString Plot2d_Object::getVerUnits() const +{ + return myVerUnits; +} + +/*! + Sets object's name + */ +void Plot2d_Object::setName( const QString& theName ) +{ + myName = theName; +} +/*! + Gets object's name + */ +QString Plot2d_Object::getName() const +{ + return myName; +} + +/*! + Sets object's scale factor + */ +void Plot2d_Object::setScale( double theScale ) +{ + myScale = theScale; +} +/*! + Gets object's scale factor + */ +double Plot2d_Object::getScale() const +{ + return myScale; +} + +/*! + Adds one point for object. +*/ +void Plot2d_Object::addPoint( double theX, double theY, const QString& theText ) +{ + addPoint( Plot2d_Point( theX, theY, theText ) ); +} + +/*! + Adds one point for object. +*/ +void Plot2d_Object::addPoint( const Plot2d_Point& thePoint ) +{ + myPoints.append( thePoint ); +} + +/*! + Insert one point for object on some position. +*/ +void Plot2d_Object::insertPoint( int thePos, double theX, double theY, + const QString& theText ) +{ + insertPoint( thePos, Plot2d_Point( theX, theY, theText ) ); +} + +/*! + Insert one point for object on some position. +*/ +void Plot2d_Object::insertPoint( int thePos, const Plot2d_Point& thePoint ) +{ + if ( thePos < 0 ) + myPoints.append( thePoint ); + else + myPoints.insert( thePos, thePoint ); +} + +/*! + Delete one point for object on some position. +*/ +void Plot2d_Object::deletePoint(int thePos) +{ + if ( thePos >= 0 && thePos < myPoints.count() ) + myPoints.removeAt( thePos ); +} + +/*! + Remove all points for object. +*/ +void Plot2d_Object::clearAllPoints() +{ + myPoints.clear(); +} + +/*! + Gets object's data : abscissas of points +*/ +pointList Plot2d_Object::getPointList() const +{ + return myPoints; +} + +/*! + Gets points by index. +*/ + +Plot2d_Point& Plot2d_Object::getPoint(int index) { + return myPoints[index]; +} + +/*! + Gets object's data : abscissas of points +*/ +void Plot2d_Object::setPointList( const pointList& points ) +{ + myPoints = points; +} + +/*! + Sets object's data. +*/ +void Plot2d_Object::setData( const double* hData, const double* vData, long size, const QStringList& lst ) +{ + clearAllPoints(); + QStringList::const_iterator anIt = lst.begin(), aLast = lst.end(); + for ( long i = 0; i < size; i++, anIt++ ) + addPoint( hData[i], vData[i], anIt==aLast ? QString() : *anIt ); +} + +/*! + Gets object's data : abscissas of points +*/ +double* Plot2d_Object::horData() const +{ + int aNPoints = nbPoints(); + double* aX = new double[aNPoints]; + for (int i = 0; i < aNPoints; i++) { + aX[i] = myPoints[i].x; + } + return aX; +} + +/*! + Gets object's data : ordinates of points +*/ +double* Plot2d_Object::verData() const +{ + int aNPoints = nbPoints(); + double* aY = new double[aNPoints]; + for (int i = 0; i < aNPoints; i++) { + aY[i] = myScale * myPoints[i].y; + } + return aY; +} + +/*! + Gets object's data +*/ +long Plot2d_Object::getData( double** theX, double** theY ) const +{ + int aNPoints = nbPoints(); + *theX = new double[aNPoints]; + *theY = new double[aNPoints]; + for (int i = 0; i < aNPoints; i++) { + (*theX)[i] = myPoints[i].x; + (*theY)[i] = myScale * myPoints[i].y; + } + return aNPoints; +} + +/*! + Changes text assigned to point of object + \param ind -- index of point + \param txt -- new text +*/ +void Plot2d_Object::setText( const int ind, const QString& txt ) +{ + if ( ind >= 0 && ind < myPoints.count() ) + myPoints[ind].text = txt; +} + +/*! + \return text assigned to point + \param ind -- index of point +*/ +QString Plot2d_Object::text( const int ind ) const +{ + return ( ind >= 0 && ind < myPoints.count() ) ? myPoints[ind].text : QString(); +} + +/*! + Gets object's data : number of points +*/ +int Plot2d_Object::nbPoints() const +{ + return myPoints.count(); +} + +/*! + Returns true if object has no data +*/ +bool Plot2d_Object::isEmpty() const +{ + return myPoints.isEmpty(); +} + +/*! + Sets object's AutoAssign flag - in this case attributes will be set automatically +*/ +void Plot2d_Object::setAutoAssign( bool on ) +{ + myAutoAssign = on; +} + +/*! + Gets object's AutoAssign flag state +*/ +bool Plot2d_Object::isAutoAssign() const +{ + return myAutoAssign; +} + +/*! + Sets object's x axis +*/ +void Plot2d_Object::setXAxis(QwtPlot::Axis theXAxis) +{ + if (theXAxis == QwtPlot::xBottom || theXAxis == QwtPlot::xTop) + myXAxis = theXAxis; +} + +/*! + Gets object's x axis +*/ +QwtPlot::Axis Plot2d_Object::getXAxis() const +{ + return myXAxis; +} + +/*! + Sets object's y axis +*/ +void Plot2d_Object::setYAxis(QwtPlot::Axis theYAxis) +{ + if (theYAxis == QwtPlot::yLeft || theYAxis == QwtPlot::yRight) + myYAxis = theYAxis; +} + +/*! + Gets object's y axis +*/ +QwtPlot::Axis Plot2d_Object::getYAxis() const +{ + return myYAxis; +} + +/*! + Gets object's minimal abscissa +*/ +double Plot2d_Object::getMinX() const +{ + double aMinX = 1e150; + pointList::const_iterator aIt; + for (aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) + aMinX = qMin( aMinX, (*aIt).x ); + return aMinX; +} + +/*! + Gets object's maximal abscissa +*/ +double Plot2d_Object::getMaxX() const +{ + double aMaxX = -1e150; + pointList::const_iterator aIt; + for (aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) + aMaxX = qMax( aMaxX, (*aIt).x ); + return aMaxX; +} + +/*! + Gets object's minimal ordinate +*/ +double Plot2d_Object::getMinY() const +{ + double aMinY = 1e150; + pointList::const_iterator aIt; + for (aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) + aMinY = qMin( aMinY, myScale * (*aIt).y ); + return aMinY; +} + +/*! + Gets object's maximal ordinate +*/ +double Plot2d_Object::getMaxY() const +{ + double aMaxY = -1e150; + pointList::const_iterator aIt; + for (aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) + aMaxY = qMax( aMaxY, myScale * (*aIt).y ); + return aMaxY; +} + +/*! + Sets object's selected property +*/ +void Plot2d_Object::setSelected(const bool on) { + myIsSelected = on; +} + +/*! + Gets object's selected property +*/ +bool Plot2d_Object::isSelected() const { + return myIsSelected; +} + +/*! + * Sets selection color of the object. +*/ +void Plot2d_Object::setSelectionColor(const QColor& c) { + mySelectionColor = c; +} + +/*! + * Return selection color of the object. +*/ +QColor Plot2d_Object::selectionColor() { + return mySelectionColor; +} + +/*! + * Sets font color of the selected legend item. +*/ +void Plot2d_Object::setHighlightedLegendTextColor(const QColor& c) { + myHighlightedLegendTextColor = c; +} + +/*! + * Sets font color of the selected legend item. +*/ +QColor Plot2d_Object::highlightedLegendTextColor() { + return myHighlightedLegendTextColor; +} diff --git a/src/Plot2d/Plot2d_Object.h b/src/Plot2d/Plot2d_Object.h new file mode 100755 index 000000000..5afd6b1a5 --- /dev/null +++ b/src/Plot2d/Plot2d_Object.h @@ -0,0 +1,138 @@ +// Copyright (C) 2007-2012 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 : Plot2d_Object.h +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) +// + +#ifndef PLOT2D_OBJECT_H +#define PLOT2D_OBJECT_H + +#include "Plot2d.h" + +#include +#include + + +class PLOT2D_EXPORT Plot2d_Object +{ +public: + Plot2d_Object(); + Plot2d_Object( const Plot2d_Object& ); + + virtual ~Plot2d_Object(); + Plot2d_Object& operator= ( const Plot2d_Object& ); + + virtual int rtti() = 0; + virtual QwtPlotItem* createPlotItem() = 0; + virtual void autoFill( const QwtPlot* ); + virtual void updatePlotItem( QwtPlotItem* ); + + virtual QString getTableTitle() const; + + void setHorTitle( const QString& ); + QString getHorTitle() const; + void setVerTitle( const QString& ); + QString getVerTitle() const; + + void setHorUnits( const QString& ); + QString getHorUnits() const; + void setVerUnits( const QString& ); + QString getVerUnits() const; + + void setName( const QString& ); + QString getName() const; + + void setScale( double ); + double getScale() const; + + void addPoint( double, double, const QString& = QString() ); + void addPoint( const Plot2d_Point& ); + void insertPoint( int, double, double, const QString& = QString() ); + void insertPoint( int, const Plot2d_Point& ); + void deletePoint( int ); + void clearAllPoints(); + pointList getPointList() const; + void setPointList( const pointList& points ); + Plot2d_Point& getPoint(int index); + + void setData( const double*, const double*, + long, const QStringList& = QStringList() ); + double* horData() const; + double* verData() const; + long getData( double**, double** ) const; + + void setText( const int, const QString& ); + QString text( const int ) const; + + int nbPoints() const; + bool isEmpty() const; + + void setAutoAssign( bool ); + bool isAutoAssign() const; + + void setXAxis( QwtPlot::Axis ); + QwtPlot::Axis getXAxis() const; + void setYAxis( QwtPlot::Axis ); + QwtPlot::Axis getYAxis() const; + + // Protection against QwtObject::drawLines() bug in Qwt 0.4.x: + // it crashes if switched to X/Y logarithmic mode, when one or more points have + // non-positive X/Y coordinate + virtual double getMinX() const; + virtual double getMaxX() const; + virtual double getMinY() const; + virtual double getMaxY() const; + + void setSelected(const bool); + bool isSelected() const; + + static void initColors(); + + static void setSelectionColor(const QColor& c); + static QColor selectionColor(); + + static void setHighlightedLegendTextColor(const QColor& c); + static QColor highlightedLegendTextColor(); + +protected: + bool myAutoAssign; + QString myHorTitle; + QString myVerTitle; + QString myHorUnits; + QString myVerUnits; + QString myName; + QwtPlot::Axis myXAxis; + QwtPlot::Axis myYAxis; + + double myScale; + + pointList myPoints; + bool myIsSelected; + + private: + static QColor mySelectionColor; //!< Color of the selected curve or histogram + static QColor myHighlightedLegendTextColor; //!< Color of the selected legend item font +}; + +typedef QList objectList; + +#endif diff --git a/src/Plot2d/Plot2d_PlotItems.cxx b/src/Plot2d/Plot2d_PlotItems.cxx new file mode 100644 index 000000000..95a2d2def --- /dev/null +++ b/src/Plot2d/Plot2d_PlotItems.cxx @@ -0,0 +1,933 @@ +// Copyright (C) 2007-2012 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 : Plot2d_HistogramItem.cxx +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) + +#include "Plot2d_PlotItems.h" +#include "Plot2d_Object.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const char* yAxisLeft[] = { + "12 12 2 1", + " c None", + ". c #000000", + " ", + " . ", + " ... ", + " . . . ", + " . ", + " . ", + " . . ", + " . . ", + " ........ ", + " . ", + " . ", + " "}; + +const char* yAxisRight[] = { + "12 12 2 1", + " c None", + ". c #000000", + " ", + " . ", + " ... ", + " . . . ", + " . ", + " . ", + " . . ", + " . . ", + " ........ ", + " . ", + " . ", + " "}; + +/*! + Constructor of Plot2d_QwtLegendItem +*/ +Plot2d_QwtLegendItem::Plot2d_QwtLegendItem( QWidget* parent ) : + QwtLegendItem( parent ), + myYAxisIdentifierMode( IM_None ), + myIsSelected(false) +{ + myYAxisLeftIcon = yAxisLeft; + myYAxisRightIcon = yAxisRight; + int anIconWidth = qMax( myYAxisLeftIcon.width(), myYAxisRightIcon.width() ); + + mySpacingCollapsed = spacing(); + mySpacingExpanded = anIconWidth - mySpacingCollapsed; +} + +/*! + Destructor of Plot2d_QwtLegendItem +*/ +Plot2d_QwtLegendItem::~Plot2d_QwtLegendItem() +{ +} + +/*! + Set Y axis identifier displaying mode +*/ +void Plot2d_QwtLegendItem::setYAxisIdentifierMode( const int theMode ) +{ + myYAxisIdentifierMode = theMode; + setSpacing( theMode == IM_None ? mySpacingCollapsed : mySpacingExpanded ); +} + +/*! + Redefined method of drawing identifier of legend item +*/ +void Plot2d_QwtLegendItem::drawIdentifier( QPainter* painter, const QRect& rect ) const +{ + QwtLegendItem::drawIdentifier( painter, rect ); + + if( myYAxisIdentifierMode != IM_None ) { + QPixmap aPixmap( myYAxisIdentifierMode == IM_Left ? yAxisLeft : yAxisRight ); + painter->save(); + painter->drawPixmap( rect.topRight() + QPoint( mySpacingExpanded/2, mySpacingExpanded/2 ), aPixmap ); + painter->restore(); + } +} + +/*! + Update highliting on the item. +*/ +void Plot2d_QwtLegendItem::updateHighlit() { + QwtText txt = text(); + if(isSelected()) { + QColor highlightColor = Plot2d_Object::selectionColor(); + if(highlightColor != txt.backgroundBrush().color()) { + txt.setBackgroundBrush(highlightColor); + setText(txt); + } + } else if( QWidget* parent = qobject_cast(this->parent()->parent()) ) { + QPalette aPal = parent->palette(); + if(aPal.color(QPalette::Background) != txt.backgroundBrush().color()) { + txt.setBackgroundBrush(aPal.color(QPalette::Background)); + setText(txt); + } + } +} + +/*! + Sets selected property. +*/ +void Plot2d_QwtLegendItem::setSelected(const bool on) { + myIsSelected = on; +} + +/*! + Gets selected property. +*/ +bool Plot2d_QwtLegendItem::isSelected() const { + return myIsSelected; +} + + +/* + Draw text of the item. +*/ +void Plot2d_QwtLegendItem::drawText(QPainter * painter, const QRect &rect) { + painter->setPen( isSelected() ? Plot2d_Object::highlightedLegendTextColor() : + getColorFromPalette( QPalette::Text) ); + + QwtLegendItem::drawText( painter, rect ); +} + +/* + Get color from the legend pallete by 'role' flag. +*/ +QColor Plot2d_QwtLegendItem::getColorFromPalette(QPalette::ColorRole role) { + QWidget* pw = parentWidget(); + QColor col = palette().color( role ); + while( pw ) { + if ( qobject_cast( pw ) ) { + col = pw->palette().color(role ); + break; + } + pw = pw->parentWidget(); + } + return col; +} +/* + * Internal class to store deviation data on the curve. + */ +class Plot2d_QwtPlotCurve::Plot2d_DeviationData { +public: + Plot2d_DeviationData(const double *min, const double *max,const QList& idx) + { + foreach(int index,idx) { + myMin[index] = min[index]; + myMax[index] = max[index]; + } + } + ~Plot2d_DeviationData(){} + + size_t size() const + { + return qwtMin(myMin.size(), myMax.size()); + } + bool values(size_t i, double &min, double &max) { + if(myMin.contains(i) && myMax.contains(i)) { + min = myMin[i]; + max = myMax[i]; + return true; + } + return false; + } +private: + QMap myMin; + QMap myMax; +}; + + +/*! + Constructor of Plot2d_QwtPlotCurve +*/ +Plot2d_QwtPlotCurve::Plot2d_QwtPlotCurve( const QString& title, + QwtPlot::Axis yAxis /*const int index*/ ) : + Plot2d_SelectableItem(), + QwtPlotCurve( title ), + myYAxis( yAxis ), + myYAxisIdentifierEnabled( false ), + myDeviationData(0) +{ +} + +/*! + Destructor of Plot2d_QwtPlotCurve +*/ +Plot2d_QwtPlotCurve::~Plot2d_QwtPlotCurve() +{ + clearDeviationData(); +} + +/*! + Enable / disable Y axis identifier +*/ +void Plot2d_QwtPlotCurve::setYAxisIdentifierEnabled( const bool on ) +{ + myYAxisIdentifierEnabled = on; +} + +/*! + Redefined method, which updates legend of the curve +*/ +void Plot2d_QwtPlotCurve::updateLegend( QwtLegend* legend ) const +{ + if ( !legend ) + return; + + QWidget* widget = legend->find( this ); + + if ( testItemAttribute(QwtPlotItem::Legend)) { + + if ( widget == NULL ) { + widget = legendItem(); + if ( widget ) { + if ( widget->inherits("QwtLegendItem") ) { + QwtLegendItem *label = (QwtLegendItem *)widget; + label->setItemMode(legend->itemMode()); + + if ( plot() ) { + QObject::connect(label, SIGNAL(clicked()), + plot(), SLOT(legendItemClicked())); + QObject::connect(label, SIGNAL(checked(bool)), + plot(), SLOT(legendItemChecked(bool))); + } + } + legend->contentsWidget()->layout()->addWidget(widget); + legend->insert(this, widget); + } + } + + QwtPlotCurve::updateLegend( legend ); + + + if( Plot2d_QwtLegendItem* anItem = dynamic_cast( widget ) ) { + int aMode = Plot2d_QwtLegendItem::IM_None; + if( myYAxisIdentifierEnabled ) + aMode = myYAxis == QwtPlot::yRight ? + Plot2d_QwtLegendItem::IM_Right : + Plot2d_QwtLegendItem::IM_Left; + anItem->setYAxisIdentifierMode( aMode ); + if(isSelected()) { + anItem->setCurvePen(legendPen()); + anItem->setSymbol(legendSymbol()); + } + anItem->setSelected(isSelected()); + anItem->updateHighlit(); + } + } +} + +/*! + Redefined method, which creates and returns legend item of the curve +*/ +QWidget* Plot2d_QwtPlotCurve::legendItem() const +{ + return new Plot2d_QwtLegendItem; +} + +/*! + Redefined method, which draw a set of points of a curve. +*/ +void Plot2d_QwtPlotCurve::draw(QPainter *painter, + const QwtScaleMap &xMap, const QwtScaleMap &yMap, + int from, int to) const +{ + if (to < 0) + to = dataSize() - 1; + QwtPlotCurve::draw(painter, xMap, yMap, from, to); + + //draw deviation data + if(hasDeviationData()) { + painter->save(); + int lineW = deviationMarkerLineWidth(); + int tickSz = deviationMarkerTickSize() + qRound(lineW/2); + double min, max, xi, yi; + int xp, ytop, ybtm, tickl, tickr; + QColor c = isSelected() ? Plot2d_Object::selectionColor() : deviationMarkerColor(); + QPen p = QPen(c, lineW, Qt::SolidLine); + painter->setPen(p); + for (int i = from; i <= to; i++) { + if(!myDeviationData->values(i,min,max)) continue; + xi = x(i); + yi = y(i); + xp = xMap.transform(xi); + ytop = yMap.transform(yi + max); + ybtm = yMap.transform(yi - min); + tickl = xp - tickSz; + tickr = xp + tickSz; + painter->drawLine(tickl,ytop,tickr,ytop); + painter->drawLine(xp,ytop,xp,ybtm); + painter->drawLine(tickl,ybtm,tickr,ybtm); + } + painter->restore(); + } +} + +/*! + * Return color of the deviation marker. + */ +QColor Plot2d_QwtPlotCurve::deviationMarkerColor() const { + QColor c(0, 0, 127); + if(plot()) { + QVariant var = plot()->property(PLOT2D_DEVIATION_COLOR); + if(var.isValid()) + c = var.value(); + } + return c; +} +/*! + * Return line width of the deviation marker. + */ +int Plot2d_QwtPlotCurve::deviationMarkerLineWidth() const { + int lw = 1; + if(plot()) { + QVariant var = plot()->property(PLOT2D_DEVIATION_LW); + if(var.isValid()) + lw = var.toInt(); + } + return lw; +} + +/*! + * Return tick size of the deviation marker. + */ +int Plot2d_QwtPlotCurve::deviationMarkerTickSize() const { + int ts = 2; + if(plot()) { + QVariant var = plot()->property(PLOT2D_DEVIATION_TS); + if(var.isValid()) + ts = var.toInt(); + } + return ts; +} + +/*! + * Sets deviation data for the plot item. + */ +void Plot2d_QwtPlotCurve::setDeviationData(const double* min, const double* max,const QList &idx) { + clearDeviationData(); + myDeviationData = new Plot2d_DeviationData(min,max,idx); +} + +/*! + * Return true if deviation is assigned to the plot item, + false otherwise. + */ +bool Plot2d_QwtPlotCurve::hasDeviationData() const { + return myDeviationData != 0; +} + +/*! + * Remove deviation data from the plot item. + */ +void Plot2d_QwtPlotCurve::clearDeviationData() +{ + if(myDeviationData) + delete myDeviationData; + myDeviationData = 0; +} + + + +/*! + Constructor. +*/ +Plot2d_SelectableItem::Plot2d_SelectableItem(): + myIsSelected(false) +{ +} + +/*! + Destructor. +*/ +Plot2d_SelectableItem::~Plot2d_SelectableItem() +{ +} + +/*! + Sets selected property. +*/ +void Plot2d_SelectableItem::setSelected( const bool on) { + myIsSelected = on; +} + +/*! + Return selected property. +*/ +bool Plot2d_SelectableItem::isSelected() const { + return myIsSelected; +} + +/*! + Sets legend pen property. +*/ +void Plot2d_SelectableItem::setLegendPen( const QPen & p) { + myLegendPen = p; +} + +/*! + Return legend pen property. +*/ +QPen Plot2d_SelectableItem::legendPen() const { + return myLegendPen; +} + +/*! + Sets legend symbol property. +*/ +void Plot2d_SelectableItem::setLegendSymbol(const QwtSymbol& s) { + myLegendSymbol = s; +} + +/*! + Sets legend symbol property. +*/ +QwtSymbol Plot2d_SelectableItem::legendSymbol() const { + return myLegendSymbol; +} + +/*! + Constructor +*/ +Plot2d_HistogramQwtItem::Plot2d_HistogramQwtItem( const QwtText& theTitle ) +: QwtPlotItem( theTitle ) +{ + init(); +} + +/*! + Constructor +*/ +Plot2d_HistogramQwtItem::Plot2d_HistogramQwtItem( const QString& theTitle ) +: QwtPlotItem( QwtText( theTitle ) ) +{ + init(); +} + +/*! + Destructor +*/ +Plot2d_HistogramQwtItem::~Plot2d_HistogramQwtItem() +{ +} + +/*! + Initialization of object +*/ +void Plot2d_HistogramQwtItem::init() +{ + myReference = 0.0; + myAttributes = Plot2d_HistogramQwtItem::Auto; + + setItemAttribute( QwtPlotItem::AutoScale, true ); + setItemAttribute( QwtPlotItem::Legend, true ); + + setZ( 20.0 ); +} + +/*! + Sets base line to object + @param theRef +*/ +void Plot2d_HistogramQwtItem::setBaseline( double theRef ) +{ + if ( myReference != theRef ) { + myReference = theRef; + itemChanged(); + } +} + +/*! + Returns base line of object +*/ +double Plot2d_HistogramQwtItem::baseline() const +{ + return myReference; +} + +/*! + Sets data to object +*/ +void Plot2d_HistogramQwtItem::setData( const QwtIntervalData& theData ) +{ + myData = theData; + itemChanged(); +} + +/*! + Returns data from object +*/ +const QwtIntervalData& Plot2d_HistogramQwtItem::data() const +{ + return myData; +} + +/*! + Sets color to object +*/ +void Plot2d_HistogramQwtItem::setColor( const QColor& theColor ) +{ + if ( myColor != theColor ) { + myColor = theColor; + itemChanged(); + } +} + +/*! + Returns color from object +*/ +QColor Plot2d_HistogramQwtItem::color() const +{ + return myColor; +} + +/*! + Returns bounding rect of object +*/ +QwtDoubleRect Plot2d_HistogramQwtItem::boundingRect() const +{ + QwtDoubleRect aRect = myData.boundingRect(); + if ( !aRect.isValid() ) + return aRect; + + if ( myAttributes & Xfy ) { + aRect = QwtDoubleRect( aRect.y(), aRect.x(), + aRect.height(), aRect.width() ); + if ( aRect.left() > myReference ) + aRect.setLeft( myReference ); + else if ( aRect.right() < myReference ) + aRect.setRight( myReference ); + } + else { + if ( aRect.bottom() < myReference ) + aRect.setBottom( myReference ); + else if ( aRect.top() > myReference ) + aRect.setTop( myReference ); + } + return aRect; +} + +/*! + Returns type of plot object +*/ +int Plot2d_HistogramQwtItem::rtti() const +{ + return QwtPlotItem::Rtti_PlotHistogram; +} + +/*! + Sets histogram attributes +*/ +void Plot2d_HistogramQwtItem::setHistogramAttribute( HistogramAttribute theAttr, + bool isOn ) +{ + if ( testHistogramAttribute( theAttr ) != isOn ) { + if ( isOn ) + myAttributes |= theAttr; + else + myAttributes &= ~theAttr; + + itemChanged(); + } +} + +/*! + Tests histogram attributes +*/ +bool Plot2d_HistogramQwtItem::testHistogramAttribute( HistogramAttribute theAttr ) const +{ + return myAttributes & theAttr; +} + +/*! + Draws histogram object +*/ +void Plot2d_HistogramQwtItem::draw( QPainter* thePainter, + const QwtScaleMap& theXMap, + const QwtScaleMap& theYMap, + const QRect& ) const +{ + thePainter->setPen( QPen( myColor ) ); + + const int x0 = theXMap.transform( baseline() ); + const int y0 = theYMap.transform( baseline() ); + + for ( int i = 0; i < (int)myData.size(); i++ ) { + if ( myAttributes & Plot2d_HistogramQwtItem::Xfy ) { + const int x2 = theXMap.transform( myData.value( i ) ); + if ( x2 == x0 ) + continue; + int y1 = theYMap.transform( myData.interval( i ).minValue() ); + int y2 = theYMap.transform( myData.interval( i ).maxValue() ); + if ( y1 > y2 ) + qSwap( y1, y2 ); + + if ( i < (int)myData.size() - 2 ) { + const int yy1 = theYMap.transform( myData.interval(i+1).minValue() ); + const int yy2 = theYMap.transform( myData.interval(i+1).maxValue() ); + if ( y2 == qwtMin( yy1, yy2 ) ) { + const int xx2 = theXMap.transform( myData.interval(i+1).minValue() ); + if ( xx2 != x0 && ( ( xx2 < x0 && x2 < x0 ) || + ( xx2 > x0 && x2 > x0 ) ) ) { + // One pixel distance between neighboured bars + y2++; + } + } + } + drawBar( thePainter, Qt::Horizontal, QRect( x0, y1, x2 - x0, y2 - y1 ) ); + } + else { + const int y2 = theYMap.transform( myData.value( i ) ); + if ( y2 == y0 ) + continue; + int x1 = theXMap.transform( myData.interval( i ).minValue() ); + int x2 = theXMap.transform( myData.interval( i ).maxValue() ); + if ( x1 > x2 ) + qSwap( x1, x2 ); + + if ( i < (int)myData.size() - 2 ) { + const int xx1 = theXMap.transform( myData.interval(i+1).minValue() ); + const int xx2 = theXMap.transform( myData.interval(i+1).maxValue() ); + if ( x2 == qwtMin( xx1, xx2 ) ) { + const int yy2 = theYMap.transform( myData.value(i+1) ); + if ( yy2 != y0 && ( ( yy2 < y0 && y2 < y0 ) || + ( yy2 > y0 && y2 > y0 ) ) ) { + // One pixel distance between neighboured bars + x2--; + } + } + } + drawBar( thePainter, Qt::Vertical, QRect( x1, y0, x2 - x1, y2 - y0 ) ); + } + } +} + +/*! + Draws single bar of histogram +*/ +void Plot2d_HistogramQwtItem::drawBar( QPainter* thePainter, + Qt::Orientation, + const QRect& theRect ) const +{ + thePainter->save(); + + const QColor color( thePainter->pen().color() ); + QRect r = theRect.normalized(); + + const int factor = 125; + const QColor light( color.light( factor ) ); + const QColor dark( color.dark( factor ) ); + + thePainter->setBrush( color ); + thePainter->setPen( Qt::NoPen ); + QwtPainter::drawRect( thePainter, r.x() + 1, r.y() + 1, + r.width() - 2, r.height() - 2 ); + thePainter->setBrush( Qt::NoBrush ); + + thePainter->setPen( QPen( light, 2 ) ); + QwtPainter::drawLine( thePainter, r.left() + 1, r.top() + 2, + r.right() + 1, r.top() + 2 ); + + thePainter->setPen( QPen( dark, 2 ) ); + QwtPainter::drawLine( thePainter, r.left() + 1, r.bottom(), + r.right() + 1, r.bottom() ); + thePainter->setPen( QPen( light, 1 ) ); + + QwtPainter::drawLine( thePainter, r.left(), r.top() + 1, + r.left(), r.bottom() ); + QwtPainter::drawLine( thePainter, r.left() + 1, r.top() + 2, + r.left() + 1, r.bottom() - 1 ); + thePainter->setPen( QPen( dark, 1 ) ); + + QwtPainter::drawLine( thePainter, r.right() + 1, r.top() + 1, + r.right() + 1, r.bottom() ); + QwtPainter::drawLine(thePainter, r.right(), r.top() + 2, + r.right(), r.bottom() - 1 ); + thePainter->restore(); +} + +/*! + Constructor +*/ +Plot2d_HistogramItem::Plot2d_HistogramItem( const QwtText& theTitle ) +: Plot2d_HistogramQwtItem( theTitle ), + Plot2d_SelectableItem(), + myCrossed( true ) +{ +} + +/*! + Constructor +*/ +Plot2d_HistogramItem::Plot2d_HistogramItem( const QString& theTitle ) +: Plot2d_HistogramQwtItem( theTitle ), + myCrossed( true ) +{ +} + +/*! + Destructor +*/ +Plot2d_HistogramItem::~Plot2d_HistogramItem() +{ +} + +/*! + Get histogram bar items +*/ +QList Plot2d_HistogramItem::getBars() const +{ + return myBarItems; +} + +/*! + Set to legend item symbol with color of item +*/ +void Plot2d_HistogramItem::updateLegend( QwtLegend* theLegend ) const +{ + if ( !theLegend ) + return; + + Plot2d_HistogramQwtItem::updateLegend( theLegend ); + + QWidget* theWidget = theLegend->find( this ); + if ( !theWidget || !theWidget->inherits( "QwtLegendItem" ) ) + return; + + Plot2d_QwtLegendItem* anItem = ( Plot2d_QwtLegendItem* )theWidget; + QFontMetrics aFMetrics( anItem->font() ); + int aSize = aFMetrics.height(); + QwtSymbol aSymbol( QwtSymbol::Rect, QBrush( legendPen().color() ), + QPen( legendPen().color() ), QSize( aSize, aSize ) ); + anItem->setSymbol( aSymbol ); + anItem->setIdentifierMode( theLegend->identifierMode() + | QwtLegendItem::ShowSymbol ); + anItem->setSelected(isSelected()); + anItem->updateHighlit(); + anItem->update(); +} + +/*! + Draws histogram object +*/ +void Plot2d_HistogramItem::draw( QPainter* thePainter, + const QwtScaleMap& theXMap, + const QwtScaleMap& theYMap, + const QRect& ) const +{ + // nds: clear list of bar items + Plot2d_HistogramItem* anItem = (Plot2d_HistogramItem*)this; + anItem->myBarItems.clear(); + + thePainter->setPen( QPen( color() ) ); + const int x0 = theXMap.transform( baseline() ); + const int y0 = theYMap.transform( baseline() ); + + const QwtIntervalData& iData = data(); + + for ( int i = 0; i < (int)iData.size(); i++ ) { + if ( testHistogramAttribute( Plot2d_HistogramItem::Xfy ) ) { + const int x2 = theXMap.transform( iData.value( i ) ); + if ( x2 == x0 ) + continue; + int y1 = theYMap.transform( iData.interval( i ).minValue() ); + int y2 = theYMap.transform( iData.interval( i ).maxValue() ); + if ( y1 > y2 ) + qSwap( y1, y2 ); + + if ( i < (int)iData.size() - 2 ) { + const int yy1 = theYMap.transform( iData.interval(i+1).minValue() ); + const int yy2 = theYMap.transform( iData.interval(i+1).maxValue() ); + if ( y2 == qwtMin( yy1, yy2 ) ) { + const int xx2 = theXMap.transform( iData.interval(i+1).minValue() ); + if ( xx2 != x0 && ( ( xx2 < x0 && x2 < x0 ) || + ( xx2 > x0 && x2 > x0 ) ) ) { + // One pixel distance between neighboured bars + y2++; + } + } + } + // nds: draw rect with the other lower rects + QRect aRect( x0, y1, x2 - x0, y2 - y1 ); + drawRectAndLowers( thePainter, Qt::Horizontal, aRect ); + anItem->myBarItems.append( aRect ); + } + else { + const int y2 = theYMap.transform( iData.value( i ) ); + if ( y2 == y0 ) + continue; + int x1 = theXMap.transform( iData.interval( i ).minValue() ); + int x2 = theXMap.transform( iData.interval( i ).maxValue() ); + if ( x1 > x2 ) + qSwap( x1, x2 ); + + if ( i < (int)iData.size() - 2 ) { + const int xx1 = theXMap.transform( iData.interval(i+1).minValue() ); + const int xx2 = theXMap.transform( iData.interval(i+1).maxValue() ); + if ( x2 == qwtMin( xx1, xx2 ) ) { + const int yy2 = theYMap.transform( iData.value(i+1) ); + if ( yy2 != y0 && ( ( yy2 < y0 && y2 < y0 ) || + ( yy2 > y0 && y2 > y0 ) ) ) { + // One pixel distance between neighboured bars + x2--; + } + } + } + // nds: draw rect with the other lower rects + QRect aRect(x1, y0, x2 - x1, y2 - y0 ); + drawRectAndLowers( thePainter, Qt::Vertical, aRect ); + anItem->myBarItems.append( aRect ); + } + } +} + +/*! + Set/clear "cross items" option +*/ +void Plot2d_HistogramItem::setCrossItems( bool theCross ) +{ + myCrossed = theCross; +} + +/*! + Get "cross items" option +*/ +bool Plot2d_HistogramItem::isCrossItems() const +{ + return myCrossed; +} + +/*! + Redefined method, which creates and returns legend item of the curve +*/ +QWidget* Plot2d_HistogramItem::legendItem() const +{ + return new Plot2d_QwtLegendItem; +} + + +/*! + Draws bar of histogram and on it bars of histograms with lower height. +*/ +void Plot2d_HistogramItem::drawRectAndLowers( QPainter* thePainter, + Qt::Orientation theOr, + const QRect& theRect ) const +{ + QRect aRect = theRect; + // theRect has inversed coordinates on Y axis. + // The top of the rect is bottom in standard QRect coordinates, + // and it bottom is the top. + if ( myCrossed )//&& theOr == Qt::Horizontal ) + aRect.setTop( getCrossedTop( theRect ) ); + + drawBar( thePainter, Qt::Horizontal, aRect ); +} + +/*! + Returns top value of the given rect in the context of other bars. + + It's necessary to remember, that \a theRect has inverted coordinate Y. +*/ +int Plot2d_HistogramItem::getCrossedTop( const QRect& theRect ) const +{ + int aRes = theRect.top(); + QwtPlot* aPlot = plot(); + // int aHeight = theRect.height(); + if ( aPlot ) { + QwtPlotItemList anItems = aPlot->itemList(); + QwtPlotItemIterator anIt = anItems.begin(), aLast = anItems.end(); + Plot2d_HistogramItem* anItem; + QList aRects; + for ( ; anIt != aLast; anIt++ ) { + if ( !(*anIt)->rtti() == QwtPlotItem::Rtti_PlotHistogram ) + continue; + anItem = dynamic_cast( *anIt ); + if( !anItem || anItem == this ) + continue; + aRects.clear(); + aRects = anItem->getBars(); + for ( int i = 0, aSize = aRects.size(); i < aSize; i++ ) { + if ( qMax( theRect.x(), aRects[i].x() ) <= + qMin( theRect.left(), aRects[i].left() ) ) { + if ( theRect.bottom() < aRects[i].bottom() ) + if ( aRects[i].bottom() < aRes ) + aRes = aRects[i].bottom(); + } + } + } + } + return aRes; +} diff --git a/src/Plot2d/Plot2d_PlotItems.h b/src/Plot2d/Plot2d_PlotItems.h new file mode 100644 index 000000000..e13de3c81 --- /dev/null +++ b/src/Plot2d/Plot2d_PlotItems.h @@ -0,0 +1,192 @@ +// Copyright (C) 2007-2012 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 : Plot2d_HistogramItem.h +// Author : Natalia ERMOLAEVA, Open CASCADE S.A.S. (natalia.donis@opencascade.com) + +#ifndef PLOT2D_PLOTITEMS_H +#define PLOT2D_PLOTITEMS_H + +#include "Plot2d.h" + +#include +#include +#include +#include +#include + +class PLOT2D_EXPORT Plot2d_QwtLegendItem : public QwtLegendItem +{ +public: + enum YAxisIdentifierMode { IM_None = 0, IM_Left, IM_Right }; + +public: + Plot2d_QwtLegendItem( QWidget* = 0 ); + virtual ~Plot2d_QwtLegendItem(); + +public: + void setYAxisIdentifierMode( const int ); + void updateHighlit(); + void setSelected(const bool on); + bool isSelected() const; + QColor getColorFromPalette(QPalette::ColorRole role); + +protected: + virtual void drawIdentifier( QPainter*, const QRect& ) const; + virtual void drawText(QPainter *, const QRect &); + +private: + +private: + int myYAxisIdentifierMode; + QPixmap myYAxisLeftIcon; + QPixmap myYAxisRightIcon; + int mySpacingCollapsed; + int mySpacingExpanded; + bool myIsSelected; +}; + +class PLOT2D_EXPORT Plot2d_SelectableItem { +public: + Plot2d_SelectableItem(); + ~Plot2d_SelectableItem(); + + void setSelected( const bool ); + bool isSelected() const; + + void setLegendPen( const QPen & ); + QPen legendPen() const; + + void setLegendSymbol( const QwtSymbol& ); + QwtSymbol legendSymbol() const; + +private: + bool myIsSelected; + QPen myLegendPen; + QwtSymbol myLegendSymbol; +}; + +class PLOT2D_EXPORT Plot2d_QwtPlotCurve : public QwtPlotCurve, public Plot2d_SelectableItem +{ +public: + Plot2d_QwtPlotCurve( const QString&, QwtPlot::Axis = QwtPlot::yLeft ); + virtual ~Plot2d_QwtPlotCurve(); + +public: + virtual void setYAxisIdentifierEnabled( const bool ); + virtual void draw(QPainter *p, + const QwtScaleMap &xMap, + const QwtScaleMap &yMap, + int from, int to) const; + + void setDeviationData(const double* min, const double* max, const QList &idx); + bool hasDeviationData() const; + void clearDeviationData(); + + +protected: + virtual void updateLegend( QwtLegend* ) const; + virtual QWidget* legendItem() const; + + QColor deviationMarkerColor() const; + int deviationMarkerLineWidth() const; + int deviationMarkerTickSize() const; + +private: + QwtPlot::Axis myYAxis; + bool myYAxisIdentifierEnabled; + + class Plot2d_DeviationData; + Plot2d_DeviationData* myDeviationData; +}; + +class PLOT2D_EXPORT Plot2d_HistogramQwtItem: public QwtPlotItem +{ +public: + enum HistogramAttribute + { + Auto = 0, + Xfy = 1 + }; + + explicit Plot2d_HistogramQwtItem( const QString& = QString() ); + explicit Plot2d_HistogramQwtItem( const QwtText& ); + virtual ~Plot2d_HistogramQwtItem(); + + void setData( const QwtIntervalData& ); + const QwtIntervalData& data() const; + + void setColor( const QColor& ); + QColor color() const; + + virtual QwtDoubleRect boundingRect() const; + virtual int rtti() const; + virtual void draw( QPainter*, const QwtScaleMap&, + const QwtScaleMap&, const QRect& ) const; + + void setBaseline( double ); + double baseline() const; + + void setHistogramAttribute( HistogramAttribute, bool = true ); + bool testHistogramAttribute( HistogramAttribute ) const; + +protected: + virtual void drawBar( QPainter*, Qt::Orientation, const QRect& ) const; + +private: + void init(); + +private: + int myAttributes; + QwtIntervalData myData; + QColor myColor; + double myReference; +}; + +class PLOT2D_EXPORT Plot2d_HistogramItem : public Plot2d_HistogramQwtItem, public Plot2d_SelectableItem +{ +public: + explicit Plot2d_HistogramItem( const QString& = QString() ); + explicit Plot2d_HistogramItem( const QwtText& ); + virtual ~Plot2d_HistogramItem(); + + QList getBars() const; + + virtual void updateLegend( QwtLegend* ) const; + virtual void draw( QPainter*, const QwtScaleMap&, + const QwtScaleMap&, const QRect& ) const; + + void setCrossItems( bool theCross ); + bool isCrossItems() const; + +protected: + void drawRectAndLowers( QPainter*, Qt::Orientation, + const QRect& ) const; + int getCrossedTop( const QRect& ) const; + + virtual QWidget* legendItem() const; + +protected: + QList myBarItems; + bool myCrossed; +}; + +#endif // PLOT2D_PLOTITEMS_H diff --git a/src/Plot2d/Plot2d_SetupCurveScaleDlg.cxx b/src/Plot2d/Plot2d_SetupCurveScaleDlg.cxx new file mode 100755 index 000000000..f9aacc93d --- /dev/null +++ b/src/Plot2d/Plot2d_SetupCurveScaleDlg.cxx @@ -0,0 +1,138 @@ +// Copyright (C) 2007-2012 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 : Plot2d_SetupCurveScaleDlg.cxx +// +#include "Plot2d_SetupCurveScaleDlg.h" + +#include + +#include +#include +#include +#include +#include + +#include + +const int MARGIN_SIZE = 11; +const int SPACING_SIZE = 6; +const int MIN_COMBO_WIDTH = 100; +const int MIN_SPIN_WIDTH = 50; + +/*! + \class Plot2d_SetupCurveScaleDlg + \brief Dialog box for modifying 2d curve scale factor. +*/ + +/*! + \brief Constructor. + \param parent parent widget +*/ +Plot2d_SetupCurveScaleDlg::Plot2d_SetupCurveScaleDlg( /*curveList lst, */QWidget* parent ) +: QDialog( parent ) +{ + setModal( true ); + setWindowTitle( tr("TLT_SETUP_CURVE_SCALE") ); + setSizeGripEnabled( true ); + + /************************************************************************/ + QGroupBox* GroupC1 = new QGroupBox( this ); + QHBoxLayout* GroupC1Layout = new QHBoxLayout( GroupC1 ); + GroupC1Layout->setSpacing( SPACING_SIZE ); + GroupC1Layout->setMargin( MARGIN_SIZE ); + + QLabel* aScaleLab = new QLabel( tr( "CURVE_SCALE_FACTOR" ), GroupC1 ); + myValueSpin = new QtxDoubleSpinBox( GroupC1 ); + myValueSpin->setMinimum( 0.01 ); + myValueSpin->setSingleStep( 0.1 ); + myValueSpin->setMinimumWidth( MIN_SPIN_WIDTH ); + + GroupC1Layout->addWidget( aScaleLab ); + GroupC1Layout->addWidget( myValueSpin ); + + /************************************************************************/ + QGroupBox* GroupButtons = new QGroupBox( this ); + QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons ); + GroupButtonsLayout->setSpacing( SPACING_SIZE ); + GroupButtonsLayout->setMargin( MARGIN_SIZE ); + + myOkBtn = new QPushButton( tr( "BUT_OK" ), this ); + myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this ); + + GroupButtonsLayout->addWidget( myOkBtn ); + GroupButtonsLayout->addSpacing( 10 ); + GroupButtonsLayout->addWidget( myCancelBtn ); + + /************************************************************************/ + QVBoxLayout* topLayout = new QVBoxLayout( this ); + topLayout->setSpacing( SPACING_SIZE ); + topLayout->setMargin( MARGIN_SIZE ); + topLayout->addWidget( GroupC1 ); + topLayout->addWidget( GroupButtons ); + + // default settings + setScale( 1.0 ); // no scale + + // connections + connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); + connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); + + SUIT_Tools::centerWidget( this, parent ); +} + +/*! + \brief Destructor. +*/ +Plot2d_SetupCurveScaleDlg::~Plot2d_SetupCurveScaleDlg() +{ +} + +/*! + \brief Set scale factor. + \param coef scale factor + \sa getScale() +*/ +void Plot2d_SetupCurveScaleDlg::setScale( const double coef ) +{ + if ( coef > myValueSpin->maximum() ){ + myValueSpin->setMaximum( coef ); + } + myValueSpin->setValue( coef ); +} + +/*! + \brief Get scale factor. + \return chosen scale factor + \sa setScale() +*/ +double Plot2d_SetupCurveScaleDlg::getScale() const +{ + return myValueSpin->value(); +} +/*! + \brief Clear value in the "Scale factor" spinbox. +*/ +void Plot2d_SetupCurveScaleDlg::setUndefinedValue() { + myValueSpin->setCleared(true); + myValueSpin->setSpecialValueText(""); +} diff --git a/src/Plot2d/Plot2d_SetupCurveScaleDlg.h b/src/Plot2d/Plot2d_SetupCurveScaleDlg.h new file mode 100755 index 000000000..605f2b11e --- /dev/null +++ b/src/Plot2d/Plot2d_SetupCurveScaleDlg.h @@ -0,0 +1,58 @@ +// Copyright (C) 2007-2012 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 : Plot2d_SetupCurveScaleDlg.h +// +#ifndef PLOT2D_SETUPCURVESCALEDLG_H +#define PLOT2D_SETUPCURVESCALEDLG_H + +#include "Plot2d.h" + +#include + +class QPushButton; +class QLabel; + +class QtxDoubleSpinBox; + +class PLOT2D_EXPORT Plot2d_SetupCurveScaleDlg : public QDialog +{ + Q_OBJECT + +public: + Plot2d_SetupCurveScaleDlg( /*curveList,*/ QWidget* = 0 ); + ~Plot2d_SetupCurveScaleDlg(); + +public: + void setScale( const double ); + double getScale() const; + + void setUndefinedValue(); + +private: + QPushButton* myOkBtn; + QPushButton* myCancelBtn; + QtxDoubleSpinBox* myValueSpin; +}; + +#endif // PLOT2D_SETUPCURVESCALEDLG_H + diff --git a/src/Plot2d/resources/Plot2d_msg_fr.ts b/src/Plot2d/resources/Plot2d_msg_fr.ts new file mode 100755 index 000000000..cc78b0374 --- /dev/null +++ b/src/Plot2d/resources/Plot2d_msg_fr.ts @@ -0,0 +1,774 @@ + + + + + @default + + PLOT2D_CURVE_TYPE_LBL + Type de courbe: + + + ERROR + Erreur + + + PLOT2D_SET_AS_DEFAULT_CHECK + Enregistrer comme paramètres par défaut + + + TLT_SETUP_CURVE + Initialiser une courbe + + + MNU_DUMP_VIEW + Enregistrer la vue... + + + PLOT2D_SCALE_MODE_HOR + Axe horizontal: + + + PLOT2D_NORMALIZE_TLT + Normalisation + + + PLOT2D_NORMALIZE_MODE_MIN + Normaliser sur le minimum + + + PLOT2D_NORMALIZE_MODE_MAX + Normaliser sur le maximum + + + PLOT2D_NORMALIZE_LEFT_AXIS + Axe Y gauche: + + + PLOT2D_NORMALIZE_RIGHT_AXIS + Axe Y droite: + + + PLOT2D_SCALE_MODE_VER + Axe vertical: + + + MNU_PAN_VIEW + Déplacement + + + MNU_CLONE_VIEW + Dupliquer la vue + + + MNU_PRINT_VIEW + Imprimer la vue + + + POSTSCRIPT_FILES + Fichiers PostScript (*.ps) + + + ENCAPSULATED_POSTSCRIPT_FILES + Fichiers PostScript encapsulés (*.eps) + + + DSC_GLOBALPAN_VIEW + Sélection d'un nouveau centre de vue + + + PRP_PLOT2D_MODE_LINEAR_VER + Changer la vue de l'axe vertical au mode d'échelle linéaire + + + PRP_PLOT2D_MODE_LINEAR_HOR + Changer la vue de l'axe horizontal au mode d'échelle linéaire + + + CURVE_LINE_WIDTH_LAB + Epaisseur du trait: + + + CURVE_TYPE_POPUP + Type de courbe + + + NORMALIZATION_TYPE_POPUP + Normalisation + + + TOT_PLOT2D_MODE_LINEAR_VER + Axe vertical: linéaire + + + TOT_PLOT2D_MODE_LINEAR_HOR + Axe horizontal: linéaire + + + FIT_DATA_TLT + Ajuster à la plage de données + + + MNU_ZOOM_VIEW + Zoom + + + PLOT2D_GRID_TLT + Marques de la grille et des axes + + + DSC_PAN_VIEW + Déplacer la vue + + + DASHDOT_LINE_LBL + TiretPoint + + + PRP_PLOT2D_CURVES_SPLINES + Changer la vue en mode splines + + + INF_AXES_X + Axe X + + + PLOT2D_SCALE_TLT + Mode d'échelle + + + DSC_FITALL + Ajuster la scène pour afficher tous les objets + + + MNU_FITALL + Tout afficher + + + TOT_PLOT2D_MODE_LOGARITHMIC_HOR + Axe horizontal: logarithmique + + + TOT_PLOT2D_MODE_LOGARITHMIC_VER + Axe vertical: logarithmique + + + MNU_GLOBALPAN_VIEW + Déplacement global + + + INF_APP_DUMP_VIEW + Enregistrer la vue + + + PLOT2D_LEGEND_POSITION_BOTTOM + Dessous + + + INF_COORDINATES + Coordonnées: X : %1, Y : %2 + + + DSC_CLONE_VIEW + Ouvrir un nouveau visualiseur OCC pour la scène actuelle + + + DSC_PRINT_VIEW + Imprimer la vue actuelle + + + DASH_LINE_LBL + Tiret + + + DTRIANGLE_MARKER_LBL + Triangle orienté vers le bas + + + UTRIANGLE_MARKER_LBL + Triangle orienté en haut + + + LTRIANGLE_MARKER_LBL + Triangle orienté à gauche + + + RTRIANGLE_MARKER_LBL + Triangle orienté à droite + + + RECTANGLE_MARKER_LBL + Rectangle + + + TLT_SETUP_PLOT2D_VIEW + Paramètres de visualisation Plot 2d + + + CURVE_LINE_TYPE_LAB + Type de trait: + + + CROSS_MARKER_LBL + Croix + + + XCROSS_MARKER_LBL + Croix diagonale + + + PLOT2D_ENABLE_VER_TITLE + Titre de l'axe vertical + + + PLOT2D_ENABLE_HOR_TITLE + Titre de l'axe horizontal + + + TOT_PLOT2D_SETTINGS + Paramètres + + + TOT_PLOT2D_ANALYTICAL_CURVES + Courbes analytiques + + + TOT_PLOT2D_NORMALIZE_MODE_LMAX + Axe Y gauche: Normaliser sur le maximum global + + + TOT_PLOT2D_NORMALIZE_MODE_LMIN + Axe Y gauche: Normaliser sur le minimum global + + + TOT_PLOT2D_NORMALIZE_MODE_RMAX + Axe Y droite: Normaliser sur le maximum global + + + TOT_PLOT2D_NORMALIZE_MODE_RMIN + Axe Y droite: Normaliser sur le minimum global + + + PLOT2D_CURVE_TYPE_LINES + Lignes + + + MEN_PLOT2D_CURVES_SPLINES + Dessiner les splines + + + PRP_PLOT2D_MODE_LOGARITHMIC_HOR + Changer la vue de l'axe horizontal au mode d'échelle logarithmique + + + PRP_PLOT2D_MODE_LOGARITHMIC_VER + Changer la vue de l'axe vertical au mode d'échelle logarithmique + + + PLOT2D_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg) + + + PLOT2D_MAX_INTERVALS + Intervalles max + + + INF_AXES_Y_LEFT + Axe Y gauche + + + CURVE_COLOR_LAB + Couleur: + + + CURVE_PREVIEW_LAB + Prévisualiser + + + DIAMOND_MARKER_LBL + Diamant + + + PLOT2D_LEGEND_POSITION_TOP + Dessus + + + TOT_PLOT2D_CHANGE_BACKGROUND + Changer l'arrière-plan + + + MEN_PLOT2D_CHANGE_BACKGROUND + Changer l'arrière-plan... + + + PRP_PLOT2D_CHANGE_BACKGROUND + Changer la couleur d'arrière plan + + + SOLID_LINE_LBL + Solide + + + PLOT2D_GRID_ENABLE_VER_MAJOR + Verticale principale + + + PLOT2D_GRID_ENABLE_HOR_MAJOR + Horizontale principale + + + PLOT2D_GRID_ENABLE_VER_MINOR + Verticale secondaire + + + TOT_PLOT2D_CURVES_POINTS + Dessiner des points + + + PLOT2D_GRID_ENABLE_HOR_MINOR + Horizontale secondaire + + + PLOT2D_BACKGROUND_COLOR_LBL + Couleur d'arrière-plan: + + + PLOT2D_DEVIATION_MARKER_TLT + Marqueur de déviation + + + PLOT2D_DEVIATION_LW_LBL + Epaisseur de ligne + + + PLOT2D_DEVIATION_TS_LBL + Taille des coches + + + PLOT2D_DEVIATION_CL_LBL + Couleur + + + WRN_XLOG_NOT_ALLOWED + On a détecté des points avec les valeurs non-positives sur l'abscisse. +L'échelle logarithmique de l'abscisse n'est pas permise. + + + WRN_YLOG_NOT_ALLOWED + On a détecté des points avec les valeurs non-positives sur l'ordonnée. +L'échelle logarithmique de l'ordonnée n'est pas permise. + + + DSC_FITRECT + Ajuster la scène à la zone choisie par l'encadré + + + PLOT2D_LEGEND_POSITION_LEFT + Gauche + + + MNU_FITRECT + Afficher la zone + + + DOT_LINE_LBL + Point + + + MEN_PLOT2D_CURVES_POINTS + Dessiner les points + + + PRP_PLOT2D_CURVES_POINTS + Changer la vue en mode points + + + PLOT2D_SCALE_MODE_LOGARITHMIC + Logarithmique + + + PLOT2D_LEGEND_POSITION_RIGHT + Droite + + + DSC_DUMP_VIEW + Sauvegarder la vue actuelle dans un fichier image + + + WARNING + Avertissement + + + PLOT2D_ENABLE_LEGEND + Afficher la légende + + + PLOT2D_LEGEND_FONT + Police de la légende + + + DSC_ZOOM_VIEW + Zoomer la vue + + + PRP_PLOT2D_ANALYTICAL_CURVES + Réglage des propriétés des courbes analytiques + + + PRP_PLOT2D_NORMALIZE_MODE_LMAX + Bascule la vue vers le mode de normalisation sur le maximum pour l'axe Y gauche + + + PRP_PLOT2D_NORMALIZE_MODE_LMIN + Bascule la vue vers le mode de normalisation sur le minimum pour l'axe Y gauche + + + PRP_PLOT2D_NORMALIZE_MODE_RMAX + Bascule la vue vers le mode de normalisation sur le maximum pour l'axe Y droite + + + PRP_PLOT2D_NORMALIZE_MODE_RMIN + Bascule la vue vers le mode de normalisation sur le minimum pour l'axe Y droite + + + PRP_PLOT2D_SETTINGS + Définit les paramètres de visualisation + + + INF_COORDINATES_SOME_Y + Coordonnées: X : %1, Y : %2 ( %3 ) + + + SCALING_POPUP + Echelle + + + PLOT2D_SCALE_MODE_LINEAR + Linéaire + + + TOT_PLOT2D_FITDATA + Ajuster à l'intervalle + + + PLOT2D_CURVE_TYPE_POINTS + Points + + + PLOT2D_CURVE_TYPE_SPLINE + Spline + + + MEN_PLOT2D_FITDATA + &Ajuster à l'intervalle + + + MEN_PLOT2D_MODE_LOGARITHMIC_HOR + Axe horizontal: logarithmique + + + MEN_PLOT2D_MODE_LOGARITHMIC_VER + Axe vertical: logarithmique + + + MEN_PLOT2D_NORMALIZE_MODE_LMIN + Axe Y gauche: Minimum + + + MEN_PLOT2D_NORMALIZE_MODE_LMAX + Axe Y gauche: Maximum + + + MEN_PLOT2D_NORMALIZE_MODE_RMIN + Axe Y droite: Minimum + + + MEN_PLOT2D_NORMALIZE_MODE_RMAX + Axe Y droite: Maximum + + + PRP_PLOT2D_FITDATA + Ajuster la vue à la plage de données indiquée + + + MEN_PLOT2D_MODE_LINEAR_VER + Axe vertical: linéaire + + + MEN_PLOT2D_MODE_LINEAR_HOR + Axe horizontal: linéaire + + + NONE_MARKER_LBL + Aucun + + + ERR_DOC_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + MEN_PLOT2D_SHOW_LEGEND + Afficher la &légende + + + PRP_PLOT2D_SHOW_LEGEND + Activer/désactiver la légende + + + TOT_PLOT2D_SHOW_LEGEND + Afficher la légende + + + INF_AXES_Y_RIGHT + Axe Y droite + + + DAHSDOTDOT_LINE_LBL + TiretPointPoint + + + TOT_PLOT2D_CURVES_SPLINES + Dessiner des splines + + + CURVE_MARKER_TYPE_LAB + Type de marqueur: + + + MEN_PLOT2D_SETTINGS + &Paramètres + + + MEN_PLOT2D_ANALYTICAL_CURVES + Courbes analytiques + + + CIRCLE_MARKER_LBL + Cercle + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + NONE_LINE_LBL + Aucun + + + PLOT2D_MARKER_SIZE_LBL + Taille du marqueur: + + + PLOT2D_ENABLE_MAIN_TITLE + Titre principal + + + TOT_PLOT2D_CURVES_LINES + Dessiner des lignes + + + PRP_PLOT2D_CURVES_LINES + Changer la vue en mode lignes + + + MEN_PLOT2D_CURVES_LINES + Dessiner les lignes + + + + Plot2d_FitDataDlg + + FIT_HORIZONTAL + Ajuster horizontalement + + + MIN_VALUE_LAB + Min: + + + VERTICAL_AXIS + Axe vertical + + + MAX_VALUE_LAB + Max: + + + HORIZONTAL_AXIS + Axe horizontal + + + VERTICAL_LEFT_AXIS + Axe vertical gauche + + + FIT_ALL + Tout ajuster + + + VERTICAL_RIGHT_AXIS + Axe vertical droite + + + FIT_VERTICAL + Ajuster verticalement + + + + Plot2d_ViewManager + + PLOT2D_VIEW_TITLE + Scène Plot2d:%M - visualiseur:%V + + + PREF_GROUP_PLOT2DVIEWER + Visualiseur Plot2d + + + PREF_SHOW_LEGEND + Afficher la légende + + + PREF_LEGEND_POSITION + Position de la légende: + + + PREF_LEFT + Gauche + + + PREF_RIGHT + Droite + + + PREF_TOP + Haut + + + PREF_BOTTOM + Bas + + + PREF_CURVE_TYPE + Type de courbe: + + + PREF_POINTS + Points + + + PREF_LINES + Lignes + + + PREF_SPLINE + Spline + + + PREF_MARKER_SIZE + Taille du repère: + + + PREF_LINEAR + Linéaire + + + PREF_LOGARITHMIC + Logarithmique + + + PREF_HOR_AXIS_SCALE + Echelle de l'axe horizontal: + + + PREF_VERT_AXIS_SCALE + Echelle de l'axe vertical: + + + PREF_VIEWER_BACKGROUND + Couleur du fond + + + + Plot2d_AnalyticalCurveDlg + + ANALYTICAL_CURVE_TLT + Propriétés des courbes analytiques + + + AC_CURVE_PARAMS + Paramètres de la courbe + + + AC_CURVE_PROPS + Propriétés de la courbe + + + AC_FORMULA + y(x) = + + + AC_NB_INTERVALS + Nb. intervalles + + + AC_AUTO_ASSIGN + Affectation auto. + + + AC_MARKER_TYPE + Type de marqueur + + + AC_LINE_TYPE + Type de ligne + + + AC_LINE_WIDTH + Epaisseur de ligne + + + AC_CURVE_COLOR + Couleur de la courbe + + + AC_ADD_BTN + Ajouter une courbe + + + AC_REM_BTN + Supprimer une courbe + + + AC_UPD_BTN + Mettre à jour la courbe + + + AC_APPLY_BTN + Appliquer + + + AC_CANT_CALCULATE + La courbe ne peut pas être calculée. +Merci de vérifier les paramètres d'entrée + + + AC_CLOSE_BTN + &Fermer + + + AC_HELP_BTN + Aide + + + + Plot2d_SetupCurveScaleDlg + + TLT_SETUP_CURVE_SCALE + Mise à l'échelle de courbe(s) + + + CURVE_SCALE_FACTOR + Facteur d'échelle + + + \ No newline at end of file diff --git a/src/Plot2d/resources/plot2d_analytical_curve.png b/src/Plot2d/resources/plot2d_analytical_curve.png new file mode 100755 index 0000000000000000000000000000000000000000..7ceb5f2204dd976f140a5203c37cc0f97c9b963c GIT binary patch literal 1189 zcmV;W1X}xvP)R<7oNlO{J!UT`JV6Z z<#{@~ySo`39kn$Ybz6t+;j@O#2GVtOSmVemAM5!3y8Gkz?UpTDY`wj`Hk;jUr%|ty zPbG=O;w(mD#1aX#R01`bB&x*MTjF1EoE6zut<^BOY+cfo%Vl2sZk(3~ue0ym1bart z*(Er<944)-Fg`IsQ1DW4naQbX{EJHjf+6O7K@#C2@mP*hsVsz@*zBF17)F^uRAGMB zLp86WrITE}>*VRD1OzxkOfcm85wc7~~GCk}@Lm&?ntUuEaFk1*w&lDQR& z!*aP(6zXMzOjg4?J4Z5=wwh;V7A>EXxgw9BbWkko6eUZ3HH%S$BV#-G({lqgULc-S z(e*MWmql2q)L4#(@ra6|Rz*!`@cMkD8%;9P6I|>4kmvd?5qN7SuHOAjpFc_O*t4Pv zBJ%TuG&2ttq21mkDs(26#H-{Ia*mswO2l#R+mg;i15G~{o=6i3H)^XvSN_<9bobnYy9)6Gzry14$* ziMx0LDj#2Xo>~*a^M2fYNAaIIPF2=zxNKA_6!j8;rH~B6>tEY&j|@{6tQAYl$;M_? zC#<%3;>&}${3ltJ$(3Y+l!z&{S23#9O);$2h{qH7gFz|iBA0hP#`{-xP|?~_+*#)5 z7sTc;@8BYC(nJTVL_n`ByPY z6)El#wBU=2JGnY>iqqo?FAm<83@cQ%G&NnLR^LQem!sEOgC)uA%>FkKNIqe3 zpYNvc;(iWa*v|0HL!wM3#ork@9otXcVeh#~#->)F-CS3=Z5s_K4?|cyBc}=dFhaR4 z0bh<-anef#{DFBgg(NMBd`vQ$%WE_$I(jZmFp)yd6==6wY!fb<*)c(vU|k&D12*o@6h z>2w+^=7Kd%vrfpGtlLm%@9MHt)dGIYwq(*=ytcMRTZsRO&7V9Ne}K(z^RX_6ty{M; zG&ID(;2`}20}S-{Ga$BKtl9o6HaV=Mtl#1$_+Q%Jr+Ku*5Z^~`00000NkvXXu0mjf DGXFd^ literal 0 HcmV?d00001 diff --git a/src/Plot2d/resources/plot2d_lmax_normalization.png b/src/Plot2d/resources/plot2d_lmax_normalization.png new file mode 100755 index 0000000000000000000000000000000000000000..0dfe5ee135a2eaf18d010dc10e5c26b52c7b988a GIT binary patch literal 288 zcmV+*0pI?KP)JLb4a4va+(W@R z=UZc{2mn-71>ic8orhvKCvFG*&;{sy0yxF?j=ezlLp;?5sG*^g-_^Xp)F!@KGSF7r zv<7DH695XSq~bNl_#JcD7nOGgM%XDAhe!kJyF5*k8HW*e0r+ZOpzki{C_1t@ME=Mz m=o1+rulb`FL(2LOWBLKqo@i)%g4Rp`0000YbXvvfRk{M^{pW0nzp)CJa2jaTs9QYTG}0bgvHo z5C?!|S&Gbpi9=5X0P{Sfy|-@i`F<7yNZ>S04&qB&4Z#Go)x`-o0F2|9G;FYNoCOZU zaA+(Q2Y|Y+0mLP3=PH6QRb~ASxZOEpjLRswi~!Ue38dcg6=h3StGZrt4thoo j*xZ^^8&mq}VpIA6)OKq`k~~M400000NkvXXu0mjfGVF0? literal 0 HcmV?d00001 diff --git a/src/Plot2d/resources/plot2d_print.png b/src/Plot2d/resources/plot2d_print.png new file mode 100755 index 0000000000000000000000000000000000000000..69bae957d19a7c332608629612ddfcb786d364d0 GIT binary patch literal 967 zcmV;&133JNP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZk9}if)dhL5oPR>rCQc)lVy9ywHSQzjC zpdPTIC3~KthzHq7Fns&|lOZG|NZ|g1wxr66lD|MO0VwqvAb{|?P(?*$$3LKgPv8Fk z{|v=nzW@LK>fO)(*Y3WAyEHQ^=M@_pTM1ALA3y-H;5JNk)74wI+?S%c4g_TQe=)px z{g&a@!&eMCs({ThKq)nV0K#b?(A`YG{xC4u8%i_4;*1d@&hYrz8;19v zUom|7{sS0WYz$0{OhTX_2jVXP0ff^)pjVlH0u4NP{wY>@USSz9EhxkZwB-LkXw3fy z2p~pm$wo<8bw;LHV~f#;+p^g1^^ahyg$;D4>AA%002ovPDHLkV1h4ep~nCK literal 0 HcmV?d00001 diff --git a/src/Plot2d/resources/plot2d_rmax_normalization.png b/src/Plot2d/resources/plot2d_rmax_normalization.png new file mode 100755 index 0000000000000000000000000000000000000000..7cdbdcc7bfc5fe9bb21a1c6f154970dba39b93be GIT binary patch literal 264 zcmV+j0r&oiP)fluYAlCLzyxfC{7X1Idm;x zM_mGg3G7_bOY>?8rA+(Wdw(Ce0c!hkiU1TYOE5`0u#C_Ap7;H2aQDh}#~lU}u&(RL z!lR|N + + + + PyConsole_Console + + + EDIT_COPY_CMD + &Copier + + + + EDIT_PASTE_CMD + C&oller + + + + EDIT_CLEAR_CMD + &Effacer + + + + EDIT_SELECTALL_CMD + &Tout sélectionner + + + EDIT_DUMPCOMMANDS_CMD + &Générer le script des commandes + + + + PyConsole_Editor + + TOT_DUMP_PYCOMMANDS + &Générer le script des commandes + + + PYTHON_FILES_FILTER + Fichiers PYTHON (*.py) + + + diff --git a/src/QDS/resources/QDS_msg_fr.ts b/src/QDS/resources/QDS_msg_fr.ts new file mode 100755 index 000000000..d57669bec --- /dev/null +++ b/src/QDS/resources/QDS_msg_fr.ts @@ -0,0 +1,51 @@ + + + + + QDS_Datum + + DATA_ERR_TITLE + Valeur du paramètre incorrecte + + + DATA_STRING + chaîne de caractères non-vide + + + DATA_NON_EMPTY + non-vide + + + DATA_MIN_LIMIT + est supérieur à %1 + + + DATA_FLOAT + réel + + + DATA_RANGE + dans l'intervalle [%1, %2] + + + DATA_SHOULD_BE_VALUE + Devrait avoir la valeur %1 + + + DATA_INTEGER + entier + + + DATA_INCORRECT_VALUE + La valeur du paramètre "%1" n'est pas correcte. + + + DATA_MAX_LIMIT + est inférieur à %1 + + + DATA_INPUT_VALUE + Indiquez une valeur correcte. + + + diff --git a/src/Qtx/QtxBackgroundTool.cxx b/src/Qtx/QtxBackgroundTool.cxx new file mode 100644 index 000000000..4feebef08 --- /dev/null +++ b/src/Qtx/QtxBackgroundTool.cxx @@ -0,0 +1,753 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: QtxBackgroundTool.cxx +// Author: Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#include "QtxBackgroundTool.h" +#include "QtxColorButton.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/*! + \class QtxBackgroundTool + \brief Implementation of the widget managing background data + + The background data can be specified as: + - image (by assigning the file name to be used as background texture) + - single color (by assigning any color) + - simple two-color gradient (with the gradient type id and two colors) + - complex gradient (by assigning arbitrary gradient data) (NOT IMPLEMENTED YET) + + To enable / disable any background type, setModeAllowed() function can be used. + Widget's orientation can be specified via the constructor parameter of changed with + setOrientation() function. + + To specify two-color gradient modes, use setGradient() function. By default, no gradient modes + are provided by the widget. + + Arbitrary gradient mode is not implemented yet, it is remaining for future improvement. + + Typical usage can be as follows: + \code + // create tool widget + QtxBackgroundTool* tool = new QtxBackgroundTool( Qt::Vertical, this ); + // assign gradients types + QStringList sl; + sl << "Horizontal" << "Vertical" << "First diagonal" << "Second diagonal"; + tool->setGradients(sl); + // disable image texture and custom gradient modes + tool->setModeAllowed(Qtx::ImageBackground, false); + tool->setModeAllowed(Qtx::CustomGradientBackground, false); + // initialize widget with the some background data + tool->setData( bgData ); + \endcode + + \todo Complete support of custom gradient (QLinearGradient, QRadialGradient, QConicalGradient). + \sa Qtx::BackgroundData, QtxBackgroundDialog, Qtx::stringToBackground(), Qtx::backgroundToString() +*/ + +/*! + \brief Constructor. + + Creates a background data widget with horizontal orientation. + + \param parent parent widget +*/ +QtxBackgroundTool::QtxBackgroundTool( QWidget* parent ) + : QWidget( parent ), myTextureAllowed( true ), myLastGradient( -1 ) +{ + init( Qt::Horizontal ); +} + +/*! + \brief Constructor. + + Creates a background data widget with specified orientation. + + \param o widget orientation + \param parent parent widget +*/ +QtxBackgroundTool::QtxBackgroundTool( Qt::Orientation o, QWidget* parent ) + : QWidget( parent ), myTextureAllowed( true ), myLastGradient( -1 ) +{ + init( o ); +} + +/*! + \brief Perform internal initialization +*/ +void QtxBackgroundTool::init( Qt::Orientation o ) +{ + // mode combo box + myModeCombo = new QComboBox( this ); + // color / gradient sub-widgets container + myCContainer = new QStackedWidget( this ); + // texture sub-widgets container + myTContainer = new QWidget( this ); + + QWidget* wrap; + QHBoxLayout* wrapLayout; + + // add image controls + wrapLayout = new QHBoxLayout( myTContainer ); + wrapLayout->setMargin( 0 ); + wrapLayout->setSpacing( 5 ); + myTextureCheck = new QCheckBox( tr( "Image" ), myTContainer ); + myFileName = new QLineEdit( myTContainer ); + myFileName->setMinimumWidth(100); + myBrowseBtn = new QPushButton( tr( "Browse..." ), myTContainer ); + myTextureMode = new QComboBox( myTContainer ); + wrapLayout->addWidget( myTextureCheck ); + wrapLayout->addWidget( myFileName ); + wrapLayout->addWidget( myBrowseBtn ); + wrapLayout->addWidget( myTextureMode ); + wrapLayout->setStretchFactor(myFileName, 10); + // add color controls + wrap = new QWidget( this ); + wrapLayout = new QHBoxLayout( wrap ); + wrapLayout->setMargin( 0 ); + wrapLayout->setSpacing( 5 ); + myFirstColor = new QtxColorButton( wrap ); + mySecondColor = new QtxColorButton( wrap ); + wrapLayout->addWidget( myFirstColor ); + wrapLayout->addWidget( mySecondColor ); + wrapLayout->setStretchFactor(myFirstColor, 5); + wrapLayout->setStretchFactor(mySecondColor, 5); + myCContainer->addWidget( wrap ); // Color + // add gradient controls ... NOT IMPLEMENTED YET + wrap = new QWidget( this ); + wrapLayout = new QHBoxLayout( wrap ); + wrapLayout->setMargin( 0 ); + wrapLayout->setSpacing( 5 ); + QLabel* foo = new QLabel( tr( "Not implemented yet" ), wrap ); + foo->setAlignment( Qt::AlignCenter ); + wrapLayout->addWidget( foo ); + myCContainer->addWidget( wrap ); // Gradient + + // initialize widget + myFirstColor->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + mySecondColor->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + + connect( myModeCombo, SIGNAL( currentIndexChanged( int ) ), this, SLOT( updateState() ) ); + connect( myTextureCheck, SIGNAL( toggled( bool ) ), this, SLOT( updateState() ) ); + connect( myBrowseBtn, SIGNAL( clicked() ), this, SLOT( browse() ) ); + + setModeAllowed( Qtx::ColorBackground ); + setModeAllowed( Qtx::SimpleGradientBackground ); + setModeAllowed( Qtx::CustomGradientBackground ); + setTextureModeAllowed( Qtx::CenterTexture ); + setTextureModeAllowed( Qtx::TileTexture ); + setTextureModeAllowed( Qtx::StretchTexture ); + setTextureAllowed(); + setImageFormats( QString() ); + setOrientation( o ); +} + +/*! + \brief Destructor. +*/ +QtxBackgroundTool::~QtxBackgroundTool() +{ +} + +/*! + \brief Get background data from the widget + \return background data + \sa setData() +*/ +Qtx::BackgroundData QtxBackgroundTool::data() const +{ + Qtx::BackgroundData bgData; + int idx = myModeCombo->currentIndex(); + if ( idx != -1 ) { + // get currently selected mode + int id = myModeCombo->itemData( idx, TypeRole ).toInt(); + // texture data + if ( isTextureAllowed() && myTextureMode->currentIndex() != -1 ) { + bgData.setTexture( myFileName->text().trimmed(), + Qtx::TextureMode( myTextureMode->itemData( myTextureMode->currentIndex() ).toInt() ) ); + bgData.setTextureShown( myTextureCheck->isChecked() ); + } + // single-color data + if ( isModeAllowed( Qtx::ColorBackground ) ) { + bgData.setColor( myFirstColor->color() ); + } + // simple two-color gradient data + if ( isModeAllowed( Qtx::SimpleGradientBackground ) ) { + bgData.setGradient( myLastGradient, myFirstColor->color(), mySecondColor->color() ); + } + // custom gradient data + if ( isModeAllowed( Qtx::CustomGradientBackground ) ) { + // bgData.setGradient( ... ); + // NOT IMPLEMENTED YET + } + + // set current mode + bgData.setMode( Qtx::BackgroundMode( id ) ); + } + return bgData; +} + +/*! + \brief Set background data from the widget + \param bgData background data being set to the widget + \sa data() +*/ +void QtxBackgroundTool::setData( const Qtx::BackgroundData& bgData ) +{ + Qtx::BackgroundMode m = bgData.mode(); + QColor c1, c2; + int gtype = bgData.gradient( c1, c2 ); + QString fileName; + int tmode = bgData.texture( fileName ); + bool tshown = bgData.isTextureShown(); + + // texture data + myFileName->setText( fileName ); + for ( int i = 0; i < myTextureMode->count(); i++ ) { + if ( myTextureMode->itemData( i ).toInt() == tmode ) { + myTextureMode->setCurrentIndex( i ); + break; + } + } + myTextureCheck->setChecked( tshown ); + + // color / simple gradient data + myFirstColor->setColor( c1 ); + mySecondColor->setColor( c2 ); + + // gradient data + // ... NOT IMPLEMENTED YET + + // set current mode index + int idx = -1; + for ( int i = 0; i < myModeCombo->count() && idx == -1; i++ ) { + int im = myModeCombo->itemData( i, TypeRole ).toInt(); + // for simple gradient mode we also check gradient type + if ( m == Qtx::SimpleGradientBackground && im == Qtx::SimpleGradientBackground ) { + int it = myModeCombo->itemData( i, IdRole ).toInt(); + if ( it == gtype ) idx = i; + } + // for other modes we just check mode itself + else if ( im == m ) { + idx = i; + } + } + // if background data is invalid, we set-up widget to the first available type + if ( idx == -1 && myModeCombo->count() > 0 ) idx = 0; + myModeCombo->setCurrentIndex( idx ); +} + +/*! + \brief Get allowed two-color gradients to the widget + \param gradients gradients names are returned via this parameter + \param ids gradients identifiers are returned via this parameter (empty list can be returned) +*/ +void QtxBackgroundTool::gradients( QStringList& gradList, QIntList& idList ) const +{ + gradList = myGradients; + idList = myGradientsIds; +} + +/*! + \brief Set allowed two-color gradients to the widget + \param gradients gradients names + \param ids optional gradients identifiers; if not specified, gradients are automatically numbered starting from 0 +*/ +void QtxBackgroundTool::setGradients( const QStringList& gradList, const QIntList& idList ) +{ + Qtx::BackgroundData d = data(); // get current state + myGradients = gradList; // store new gradient data + myGradientsIds = idList; // ... + myLastGradient = -1; // ... + internalUpdate(); // re-initialize + setData( d ); // restore current state (if possible) +} + +/*! + \brief Check if specific background mode is allowed + \param mode background mode + \return \c true if specified background mode is enabled or \c false otherwise + \sa setModeAllowed() +*/ +bool QtxBackgroundTool::isModeAllowed( Qtx::BackgroundMode mode ) const +{ + return myTypesAllowed.contains( mode ) ? myTypesAllowed[ mode ] : false; +} + +/*! + \brief Enable / disable specific background mode + \param mode background mode + \param on enable / disable flag (\c true by default) + \sa isModeAllowed() +*/ +void QtxBackgroundTool::setModeAllowed( Qtx::BackgroundMode mode, bool on ) +{ + if ( mode == Qtx::CustomGradientBackground ) + return; // NOT IMPLEMENTED YET // + + if ( isModeAllowed( mode ) != on ) { + Qtx::BackgroundData d = data(); // get current state + myTypesAllowed[ mode ] = on; // store new background mode state + internalUpdate(); // re-initialize + setData( d ); // restore current state (if possible) + } +} + +/*! + \brief Check if specific texture mode is allowed + \param mode texture mode + \return \c true if specified texture mode is enabled or \c false otherwise + \sa setTextureModeAllowed(), setTextureAllowed() +*/ +bool QtxBackgroundTool::isTextureModeAllowed( Qtx::TextureMode mode ) const +{ + return myTextureTypesAllowed.contains( mode ) ? myTextureTypesAllowed[ mode ] : false; +} + +/*! + \brief Enable / disable specific texture mode + \param mode texture mode + \param on enable / disable flag (\c true by default) + \sa isTextureModeAllowed(), setTextureAllowed() +*/ +void QtxBackgroundTool::setTextureModeAllowed( Qtx::TextureMode mode, bool on ) +{ + if ( isTextureModeAllowed( mode ) != on ) { + Qtx::BackgroundData d = data(); // get current state + myTextureTypesAllowed[ mode ] = on; // store new texture mode + internalUpdate(); // re-initialize + setData( d ); // restore current state (if possible) + } +} + +/*! + \brief Check if texture controls are allowed (shown) + \return \c true if texture controls are enabled or \c false otherwise + \sa setTextureAllowed(), setTextureModeAllowed() +*/ +bool QtxBackgroundTool::isTextureAllowed() const +{ + return myTextureAllowed; +} + +/*! + \brief Enable / disable texture controls + \param on enable / disable flag (\c true by default) + \sa isTextureAllowed(), setTextureModeAllowed() +*/ +void QtxBackgroundTool::setTextureAllowed( bool on ) +{ + if ( myTextureAllowed != on ) { + myTextureAllowed = on; + setOrientation( orientation() ); + } +} + +/*! + \brief Get allowed image formats + \return image formats + \sa setImageFormats() +*/ +QString QtxBackgroundTool::imageFormats() const +{ + return myImageFormats; +} + +/*! + \brief Set allowed image formats + \param formats image formats + \sa imageFormats() +*/ +void QtxBackgroundTool::setImageFormats( const QString& formats ) +{ + myImageFormats = formats.isEmpty() ? tr( "Images Files (*.bmp *.png *.jpg *.jpeg *.gif *.tiff)" ) : formats; +} + +/*! + \brief Get widget editor orientation + \return orientation + \sa setOrientation() +*/ +Qt::Orientation QtxBackgroundTool::orientation() const +{ + return qobject_cast( layout() ) ? Qt::Vertical : Qt::Horizontal; +} + +/*! + \brief Change widget orientation + \param orientation new widget orientation + \sa orientation() +*/ +void QtxBackgroundTool::setOrientation( Qt::Orientation orientation ) +{ + QBoxLayout* l = (orientation == Qt::Horizontal) ? (QBoxLayout*)(new QHBoxLayout) : (QBoxLayout*)(new QVBoxLayout); + l->setMargin( 0 ); + l->setSpacing( 5 ); + l->addWidget( myModeCombo ); + l->addWidget( myCContainer ); + myTContainer->setVisible( isTextureAllowed() ); + if ( isTextureAllowed() ) + l->addWidget( myTContainer ); + delete layout(); + setLayout( l ); +} + +/*! + \brief Initialization: fill in the widget with items according to the + available modes +*/ +void QtxBackgroundTool::internalUpdate() +{ + myModeCombo->clear(); + if ( isModeAllowed( Qtx::ColorBackground ) ) { + myModeCombo->addItem( tr( "Single Color" ) ); + myModeCombo->setItemData( 0, (int)Qtx::ColorBackground, TypeRole ); + } + if ( isModeAllowed( Qtx::SimpleGradientBackground ) ) { +// if ( myGradients.count() > 0 && myModeCombo->count() > 0 ) +// myModeCombo->insertSeparator( myModeCombo->count() ); + for ( int i = 0; i < myGradients.count(); i++ ) { + myModeCombo->addItem( myGradients[i] ); + int idx = myModeCombo->count()-1; + myModeCombo->setItemData( idx, (int)Qtx::SimpleGradientBackground, TypeRole ); + myModeCombo->setItemData( idx, myGradientsIds.count() > i ? myGradientsIds[i] : i, IdRole ); + } + } + if ( isModeAllowed( Qtx::CustomGradientBackground ) ) { +// if ( myModeCombo->count() > 0 ) +// myModeCombo->insertSeparator( myModeCombo->count() ); + myModeCombo->addItem( tr( "Custom" ) ); + int idx = myModeCombo->count()-1; + myModeCombo->setItemData( idx, (int)Qtx::CustomGradientBackground, TypeRole ); + } + + myTextureMode->clear(); + if ( isTextureModeAllowed( Qtx::CenterTexture ) ) + myTextureMode->addItem( tr( "Center" ), Qtx::CenterTexture ); + if ( isTextureModeAllowed( Qtx::TileTexture ) ) + myTextureMode->addItem( tr( "Tile" ), Qtx::TileTexture ); + if ( isTextureModeAllowed( Qtx::StretchTexture ) ) + myTextureMode->addItem( tr( "Stretch" ), Qtx::StretchTexture ); + + updateState(); +} + +/*! + \brief Update widget state +*/ +void QtxBackgroundTool::updateState() +{ + int idx = myModeCombo->currentIndex(); + int id = -1; + if ( idx >= 0 ) { + id = myModeCombo->itemData( idx, TypeRole ).toInt(); + switch( id ) { + case Qtx::ColorBackground: + myCContainer->setCurrentIndex( Color ); + break; + case Qtx::SimpleGradientBackground: + myCContainer->setCurrentIndex( Color ); + myLastGradient = myModeCombo->itemData( idx, IdRole ).toInt(); + break; + case Qtx::CustomGradientBackground: + myCContainer->setCurrentIndex( Gradient ); + break; + } + } + myModeCombo->setEnabled( idx >= 0 ); + myCContainer->setEnabled( idx >= 0 ); + mySecondColor->setEnabled( id == Qtx::SimpleGradientBackground ); + myTContainer->setEnabled( idx >= 0 ); + myFileName->setEnabled( myTextureCheck->isChecked() ); + myBrowseBtn->setEnabled( myTextureCheck->isChecked() ); + myTextureMode->setEnabled( myTextureCheck->isChecked() ); +} + +/*! + \brief Called when "Browse..." button is pressed +*/ +void QtxBackgroundTool::browse() +{ + QString fileName = QFileDialog::getOpenFileName( this, tr( "Select Picture" ), myFileName->text().trimmed(), myImageFormats ); + if ( !fileName.isEmpty() ) + myFileName->setText( fileName ); +} + +/*! + \class QtxBackgroundDialog + \brief Dialog box that can be used to set-up the background data + + Usage example: + \code + // create dialog box + QtxBackgroundDialog dlg( this ); + // assign gradients types + QStringList sl; + sl << "Horizontal" << "Vertical" << "First diagonal" << "Second diagonal"; + dlg.setGradients(sl); + // disable image texture and custom gradient modes + dlg.setModeAllowed(Qtx::ImageBackground, false); + dlg.setModeAllowed(Qtx::CustomGradientBackground, false); + // initialize dialog box with the some background data + dlg.setData(backgroundData); + // execute dialog box and obtain result background data + if ( dlg.exec() ) { + Qtx::BackgroundData bgData = dlg.getBackgroundData(); + } + \endcode + + Also it is possible to use static function: + \code + Qtx::BackgroundData bgData = QtxBackgroundDialog::getBackground( this ); + if ( bgData.isValid() ) + doSomething( bgData ); + \endcode +*/ + +/*! + \brief Constructor + \param parent parent widget +*/ +QtxBackgroundDialog::QtxBackgroundDialog( QWidget* parent ) + : QtxDialog( parent, true, true, OK | Cancel ) +{ + init(); +} + +/*! + \brief Constructor + \param bgData initial background data + \param parent parent widget +*/ +QtxBackgroundDialog::QtxBackgroundDialog( const Qtx::BackgroundData& bgData, QWidget* parent ) + : QtxDialog( parent, true, true, OK | Cancel ) +{ + init(); + setData( bgData ); +} + +/*! + \brief Destructor +*/ +QtxBackgroundDialog::~QtxBackgroundDialog() +{ +} + +/*! + \brief Perform internal initialization +*/ +void QtxBackgroundDialog::init() +{ + // title + setWindowTitle( tr( "Change background" ) ); + // flags + setDialogFlags( SetFocus ); + // move "Cancel" button to the right + setButtonPosition( Right, Cancel ); + // set OK button to be default (activated by Enter key) + qobject_cast( button( OK ) )->setDefault( true ); + + // main layout + QVBoxLayout* main = new QVBoxLayout( mainFrame() ); + main->setMargin( 0 ); + main->setSpacing( 5 ); + + // background widget + myTool = new QtxBackgroundTool( Qt::Vertical, mainFrame() ); + main->addWidget( myTool ); +} + +/*! + \brief Set background data + \param bgData background data +*/ +void QtxBackgroundDialog::setData( const Qtx::BackgroundData& bgData ) +{ + myTool->setData( bgData ); +} + +/*! + \brief Get background data + \return background data +*/ +Qtx::BackgroundData QtxBackgroundDialog::data() const +{ + return myTool->data(); +} + +/*! + \brief Set allowed two-color gradients to the widget + \param gradients gradients names + \param ids optional gradients identifiers; if not specified, gradients are automatically numbered starting from 0 +*/ +void QtxBackgroundDialog::setGradients( const QStringList& gradList, const QIntList& idList ) +{ + myTool->setGradients( gradList, idList ); +} + +/*! + \brief Enable / disable specific background mode + \param mode background mode + \param on enable / disable flag +*/ +void QtxBackgroundDialog::setModeAllowed( Qtx::BackgroundMode mode, bool on ) +{ + myTool->setModeAllowed( mode, on ); +} + +/*! + \brief Enable / disable texture controls + \param on enable / disable flag + \sa setTextureModeAllowed() +*/ +void QtxBackgroundDialog::setTextureAllowed( bool on ) +{ + myTool->setTextureAllowed( on ); +} + +/*! + \brief Enable / disable specific texture mode + \param mode texture mode + \param on enable / disable flag (\c true by default) + \sa setTextureAllowed() +*/ +void QtxBackgroundDialog::setTextureModeAllowed( Qtx::TextureMode mode, bool on ) +{ + myTool->setTextureModeAllowed( mode, on ); +} + +/*! + \brief Set allowed image formats + \param formats image formats +*/ +void QtxBackgroundDialog::setImageFormats( const QString& formats ) +{ + myTool->setImageFormats( formats ); +} + +/*! + \brief This is a convenience static function that returns an background data selected by the user. + If the user presses Cancel, it returns an invalid background data. + + By default: + - all background modes are enabled + - texture controls are shown + - all texture modes are enabled + - simple gradient types list is empty + - all image formats are supported + + To customize the dialog box behavior, initialize it passing the corresponding options to the function. + + \param bgData initial background data + \param parent parent widget + \param enableSolidColor "enable solid colored background mode" flag + \param enableGradient "enable simple gradient background mode" flag + \param enableCustom "enable custom gradient background mode" flag + \param enableTexture "show texture controls" flag + \param gradList list of simple gradients names + \param idList list of simple gradients identifiers + \param formats image formats + \return resulting background data chosen by the user or invalid data if users cancels operation +*/ +Qtx::BackgroundData QtxBackgroundDialog::getBackground( const Qtx::BackgroundData& bgData, + QWidget* parent, + bool enableSolidColor, + bool enableGradient, + bool enableCustom, + bool enableTexture, + const QStringList& gradList, + const QIntList& idList, + const QString& formats ) +{ + QtxBackgroundDialog dlg( parent ); + dlg.setTextureAllowed( enableTexture ); + dlg.setModeAllowed( Qtx::ColorBackground, enableSolidColor ); + dlg.setModeAllowed( Qtx::SimpleGradientBackground, enableGradient ); + dlg.setModeAllowed( Qtx::CustomGradientBackground, enableCustom ); + dlg.setGradients( gradList, idList ); + dlg.setImageFormats( formats ); + dlg.setData( bgData ); + Qtx::BackgroundData res; + int rc = dlg.exec(); + if ( rc ) res = dlg.data(); + return res; +} + +/*! + \brief This is a convenience static function that returns an background data selected by the user. + If the user presses Cancel, it returns an invalid background data. + + By default: + - all background modes are enabled + - texture controls are shown + - all texture modes are disabled + - simple gradient types list is empty + - all image formats are supported + + To customize the dialog box behavior, initialize it passing the corresponding options to the function. + + \param bgData initial background data + \param parent parent widget + \param tmList allowed texture modes + \param enableSolidColor "enable solid colored background mode" flag + \param enableGradient "enable simple gradient background mode" flag + \param enableCustom "enable custom gradient background mode" flag + \param enableTexture "show texture controls" flag + \param gradList list of simple gradients names + \param idList list of simple gradients identifiers + \param formats image formats + \return resulting background data chosen by the user or invalid data if users cancels operation +*/ +Qtx::BackgroundData QtxBackgroundDialog::getBackground( const Qtx::BackgroundData& bgData, + QWidget* parent, + const QIntList& tmList, + bool enableSolidColor, + bool enableGradient, + bool enableCustom, + bool enableTexture, + const QStringList& gradList, + const QIntList& idList, + const QString& formats ) +{ + QtxBackgroundDialog dlg( parent ); + dlg.setTextureAllowed( enableTexture ); + for ( int i = Qtx::CenterTexture; i <= Qtx::StretchTexture; i++ ) + dlg.setTextureModeAllowed( (Qtx::TextureMode)i, tmList.contains( i ) ); + dlg.setModeAllowed( Qtx::ColorBackground, enableSolidColor ); + dlg.setModeAllowed( Qtx::SimpleGradientBackground, enableGradient ); + dlg.setModeAllowed( Qtx::CustomGradientBackground, enableCustom ); + dlg.setGradients( gradList, idList ); + dlg.setImageFormats( formats ); + dlg.setData( bgData ); + Qtx::BackgroundData res; + int rc = dlg.exec(); + if ( rc ) res = dlg.data(); + return res; +} diff --git a/src/Qtx/QtxBackgroundTool.h b/src/Qtx/QtxBackgroundTool.h new file mode 100644 index 000000000..f676f124b --- /dev/null +++ b/src/Qtx/QtxBackgroundTool.h @@ -0,0 +1,139 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: QtxBackgroundTool.h +// Author: Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#ifndef QTXBACKGROUNDTOOL_H +#define QTXBACKGROUNDTOOL_H + +#include "Qtx.h" +#include "QtxDialog.h" + +#include +#include + +class QCheckBox; +class QComboBox; +class QStackedWidget; +class QLineEdit; +class QPushButton; +class QtxColorButton; + +class QTX_EXPORT QtxBackgroundTool : public QWidget +{ + enum { Color, Gradient }; + enum { TypeRole = Qt::UserRole, IdRole }; + + Q_OBJECT + +public: + QtxBackgroundTool( QWidget* = 0 ); + QtxBackgroundTool( Qt::Orientation, QWidget* = 0 ); + virtual ~QtxBackgroundTool(); + + Qtx::BackgroundData data() const; + void setData( const Qtx::BackgroundData& ); + + void gradients( QStringList&, QIntList& ) const; + void setGradients( const QStringList&, const QIntList& = QIntList() ); + + bool isModeAllowed( Qtx::BackgroundMode ) const; + void setModeAllowed( Qtx::BackgroundMode, bool = true ); + + bool isTextureModeAllowed( Qtx::TextureMode ) const; + void setTextureModeAllowed( Qtx::TextureMode, bool = true ); + + bool isTextureAllowed() const; + void setTextureAllowed( bool = true ); + + QString imageFormats() const; + void setImageFormats( const QString& ); + + Qt::Orientation orientation() const; + void setOrientation( Qt::Orientation ); + +private: + void init( Qt::Orientation ); + void internalUpdate(); + +private slots: + void updateState(); + void browse(); + +private: + QComboBox* myModeCombo; + QStackedWidget* myCContainer; + QWidget* myTContainer; + QCheckBox* myTextureCheck; + QLineEdit* myFileName; + QPushButton* myBrowseBtn; + QComboBox* myTextureMode; + QtxColorButton* myFirstColor; + QtxColorButton* mySecondColor; + QStringList myGradients; + QIntList myGradientsIds; + bool myTextureAllowed; + QMap myTypesAllowed; + QMap myTextureTypesAllowed; + QString myImageFormats; + int myLastGradient; +}; + +class QTX_EXPORT QtxBackgroundDialog : public QtxDialog +{ + Q_OBJECT + +public: + QtxBackgroundDialog( QWidget* = 0 ); + QtxBackgroundDialog( const Qtx::BackgroundData&, QWidget* = 0 ); + virtual ~QtxBackgroundDialog(); + + void setData( const Qtx::BackgroundData& ); + Qtx::BackgroundData data() const; + + static Qtx::BackgroundData getBackground( const Qtx::BackgroundData& = Qtx::BackgroundData(), + QWidget* = 0, + bool = true, bool = true, bool = true, bool = true, + const QStringList& = QStringList(), + const QIntList& = QIntList(), + const QString& = QString() ); + static Qtx::BackgroundData getBackground( const Qtx::BackgroundData&, + QWidget*, + const QIntList&, + bool = true, bool = true, bool = true, bool = true, + const QStringList& = QStringList(), + const QIntList& = QIntList(), + const QString& = QString() ); + + + void setGradients( const QStringList&, const QIntList& = QIntList() ); + void setModeAllowed( Qtx::BackgroundMode, bool = true ); + void setTextureAllowed( bool = true ); + void setTextureModeAllowed( Qtx::TextureMode, bool = true ); + void setImageFormats( const QString& ); + +private: + void init(); + +private: + QtxBackgroundTool* myTool; +}; + +#endif // QTXBACKGROUNDTOOL_H diff --git a/src/Qtx/QtxBiColorTool.cxx b/src/Qtx/QtxBiColorTool.cxx new file mode 100644 index 000000000..8eae5a038 --- /dev/null +++ b/src/Qtx/QtxBiColorTool.cxx @@ -0,0 +1,216 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: QtxBiColorTool.cxx +// Author: Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#include "QtxBiColorTool.h" +#include "QtxColorButton.h" + +#include +#include +#include +#include +#include + +const int BICOLOR_MAX_DELTA = 100; + +/*! + \class QtxBiColorTool::ColorLabel + \brief Draw colored label (for secondary color) + \internal +*/ +class QtxBiColorTool::ColorLabel: public QFrame +{ +public: + ColorLabel( QWidget* parent) : QFrame( parent ) + { + setFrameStyle( QFrame::Box | QFrame::Plain ); + setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + } + ~ColorLabel() {} + QSize sizeHint() const + { + return minimumSizeHint(); + } + QSize minimumSizeHint() const + { + int pm = style()->pixelMetric(QStyle::PM_ButtonMargin); + QFontMetrics fm ( font() ); + return QSize( fm.height() + pm, fm.height() + pm ); + } + void paintEvent( QPaintEvent* e ) + { + QPainter p( this ); + drawFrame( &p ); + QRect r = contentsRect(); + if ( myColor.isValid() ) { + p.fillRect( r, QBrush( myColor ) ); + } + else { + p.fillRect( r, QBrush( palette().color( foregroundRole() ), Qt::BDiagPattern ) ); + } + p.end(); + } + void setColor( const QColor& c ) + { + myColor = c; + update(); + } + +private: + QColor myColor; +}; + +/*! + \class QtxBiColorTool + \brief Implementation of the widget managing a couple of colors. + + The main color is specified explicitly. The secondary color is calculated + by changing "value" of the main color in HSV notation to the specified delta. +*/ + +/*! + \brief Constructor. + \param parent parent widget +*/ +QtxBiColorTool::QtxBiColorTool( QWidget* parent ) + : QWidget( parent ) +{ + QHBoxLayout* l = new QHBoxLayout( this ); + l->setMargin( 0 ); + l->setSpacing( 5 ); + + myMainColor = new QtxColorButton( this ); + myMainColor->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + myExtraText = new QLabel( this ); + myRuler = new QSlider( Qt::Horizontal, this ); + myRuler->setMinimum( -BICOLOR_MAX_DELTA ); + myRuler->setMaximum( +BICOLOR_MAX_DELTA ); + myRuler->setSingleStep( 1 ); + myRuler->setPageStep( 10 ); + myRuler->setValue( 0 ); + myRuler->setTickPosition( QSlider::NoTicks ); + myDelta = new ColorLabel( this ); + + l->addWidget( myMainColor ); + l->addWidget( myExtraText ); + l->addWidget( myRuler ); + l->addWidget( myDelta ); + + connect( myMainColor, SIGNAL( changed( QColor ) ), this, SLOT( updateState() ) ); + connect( myRuler, SIGNAL( valueChanged( int ) ), this, SLOT( updateState() ) ); + + updateState(); +} + +/*! + \brief Destructor. +*/ +QtxBiColorTool::~QtxBiColorTool() +{ +} + +/*! + \brief Get currently selected main color + + Returns invalid QColor if no color is selected. + + \return selected main color + \sa setMainColor() +*/ +QColor QtxBiColorTool::mainColor() const +{ + return myMainColor->color(); +} + +/*! + \brief Set main color. + \param c color to be set as current main color + \sa mainColor() +*/ +void QtxBiColorTool::setMainColor( const QColor& c ) +{ + myMainColor->setColor( c ); + updateState(); +} + +/*! + \brief Get current value delta for the secondary color + \return curent color value delta + \sa setDelta(), secondaryColor() +*/ +int QtxBiColorTool::delta() const +{ + return myRuler->value(); +} + +/*! + \brief Set value delta for the secondary color + \param d new color value delta + \sa delta(), secondaryColor() +*/ +void QtxBiColorTool::setDelta( int d ) +{ + myRuler->setValue( d ); + updateState(); +} + +/*! + \brief Get secondary color. + + Returns invalid QColor if no main color is selected. + Secondary color is calculated by changing "value" of the main color + in HSV notation to the specified delta. + + \return secondary color + \sa mainColor(), setMainColor(), delta(), setDelta() +*/ +QColor QtxBiColorTool::secondaryColor() const +{ + return Qtx::mainColorToSecondary( mainColor(), delta() ); +} + +/*! + \brief Returns auxiliary text assigned to the widget + \return current widget text + \sa setText() +*/ +QString QtxBiColorTool::text() const +{ + return myExtraText->text(); +} + +/*! + \brief Assign auxiliary text to the widet + \param txt new widget text + \sa text() +*/ +void QtxBiColorTool::setText( const QString& txt ) +{ + myExtraText->setText( txt ); +} + +/*! + \brief Update widget state +*/ +void QtxBiColorTool::updateState() +{ + myDelta->setColor( secondaryColor() ); +} diff --git a/src/Qtx/QtxBiColorTool.h b/src/Qtx/QtxBiColorTool.h new file mode 100644 index 000000000..40eca44ab --- /dev/null +++ b/src/Qtx/QtxBiColorTool.h @@ -0,0 +1,66 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: QtxBiColorTool.h +// Author: Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#ifndef QTXBICOLORTOOL_H +#define QTXBICOLORTOOL_H + +#include "Qtx.h" + +#include +#include + +class QLabel; +class QSlider; +class QtxColorButton; + +class QTX_EXPORT QtxBiColorTool : public QWidget +{ + class ColorLabel; + + Q_OBJECT + +public: + QtxBiColorTool( QWidget* = 0 ); + virtual ~QtxBiColorTool(); + + QColor mainColor() const; + void setMainColor( const QColor& ); + + int delta() const; + void setDelta( int ); + + QColor secondaryColor() const; + + QString text() const; + void setText( const QString& ); + +private slots: + void updateState(); + +private: + QtxColorButton* myMainColor; + QLabel* myExtraText; + QSlider* myRuler; + ColorLabel* myDelta; +}; + +#endif // QTXBICOLORTOOL_H diff --git a/src/Qtx/QtxShortcutEdit.cxx b/src/Qtx/QtxShortcutEdit.cxx new file mode 100755 index 000000000..88a280bcd --- /dev/null +++ b/src/Qtx/QtxShortcutEdit.cxx @@ -0,0 +1,404 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "QtxShortcutEdit.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#define COLUMN_SIZE 500 + +static const char* delete_icon[] = { +"16 16 3 1", +"` c #810000", +" c none", +"# c #ffffff", +" ", +" ", +" ``# ``# ", +" ````# ``# ", +" ````# ``# ", +" ```# `# ", +" `````# ", +" ```# ", +" `````# ", +" ```# ``# ", +" ```# ``# ", +" ```# `# ", +" ```# `# ", +" `# `# ", +" ", +" " +}; + +/*! + \brief Constructor + \param parent parent widget +*/ +QtxShortcutEdit::QtxShortcutEdit( QWidget* parent ) +: QFrame( parent ) +{ + initialize(); + myShortcut->installEventFilter(this); +} + +/*! + \brief Destructor +*/ +QtxShortcutEdit::~QtxShortcutEdit() +{ +} + +/*! + \brief Sets custom shortcut + \param seq a key sequence describes a combination of keys + \sa shortcut() +*/ +void QtxShortcutEdit::setShortcut( const QKeySequence& seq ) +{ + QString txt = seq.toString(); + myPrevShortcutText = txt; + myShortcut->setText( txt ); +} + +/*! + \brief Gets custom shortcut + \return a key sequence describes a combination of keys + \sa setShortcut() +*/ +QKeySequence QtxShortcutEdit::shortcut() +{ + return QKeySequence::fromString( myShortcut->text() ); +} + +/*! + \brief Gets the key sequence from keys that were pressed + \param e a key event + \return a string representation of the key sequence +*/ +QString QtxShortcutEdit::parseEvent( QKeyEvent* e ) +{ + bool isShiftPressed = e->modifiers() & Qt::ShiftModifier; + bool isControlPressed = e->modifiers() & Qt::ControlModifier; + bool isAltPressed = e->modifiers() & Qt::AltModifier; + bool isMetaPressed = e->modifiers() & Qt::MetaModifier; + bool isModifiersPressed = isShiftPressed || isControlPressed || isAltPressed || isMetaPressed; + int result=0; + if( isControlPressed ) + result += Qt::CTRL; + if( isAltPressed ) + result += Qt::ALT; + if( isShiftPressed ) + result += Qt::SHIFT; + if( isMetaPressed ) + result += Qt::META; + + int aKey = e->key(); + if ( ( isValidKey( aKey ) && isModifiersPressed ) || ( ( aKey >= Qt::Key_F1 ) && ( aKey <= Qt::Key_F12 ) ) ) + result += aKey; + + return QKeySequence( result ).toString(); +} + +/*! + \brief Check if the key event contains a 'valid' key + \param aKey the code of the key + \return \c true if the key is 'valid' +*/ + +bool QtxShortcutEdit::isValidKey( int aKey ) +{ + if ( aKey == Qt::Key_Underscore || aKey == Qt::Key_Escape || + ( aKey >= Qt::Key_Backspace && aKey <= Qt::Key_Delete ) || + ( aKey >= Qt::Key_Home && aKey <= Qt::Key_PageDown ) || + ( aKey >= Qt::Key_F1 && aKey <= Qt::Key_F12 ) || + ( aKey >= Qt::Key_Space && aKey <= Qt::Key_Asterisk ) || + ( aKey >= Qt::Key_Comma && aKey <= Qt::Key_Question ) || + ( aKey >= Qt::Key_A && aKey <= Qt::Key_AsciiTilde ) ) + return true; + return false; +} + +/*! + \brief Called when "Clear" button is clicked. +*/ +void QtxShortcutEdit::onCliked() +{ + myShortcut->setText( "" ); +} + +/*! + \brief Called when myShortcut loses focus. +*/ +void QtxShortcutEdit::onEditingFinished() +{ + if ( myShortcut->text().endsWith("+") ) + myShortcut->setText( myPrevShortcutText ); +} + +/*! + \brief Custom event filter. + \param obj event receiver object + \param event event + \return \c true if further event processing should be stopped +*/ +bool QtxShortcutEdit::eventFilter(QObject* obj, QEvent* event) +{ + if ( obj == myShortcut ) { + if (event->type() == QEvent::KeyPress ) { + QKeyEvent* keyEvent = static_cast(event); + QString text = parseEvent( keyEvent ); + if ( keyEvent->key() == Qt::Key_Delete || keyEvent->key() == Qt::Key_Backspace ) + onCliked(); + if ( text != "" ) + myShortcut->setText( text ); + return true; + } + if ( event->type() == QEvent::KeyRelease ) { + if ( myShortcut->text().endsWith("+") ) + myShortcut->setText( myPrevShortcutText ); + else myPrevShortcutText = myShortcut->text(); + + return true; + } + } + return false; +} + +/* + \brief Perform internal intialization. +*/ +void QtxShortcutEdit::initialize() +{ + myPrevShortcutText = QString(); + + QHBoxLayout* base = new QHBoxLayout( this ); + base->setMargin( 0 ); + base->setSpacing( 5 ); + + base->addWidget( myShortcut = new QLineEdit( this ) ); + + QToolButton* deleteBtn = new QToolButton(); + deleteBtn->setIcon( QPixmap( delete_icon ) ); + base->addWidget( deleteBtn ); + + myShortcut->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ); + deleteBtn->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); + + connect( deleteBtn, SIGNAL( clicked() ), this, SLOT( onCliked() ) ); + connect( myShortcut, SIGNAL( editingFinished() ), this, SLOT( onEditingFinished() ) ); +} + +/*! + \brief Constructor + \param parent parent widget +*/ +QtxShortcutTree::QtxShortcutTree( QWidget * parent ) : QTreeWidget( parent ) +{ + setColumnCount( 2 ); + setSelectionMode( QAbstractItemView::SingleSelection ); + setColumnWidth ( 0, COLUMN_SIZE); + setSortingEnabled(false); + headerItem()->setHidden ( true ); + + this->installEventFilter(this); + connect( this, SIGNAL( currentItemChanged ( QTreeWidgetItem*, QTreeWidgetItem* ) ), this, SLOT( onCurrentItemChanged ( QTreeWidgetItem*, QTreeWidgetItem* ) ) ); + +} + +/*! + \brief Destructor +*/ +QtxShortcutTree::~QtxShortcutTree(){} + +/*! + \brief Custom event filter. + \param obj event receiver object + \param event event + \return \c true if further event processing should be stopped +*/ +bool QtxShortcutTree::eventFilter(QObject* obj, QEvent* event) +{ + if ( currentItem() && currentItem()->isSelected() ) { + + if (event->type() == QEvent::KeyPress ) { + QKeyEvent* keyEvent = static_cast(event); + QString text = QtxShortcutEdit::parseEvent( keyEvent ); + if ( keyEvent->key() == Qt::Key_Delete || keyEvent->key() == Qt::Key_Backspace ) + currentItem()->setText( 1, "" ); + if ( text != "" ) { + if ( text.endsWith( "+" ) || checkUniqueness( currentItem(), text ) ) + currentItem()->setText( 1, text ); + } + return true; + } + if ( event->type() == QEvent::KeyRelease ) { + if ( currentItem()->text( 1 ).endsWith( "+" ) ) + currentItem()->setText( 1, myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] ); + else myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] = currentItem()->text( 1 ); + + return true; + } + } + return false; +} + +/*! + \brief Called when the current item changes. + \param cur the current item + \param prev the previous current item +*/ +void QtxShortcutTree::onCurrentItemChanged( QTreeWidgetItem* cur, QTreeWidgetItem* prev ) +{ + if ( prev && prev->text( 1 ).endsWith( "+" ) ) + prev->setText( 1, myPrevBindings[ prev->parent()->text( 0 ) ][ prev->text( 0 ) ] ); +} + +/*! + \brief Set key bindings to the tree + \param title the name of top-level item + \param theShortcutMap map of key bindings +*/ +void QtxShortcutTree::setBindings( const QString& title, const ShortcutMap& theShortcutMap ) +{ + QTreeWidgetItem* item= new QTreeWidgetItem(); + QFont font = item->font(0); + font.setBold(true); + + if ( findItems( title, Qt::MatchFixedString ).isEmpty() ) { + item->setText( 0, title ); + item->setFont( 0, font ); + addTopLevelItem( item ); + item->setFlags( Qt::ItemIsEnabled ); + } else { + item = findItems( title, Qt::MatchFixedString ).first(); + item->takeChildren(); + } + for( ShortcutMap::const_iterator it = theShortcutMap.constBegin(); it != theShortcutMap.constEnd(); ++it ) + item->addChild( new QTreeWidgetItem( QStringList() << it.key() << it.value() ) ); + myPrevBindings.insert( title, theShortcutMap); +} + +/*! + \brief Get all sections names. + \return list of section names +*/ +QStringList QtxShortcutTree::sections() const +{ + QStringList lst; + for( int i = 0; i < topLevelItemCount(); i++ ) + lst << topLevelItem( i )->text( 0 ); + return lst; +} + +ShortcutMap* QtxShortcutTree::bindings( const QString& sec ) const +{ + ShortcutMap* aMap = new ShortcutMap(); + QTreeWidgetItem* item = findItems( sec, Qt::MatchFixedString ).first(); + int nbChildren = item->childCount(); + + for( int i = 0; i < nbChildren; i++ ) { + QTreeWidgetItem* child = item->child(i); + aMap->insert( child->text( 0 ), child->text( 1 ) ); + } + + return aMap; +} + +void QtxShortcutTree::focusOutEvent ( QFocusEvent* event ) +{ + QWidget::focusOutEvent( event ); + if ( currentItem() && currentItem()->isSelected() ) + currentItem()->setText( 1, myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] ); +} + +/*! + \brief Set the list of shortcuts general sections. + + Key combinations in general sections should not intersect + with any other key combinations. + + \param sectionsList list of common section names +*/ +void QtxShortcutTree::setGeneralSections( const QStringList& sectionsList ) +{ + myGeneralSections = sectionsList; +} + +/*! + \brief Check uniqueness of the shortcut. + \param item current item of the shortcut tree + \param shortcut shortcut appointed for the current item + \return \c true if the given shortcut is allowed +*/ +bool QtxShortcutTree::checkUniqueness( QTreeWidgetItem* item, const QString& shortcut ) +{ + // List of sections to check shortcut intersections + QStringList sectionsList; + + // Current section + QString currentSection = currentItem()->parent()->text( 0 ); + + // If the current section is general + if ( myGeneralSections.contains(currentSection) ) { + sectionsList = sections(); + int currentSectionIndex = sectionsList.indexOf(currentSection); + sectionsList.move( currentSectionIndex, 0); + } + else { + sectionsList = myGeneralSections; + sectionsList.prepend(currentSection); + } + + // Iterate on sections + QStringList::const_iterator it; + for( it = sectionsList.constBegin(); it != sectionsList.constEnd(); ++it ) { + QString section = *it; + + // Iterate on actual section + QTreeWidgetItem* sectionRoot = findItems( section, Qt::MatchFixedString ).first(); + int nbChildren = sectionRoot->childCount(); + + for( int i = 0; i < nbChildren; i++ ) { + QTreeWidgetItem* child = sectionRoot->child(i); + + if ( (child != item) && (shortcut == child->text( 1 )) ) { + bool res = QMessageBox::warning( parentWidget(), tr("Warning"), + tr("The \"%1\" shortcut has already used by the \"%2\" action.\n") + .arg(shortcut, section + ":" + child->text( 0 ) ) + + tr("Do you want to reassign it from that action to the current one?"), + QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes; + if (res) + child->setText( 1, "" ); + return res; + } + } + } + + return true; +} diff --git a/src/Qtx/QtxShortcutEdit.h b/src/Qtx/QtxShortcutEdit.h new file mode 100755 index 000000000..391f9b341 --- /dev/null +++ b/src/Qtx/QtxShortcutEdit.h @@ -0,0 +1,87 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef QTXSHORTCUTEDIT_H +#define QTXSHORTCUTEDIT_H + +#include "Qtx.h" + +#include +#include + +class QLineEdit; +class QPushButton; +class QTreeWidgetItem; + +typedef QMap< QString, QString > ShortcutMap; + +class QTX_EXPORT QtxShortcutEdit : public QFrame +{ + Q_OBJECT + +public: + QtxShortcutEdit( QWidget* = 0 ); + virtual ~QtxShortcutEdit(); + void setShortcut( const QKeySequence& ); + QKeySequence shortcut(); + static QString parseEvent( QKeyEvent* ); + static bool isValidKey( int ); + + +private slots: + void onCliked(); + void onEditingFinished(); + +protected: + virtual bool eventFilter( QObject*, QEvent* ); + +private: + void initialize(); + +private: + QLineEdit* myShortcut; + QString myPrevShortcutText; +}; + +class QTX_EXPORT QtxShortcutTree : public QTreeWidget +{ + Q_OBJECT + +public: + QtxShortcutTree( QWidget * parent = 0 ); + virtual ~QtxShortcutTree(); + void setBindings( const QString&, const ShortcutMap& ); + ShortcutMap* bindings( const QString& ) const; + QStringList sections() const; + void setGeneralSections( const QStringList& ); + +protected: + virtual bool eventFilter( QObject*, QEvent* ); + virtual void focusOutEvent( QFocusEvent* ); + virtual bool checkUniqueness( QTreeWidgetItem*, const QString& ); + +private slots: + void onCurrentItemChanged( QTreeWidgetItem*, QTreeWidgetItem* ); + +private: + QMap< QString, ShortcutMap > myPrevBindings; + QStringList myGeneralSections; +}; + +#endif // QTXSHORTCUTEDIT_H diff --git a/src/Qtx/QtxWebBrowser.cxx b/src/Qtx/QtxWebBrowser.cxx new file mode 100644 index 000000000..79e34bc8c --- /dev/null +++ b/src/Qtx/QtxWebBrowser.cxx @@ -0,0 +1,435 @@ +// Copyright (C) 2007-2012 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: QtxWebBrowser.cxx +// Author: Roman NIKOLAEV +// +#include "QtxWebBrowser.h" +#include "QtxSearchTool.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +/*! + \class WebViewSearcher + \brief A class is used with QtxSearchTool in order to search text within the web page + \internal +*/ +class WebViewSearcher : public QtxSearchTool::Searcher +{ +public: + WebViewSearcher( QWebView* ); + ~WebViewSearcher(); + + bool find( const QString&, QtxSearchTool* ); + bool findNext( const QString&, QtxSearchTool* ); + bool findPrevious( const QString&, QtxSearchTool* ); + bool findFirst( const QString&, QtxSearchTool* ); + bool findLast( const QString&, QtxSearchTool* ); + +private: + QWebView* myView; +}; + +WebViewSearcher::WebViewSearcher( QWebView* view ) : myView( view ) +{ +} + +WebViewSearcher::~WebViewSearcher() +{ +} + +bool WebViewSearcher::find( const QString& text, QtxSearchTool* st ) +{ + QWebPage::FindFlags fl = 0; + if ( st->isCaseSensitive() ) fl = fl | QWebPage::FindCaseSensitively; + if ( st->isSearchWrapped() ) fl = fl | QWebPage::FindWrapsAroundDocument; + return myView->findText( text, fl ); +} + +bool WebViewSearcher::findNext( const QString& text, QtxSearchTool* st ) +{ + return find( text, st ); +} + +bool WebViewSearcher::findPrevious( const QString& text, QtxSearchTool* st ) +{ + QWebPage::FindFlags fl = QWebPage::FindBackward; + if ( st->isCaseSensitive() ) fl = fl | QWebPage::FindCaseSensitively; + if ( st->isSearchWrapped() ) fl = fl | QWebPage::FindWrapsAroundDocument; + return myView->findText( text, fl ); +} + +bool WebViewSearcher::findFirst( const QString&, QtxSearchTool* ) +{ + return false; +} + +bool WebViewSearcher::findLast( const QString&, QtxSearchTool* ) +{ + return false; +} + +/*! + \class QtxWebBrowser + + \brief The QtxWebBrowser provides a window that can display html pages. + + Only one instance of the QtxWebBrowser class can be created. To access the browser + window, use static method QtxWebBrowser::webBrowser(), which creates an + instance of the QtxWebBrowser widget (if it is not yet created) and returns a + pointer to it. + + You should not destroy this instance - it is done automatically after + closing of the browser window. To close window programmatically use + method close(). + + To set visual properties of the browser use static method setData(). + + The following sample demonstrates how to use web browser. + In this code the browser window is created, /data/index.html file is opened + and scrolled to the "anchor1" anchor on this page. + + \code + int main(int argc, char *argv[]) + { + QApplication app(argc, argv); + + // set icon, title and menu items. + QtxWebBrowser::setData("browser:title", tr("Web Browser")); + QtxWebBrowser::setData("browser:icon", QPixmap(":/icon.png")); + QtxWebBrowser::setData("menu:file:title", tr("&File")); + QtxWebBrowser::setData("action:close:title", tr("&Close")); + + // show HTML page + QtxWebBrowser::loadUrl("file:///data/index.html", "anchor1"); + + return app.exec(); + } + \endcode + +*/ + +//! The only one instance of web browser +QtxWebBrowser* QtxWebBrowser::myBrowser = 0; + +//! Internal data map to store resources of the browser. +QMap QtxWebBrowser::myData; + +/*! + \brief Constructor. + + Construct the web browser. +*/ +QtxWebBrowser::QtxWebBrowser() : QMainWindow( 0 ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + statusBar(); + + QWidget* frame = new QWidget( this ); + + myWebView = new QWebView( frame ); + myWebView->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); + myFindPanel = new QtxSearchTool( frame, myWebView, + QtxSearchTool::Basic | QtxSearchTool::Case | QtxSearchTool::Wrap, + Qt::Horizontal ); + myFindPanel->setFrameStyle( QFrame::NoFrame | QFrame::Plain ); + myFindPanel->setActivators( QtxSearchTool::SlashKey ); + myFindPanel->setSearcher( new WebViewSearcher( myWebView ) ); + myFindPanel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + + myToolbar = addToolBar( tr( "Navigation" ) ); + myToolbar->addAction( myWebView->pageAction( QWebPage::Back ) ); + myToolbar->addAction( myWebView->pageAction( QWebPage::Forward ) ); + + myMenus[ File ] = menuBar()->addMenu( tr( "&File" ) ); + myActions[ Find ] = myMenus[ File ]->addAction( tr( "&Find in text..." ), myFindPanel, SLOT( find() ), QKeySequence( QKeySequence::Find ) ); + myActions[ FindNext ] = myMenus[ File ]->addAction( tr( "&Find next" ), myFindPanel, SLOT( findNext() ), QKeySequence( QKeySequence::FindNext ) ); + myActions[ FindPrev ] = myMenus[ File ]->addAction( tr( "&Find previous" ), myFindPanel, SLOT( findPrevious() ), QKeySequence( QKeySequence::FindPrevious ) ); + myMenus[ File ]->addSeparator(); + myActions[ Close ] = myMenus[ File ]->addAction( tr( "&Close" ), this, SLOT( close() ) ); + + QVBoxLayout* main = new QVBoxLayout( frame ); + main->addWidget( myWebView ); + main->addWidget( myFindPanel ); + main->setMargin( 0 ); + main->setSpacing( 3 ); + + connect( myWebView, SIGNAL( titleChanged( QString ) ), SLOT( adjustTitle() ) ); + connect( myWebView, SIGNAL( linkClicked( QUrl ) ), SLOT( linkClicked( QUrl ) ) ); + connect( myWebView->page(), SIGNAL( linkHovered( QString, QString, QString ) ), SLOT( linkHovered( QString, QString, QString ) ) ); + + setCentralWidget( frame ); + setFocusProxy( myWebView ); + updateData(); + qAddPostRoutine( QtxWebBrowser::clearData ); +} + +/*! + \brief Destructor. +*/ +QtxWebBrowser::~QtxWebBrowser() +{ + myBrowser = 0; +} + +/*! + \brief Return the only instance of the QtxWebBrowser + \return instance of the QtxWebBrowser +*/ +QtxWebBrowser* QtxWebBrowser::webBrowser() +{ + if ( !myBrowser ) + myBrowser = new QtxWebBrowser(); + return myBrowser; +} + +/*! + \brief Load given url address and optional scroll to the specified anchor + \param url an url address to load + \param anchor an anchor to scroll page to +*/ +void QtxWebBrowser::loadUrl( const QString& url, const QString& anchor ) +{ + QString anUrl = url; + if( !anchor.isEmpty() ) anUrl += "#" + anchor; + anUrl.replace('\\', '/'); + + Qtx::alignWidget( webBrowser(), (QWidget*)QApplication::desktop(), Qtx::AlignCenter ); + + webBrowser()->show(); + webBrowser()->myWebView->load( QUrl( anUrl ) ); + webBrowser()->setFocus(); + webBrowser()->activateWindow(); + webBrowser()->raise(); +} + +/*! + \brief Set browser settings from. + + This method can be used to setup the browser properties. + - \c "browser:title" : title of the browser window + - \c "browser:icon" : icon of the browser window + - \c "toolbar:title" : title of the toolbar + - \c "menu:file:title" : File menu of the browser + - \c "action:close:title" : File/Close menu item title + - \c "action:close:icon" : File/Close menu item icon + - \c "action:back:title" : Navigation/Back menu item title + - \c "action:back:icon" : Navigation/Back menu item icon + - \c "action:forward:title" : Navigation/Forward menu item title + - \c "action:forward:icon" : Navigation/Forward menu item icon + - \c "action:find:title" : File/Find menu item title + - \c "action:find:icon" : File/Find menu item icon + - \c "action:findnext:title" : File/Find Next menu item title + - \c "action:findnext:icon" : File/Find Next menu item icon + - \c "action:findprev:title" : File/Find Previous menu item title + - \c "action:findprev:icon" : File/Find Previous menu item icon + + \param key name of the property + \param val value of the property + +*/ +void QtxWebBrowser::setData( const QString& key, const QVariant& val ) +{ + myData.insert( key, val ); + if ( myBrowser ) myBrowser->updateData(); +} + +/*! + \brief Get string value by key from the internal data map + \param key data key identifier + \return string value assigned to the key (null string if data is not assigned to the key) + \internal +*/ +QString QtxWebBrowser::getStringValue( const QString& key ) +{ + QString val; + if ( myData.contains( key ) && myData[key].canConvert( QVariant::String ) ) + val = myData[key].toString(); + return val; +} + +/*! + \brief Get icon value by key from the internal data map + \param key data key identifier + \return icon assigned to the key (null icon if data is not assigned to the key) + \internal +*/ +QIcon QtxWebBrowser::getIconValue(const QString& key) +{ + QIcon val; + if ( myData.contains( key ) ) { + if ( myData[key].canConvert( QVariant::Pixmap ) ) + val = myData[key].value(); + else if ( myData[key].canConvert( QVariant::Icon ) ) + val = myData[key].value(); + } + return val; +} + +/*! + \brief Update web browser properties from internal data map +*/ +void QtxWebBrowser::updateData() +{ + // main title + adjustTitle(); + + // window icon + QIcon icon = getIconValue( "browser:icon" ); + if ( !icon.isNull() ) + setWindowIcon( icon ); + + // toolbar title + QString tbTitle = getStringValue( "toolbar:title" ); + if ( myToolbar && !tbTitle.isEmpty() ) + myToolbar->setWindowTitle( tbTitle ); + + // File menu + QString fmenu = getStringValue( "menu:file:title" ); + if ( myMenus.contains( File ) && !fmenu.isEmpty() ) + myMenus[ File ]->setTitle( fmenu ); + + // File/Close menu + QString closeTlt = getStringValue( "action:close:title" ); + QIcon closeIco = getIconValue( "action:close:icon" ); + if ( myActions.contains( Close ) ) { + if ( !closeTlt.isEmpty() ) + myActions[ Close ]->setText( closeTlt ); + if ( !closeIco.isNull() ) + myActions[ Close ]->setIcon( closeIco ); + } + + // Navigation/Go Back menu + QString backTlt = getStringValue( "action:back:title" ); + QIcon backIco = getIconValue( "action:back:icon" ); + if ( !backTlt.isEmpty() ) + myWebView->pageAction( QWebPage::Back )->setText( backTlt ); + if ( !backIco.isNull() ) + myWebView->pageAction( QWebPage::Back )->setIcon( backIco ); + + // Navigation/Go Forward menu + QString fwdTlt = getStringValue( "action:forward:title" ); + QIcon fwdIco = getIconValue( "action:forward:icon" ); + if ( !fwdTlt.isEmpty() ) + myWebView->pageAction( QWebPage::Forward )->setText( fwdTlt ); + if ( !fwdIco.isNull() ) + myWebView->pageAction( QWebPage::Forward )->setIcon( fwdIco ); + + // File/Find menu + QString findTlt = getStringValue( "action:find:title" ); + QIcon findIco = getIconValue( "action:find:icon" ); + if ( myActions.contains( Find ) ) { + if ( !findTlt.isEmpty() ) + myActions[ Find ]->setText( findTlt ); + if ( !findIco.isNull() ) + myActions[ Find ]->setIcon( findIco ); + } + + // File/Find Next menu + QString findNextTlt = getStringValue( "action:findnext:title" ); + QIcon findNextIco = getIconValue( "action:findnext:icon" ); + if ( myActions.contains( FindNext ) ) { + if ( !findNextTlt.isEmpty() ) + myActions[ FindNext ]->setText( findNextTlt ); + if ( !findNextIco.isNull() ) + myActions[ FindNext ]->setIcon( findNextIco ); + } + + // File/Find Previous menu + QString findPrevTlt = getStringValue( "action:findprev:title" ); + QIcon findPrevIco = getIconValue( "action:findprev:icon" ); + if ( myActions.contains( FindPrev ) ) { + if ( !findPrevTlt.isEmpty() ) + myActions[ FindPrev ]->setText( findPrevTlt ); + if ( !findPrevIco.isNull() ) + myActions[ FindPrev ]->setIcon( findPrevIco ); + } +} + +/*! + \brief Clear internal data map + \internal +*/ +void QtxWebBrowser::clearData() +{ + myData.clear(); +} + +/*! + \brief Called when users activated any link at the page + \param url URL being clicked + \internal +*/ +void QtxWebBrowser::linkClicked( const QUrl& url ) +{ + myWebView->page()->setLinkDelegationPolicy( QWebPage::DontDelegateLinks ); + myWebView->load( url ); + if ( url.scheme() == "file" ) { + QString filename = url.toLocalFile(); + if ( QFileInfo( filename ).suffix().toLower() == "pdf" ) { +#ifdef WIN32 + ::system( QString( "start %2" ).arg( filename ).toLatin1().constData() ); +#else + // special processing of PDF files + QStringList readers; + readers << "xdg-open" << "acroread" << "kpdf" << "kghostview" << "xpdf"; + foreach ( QString r, readers ) { + QString reader = QString( "/usr/bin/%1" ).arg( r ); + if ( QFileInfo( reader ).exists() ) { + ::system( QString( "unset LD_LIBRARY_PATH; %1 %2 &" ).arg( reader ).arg( url.toLocalFile() ).toLatin1().constData() ); + break; + } + } +#endif // WIN32 + } + } + myWebView->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); +} + +/*! + \brief Called when link is hovered + \param link link being hovered + \param title link title (if it is specified in the markup) + \param content provides text within the link element, e.g., text inside an HTML anchor tag + \internal +*/ +void QtxWebBrowser::linkHovered( const QString& link, const QString& /*title*/, const QString& /*context*/ ) +{ + statusBar()->showMessage( link ); +} + +/*! + \brief Update title of the window + \internal +*/ +void QtxWebBrowser::adjustTitle() +{ + QString title = getStringValue( "browser:title" ); + setWindowTitle( title.isEmpty() ? myWebView->title() : title + QString( " [%1]" ).arg( myWebView->title() ) ); +} diff --git a/src/Qtx/QtxWebBrowser.h b/src/Qtx/QtxWebBrowser.h new file mode 100644 index 000000000..f112bc861 --- /dev/null +++ b/src/Qtx/QtxWebBrowser.h @@ -0,0 +1,82 @@ +// Copyright (C) 2007-2012 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: QtxWebBrowser.h +// Author: Roman NIKOLAEV +// + +#ifndef QTXWEBBROWSER_H +#define QTXWEBBROWSER_H + +#include "Qtx.h" + +#include +#include + +class QAction; +class QMenu; +class QToolBar; +class QWebView; +class QUrl; +class QtxSearchTool; + +class QTX_EXPORT QtxWebBrowser : public QMainWindow +{ + Q_OBJECT + + enum { File }; + enum { Find, FindNext, FindPrev, Close }; + +private: + QtxWebBrowser(); + +public: + virtual ~QtxWebBrowser(); + + static QtxWebBrowser* webBrowser(); + static void loadUrl( const QString&, const QString& = QString() ); + static void setData( const QString&, const QVariant& ); + +private: + static QString getStringValue( const QString& ); + static QIcon getIconValue( const QString& ); + void updateData(); + static void clearData(); + +protected slots: + virtual void linkClicked( const QUrl& ); + virtual void linkHovered( const QString&, const QString&, const QString& ); + +private slots: + void adjustTitle(); + +private: + static QMap myData; + static QtxWebBrowser* myBrowser; + QWebView* myWebView; + QToolBar* myToolbar; + QMap myMenus; + QMap myActions; + QtxSearchTool* myFindPanel; +}; + +#endif // QTXWEBBROWSER_H diff --git a/src/QxGraph/resources/QxGraph_msg_fr.ts b/src/QxGraph/resources/QxGraph_msg_fr.ts new file mode 100755 index 000000000..c03cdeb51 --- /dev/null +++ b/src/QxGraph/resources/QxGraph_msg_fr.ts @@ -0,0 +1,31 @@ + + + + + @default + + MEN_CHANGE_BACKGROUND + Changer l'arrière-plan... + + + MNU_PAN_VIEW + Déplacement + + + DSC_PAN_VIEW + Déplacer la vue + + + MNU_RESET_VIEW + Restaurer + + + DSC_RESET_VIEW + Restaurer le point de vue + + + LBL_TOOLBAR_LABEL + Opérations de Visualisation + + + diff --git a/src/QxScene/resources/QxSceneViewer_msg_fr.ts b/src/QxScene/resources/QxSceneViewer_msg_fr.ts new file mode 100755 index 000000000..e122d7078 --- /dev/null +++ b/src/QxScene/resources/QxSceneViewer_msg_fr.ts @@ -0,0 +1,38 @@ + + + + + @default + + MEN_CHANGE_BACKGROUND + Changer l'arrière-plan + + + MNU_PAN_VIEW + Déplacement + + + DSC_PAN_VIEW + Déplacer la vue + + + MNU_RESET_VIEW + Restaurer + + + DSC_RESET_VIEW + Restaurer le point de vue + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + + QxScene_ViewManager + + QXSCENE_VIEW_TITLE + Scène QGraphics:%M - visualisateur:%V + + + diff --git a/src/SPlot2d/SPlot2d_Histogram.cxx b/src/SPlot2d/SPlot2d_Histogram.cxx new file mode 100644 index 000000000..9635ca6ca --- /dev/null +++ b/src/SPlot2d/SPlot2d_Histogram.cxx @@ -0,0 +1,84 @@ +// Copyright (C) 2007-2012 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 : SPlot2d_Histogram.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#include "SPlot2d_Histogram.h" + +/*! + Constructor +*/ +SPlot2d_Histogram::SPlot2d_Histogram() +:Plot2d_Histogram() +{ +} + +/*! + Destructor +*/ +SPlot2d_Histogram::~SPlot2d_Histogram() +{ +} + +/*! + Copy constructor. Makes deep copy of data. +*/ +SPlot2d_Histogram::SPlot2d_Histogram( const SPlot2d_Histogram& hist ) +: Plot2d_Histogram( hist ) +{ + myIO = hist.getIO(); +} + +/*! + operator=. Makes deep copy of data. +*/ +SPlot2d_Histogram& SPlot2d_Histogram::operator=( const SPlot2d_Histogram& hist ) +{ + Plot2d_Histogram::operator=(hist); + myIO = hist.getIO(); + return *this; +} + +/*! + \return corresponding SALOME_InteractiveObject +*/ +Handle(SALOME_InteractiveObject) SPlot2d_Histogram::getIO() const +{ + return myIO; +} + +/*! + Sets corresponding SALOME_InteractiveObject + \param io - SALOME_InteractiveObject +*/ +void SPlot2d_Histogram::setIO( const Handle(SALOME_InteractiveObject)& io ) +{ + myIO = io; +} + +/*! + \return SALOME_InteractiveObject +*/ +bool SPlot2d_Histogram::hasIO() const +{ + return !myIO.IsNull(); +} diff --git a/src/SPlot2d/SPlot2d_Histogram.h b/src/SPlot2d/SPlot2d_Histogram.h new file mode 100644 index 000000000..a3bcf5ce8 --- /dev/null +++ b/src/SPlot2d/SPlot2d_Histogram.h @@ -0,0 +1,54 @@ +// Copyright (C) 2007-2012 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 : SPlot2d_Histogram.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#ifndef SPlot2d_Histogram_h +#define SPlot2d_Histogram_h + +#include "SPlot2d.h" + +#include "Plot2d_Histogram.h" + +#ifndef _Handle_SALOME_InteractiveObject_HeaderFile +#include +#endif +#include "SALOME_InteractiveObject.hxx" + +class SPLOT2D_EXPORT SPlot2d_Histogram : public Plot2d_Histogram +{ +public: + + SPlot2d_Histogram(); + virtual ~SPlot2d_Histogram(); + SPlot2d_Histogram( const SPlot2d_Histogram& hist ); + SPlot2d_Histogram& operator= ( const SPlot2d_Histogram& hist ); + + virtual bool hasIO() const; + virtual Handle(SALOME_InteractiveObject) getIO() const; + virtual void setIO( const Handle(SALOME_InteractiveObject)& ); + +private: + Handle(SALOME_InteractiveObject) myIO; +}; + +#endif // SPlot2d_Histogram_h diff --git a/src/STD/resources/STD_msg_fr.ts b/src/STD/resources/STD_msg_fr.ts new file mode 100755 index 000000000..e8f4b4e79 --- /dev/null +++ b/src/STD/resources/STD_msg_fr.ts @@ -0,0 +1,493 @@ + + + + + @default + + TOT_DESK_EDIT_CUT + Couper + + + PRP_DESK_EDIT_CUT + Couper la sélection et la placer dans la presse-papier + + + MEN_DESK_EDIT_CUT + Co&uper + + + ERR_APP_NOAPP + Pas d'application + + + MEN_DESK_WINDOW + &Fenêtre + + + TOT_DESK_EDIT_COPY + Copier + + + MEN_DESK_WINDOW_CASCADE + Cascade + + + PRP_DESK_EDIT_COPY + Copier la sélection dans le presse-papiers + + + PRP_DESK_WINDOW_CASCADE + Ranger les fenêtres en cascade + + + TOT_DESK_FILE_SAVEAS + Enregistrer le document sous... + + + MEN_DESK_EDIT_COPY + &Copier + + + MSG_CANT_SAVE + Impossible de sauvegarder le fichier "%1". + + + INF_DESK_TOOLBAR_STANDARD + Standard + + + ALL_FILES + Tous les fichiers (*.*) + + + DESK_DEFAULTTITLE + Qt Framework d'Applications + + + QUE_DESK_EXIT + Voulez-vous vraiment quitter ? + + + INF_INFO + Information + + + ERR_DOC_UNKNOWNTYPE_OPEN + Vous essayez d'ouvrir un document de type inconnu +( %1 ) + + + ERR_DOC_UNKNOWNTYPE_SAVE + Vous essayez de sauvegarder le document sous un type inconnu +( %1 ) + + + TOT_DESK_NEWWINDOW + Créer une nouvelle fenêtre + + + BUT_CANCEL + &Annuler + + + MEN_DESK_HELP_ABOUT + &A propos de... + + + PRP_DESK_NEWWINDOW + Créer une nouvelle fenêtre + + + MEN_DESK_VIEW_STATUSBAR + &Barre de status + + + MEN_DESK_NEWWINDOW + &Nouvelle fenêtre + + + PRP_DESK_VIEW_STATUSBAR + Activer ou désactiver la barre de status + + + ERR_DOC_DIRWITHNAMEEXIST_SAVE + Impossible de sauvegarder le fichier %1. +Un répertoire avec ce nom existe déjà sur le disque. Essayez d'utiliser un autre nom + + + BUT_NO + N&on + + + BUT_OK + O&k + + + FILTER_FILES + Fichiers %1 (%2) + + + PRP_DESK_WINDOW_ACTIVATE + Activer la fenêtre + + + TOT_DESK_FILE_PRINT + Imprimer un document + + + TOT_DESK_FILE_CLOSE + Fermer le document + + + TOT_DESK_FILE_NEW + Créer un nouveau document + + + PRP_DESK_FILE_NEW + Crée un nouveau document + + + PRP_DESK_FILE_MRU + Ouvre un document + + + MEN_DESK_FILE_NEW + &Nouveau + + + MEN_DESK_FILE_MRU + &Fichiers récents + + + TOT_DESK_EDIT_PASTE + Coller + + + MEN_DESK_VIEW_DOCKWINDOWS + Fenêtres + + + BUT_YES + O&ui + + + MEN_DESK_VIEW + &Affichage + + + PRP_DESK_HELP_ABOUT + Montre la boîte de dialogue 'A propos' + + + MEN_DESK_FILE + Fic&hier + + + MEN_DESK_EDIT + &Edition + + + MEN_DESK_HELP + A&ide + + + ERR_ERROR + Erreur + + + ERR_DESK_NOAPP + Pas d'application enregistrée + + + INF_DESK_DOC_CREATE + Créer un nouveau document + + + QUE_DOC_ALREADYOPEN + Le document %1 est déjà ouvert. +Voulez-vous le réouvrir? + + + BUT_APPLY + A&ppliquer + + + BUT_CLOSE + &Fermer + + + INF_DESK_EXIT + &Quitter + + + ERR_UNKNOWN + Erreur inconnue + + + BUT_HELP + A&ide + + + PRP_DESK_FILE_CLOSE + Ferme le document actuel + + + PRP_DESK_FILE_PRINT + Imprime le document actuel + + + WRN_WARNING + Avertissement + + + TOT_DESK_HELP_ABOUT + A propos... + + + MEN_DESK_VIEW_TOOLBARS + Barres d'&outils + + + PRP_DESK_WINDOW_HSPLIT + Diviser la fenêtre actuelle en deux parties horizontales + + + MEN_DESK_WINDOW_HSPLIT + Séparation horizontale + + + PRP_DESK_EDIT_PASTE + Insérer le contenu du presse-papiers au point d'insertion + + + DLG_LOAD_STUDY_CAPTION + Ouvrir une étude + + + PRP_DESK_HELP_SEARCH + Chercher de l'information sur le sujet + + + PRP_DESK_FILE_SAVEAS + Sauvegarder le document actuel sous un nouveau nom + + + INF_READY + Prêt + + + INF_CANCELLED + Annulé + + + PRP_DESK_WINDOW_VSPLIT + Diviser la fenêtre actuelle en deux parties verticales + + + MEN_DESK_WINDOW_VSPLIT + Séparation verticale + + + PRP_DESK_WINDOW_TILE + Ranger les fenêtres en mosaïque + + + MEN_DESK_HELP_CONTENTS + &Contenu + + + PRP_DESK_HELP_CONTENTS + Afficher le sommaire de la référence documentaire + + + MEN_DESK_WINDOW_HTILE + Mosaïque horizontale + + + MEN_DESK_WINDOW_VTILE + Mosaïque verticale + + + ERR_DOC_PERMISSIONDENIED_SAVE + Impossible de sauvegarder le fichier %1. Autorisaton refusée. + + + INF_DESK_DOCALREADYOPEN + Impossible de sauvegarder le document sous le nom d'un document déjà ouvert. +Indiquez un autre nom pour le document que vous voulez sauvegarder. +( %1 ) + + + TIT_FILE_SAVEAS + Enregistrer sous + + + MEN_DESK_FILE_CLOSE + Fer&mer + + + MSG_FILE_EXISTS + Le fichier "%1" existe déjà. +Voulez-vous l'écraser ? + + + MEN_DESK_FILE_PRINT + &Imprimer + + + MEN_DESK_HELP_SEARCH + &Recherche... + + + MEN_DESK_VIEW_STDTOOLBAR + &Standard + + + MEN_DESK_FILE_SAVEAS + Enre&gistrer sous... + + + PRP_DESK_VIEW_STDTOOLBAR + Activer ou désactiver la barre standard + + + TOT_DESK_FILE_SAVE + Enregistrer le document + + + TOT_DESK_FILE_EXIT + Quitter l'application + + + TOT_DESK_FILE_LOAD + Charger le document + + + TOT_DESK_FILE_OPEN + Ouvrir un document + + + TOT_DESK_FILE_REOPEN + Réouvrir un document + + + PRP_DESK_FILE_EXIT + Quitte l'application + + + PRP_DESK_FILE_OPEN + Ouvre un document existant + + + PRP_DESK_FILE_REOPEN + Réouvrir le document actuel à partir d'un fichier + + + PRP_DESK_FILE_SAVE + Sauvegarder le document actuel + + + PRP_DESK_FILE_LOAD + Charge un document + + + PRP_DESK_WINDOW_HTILE + Ranger les fenêtres en mosaïque horizontale + + + PRP_DESK_WINDOW_VTILE + Ranger les fenêtres en mosaïque verticale + + + MEN_DESK_WINDOW_TILE + Mosaïque + + + MEN_DESK_FILE_EXIT + &Quitter + + + MEN_DESK_FILE_OPEN + &Ouvrir... + + + MEN_DESK_FILE_REOPEN + &Réouvrir + + + MEN_DESK_FILE_LOAD + Connec&ter... + + + MEN_DESK_FILE_SAVE + &Enregistrer + + + MEN_DESK_EDIT_PASTE + Co&ller + + + MEN_STUDIES_CHOICE + Choisir une étude existante + + + + STD_Application + + INF_DOC_MODIFIED + Le document a été modifié. +Voulez-vous sauvegarder les modifications? + + + INF_DOC_SAVING + Sauvegarde de l'étude en cours + + + INF_DOC_SAVED + L'étude %1 est sauvegardée + + + TOT_DOCK_WINDOWS + Montrer / cacher les fenêtres ancrables et les barres d'outils + + + MEN_DOCK_WINDOWS + Fenêtres et Barres d'outils + + + ABOUT_INFO + Application SUIT Std + + + INF_DOC_SAVING_FAILS + Impossible de sauvegarder le fichier "%1". +Les raisons possibles sont: +- un problème de droit; +- l'espace disque restant est insuffisant; +- erreur de l'application; +Essayez d'utiliser un autre nom de fichier. + + + INF_DOCUMENT_MODIFIED + Le document "%1" a été modifié. +Voulez-vous sauvegarder les changements? + + + CLOSE_STUDY + Fermer l'étude actuelle + + + CLOSE_QUESTION + Voulez-vous sauvegarder l'étude avant de la fermer? + + + REOPEN_STUDY + Réouvrir l'étude + + + REOPEN_QUESTION + Voulez-vous vraiment réouvrir l'étude? +Toutes les modifications introduites après le dernier enregistrement seront perdues. + + + diff --git a/src/SUIT/SUIT_ShortcutMgr.cxx b/src/SUIT/SUIT_ShortcutMgr.cxx new file mode 100644 index 000000000..dd25d567c --- /dev/null +++ b/src/SUIT/SUIT_ShortcutMgr.cxx @@ -0,0 +1,187 @@ +// Copyright (C) 2007-2012 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 "SUIT_ShortcutMgr.h" + +#include "SUIT_Session.h" +#include "SUIT_ResourceMgr.h" + +#include + +#include +#include + +SUIT_ShortcutMgr* SUIT_ShortcutMgr::myShortcutMgr = NULL; + +/*! + \brief Constructor +*/ +SUIT_ShortcutMgr::SUIT_ShortcutMgr() +: QObject() +{ + qApp->installEventFilter( this ); +} + +/*! + \brief Destructor +*/ +SUIT_ShortcutMgr::~SUIT_ShortcutMgr() +{ + qApp->removeEventFilter( this ); +} + +/*! + \brief Create new instance of shortcut manager. +*/ +void SUIT_ShortcutMgr::Init() +{ + if( myShortcutMgr==NULL ) + myShortcutMgr = new SUIT_ShortcutMgr(); +} + +/*! + \brief Return shortcut manager. +*/ +SUIT_ShortcutMgr* SUIT_ShortcutMgr::getShortcutMgr() +{ + Init(); + + return myShortcutMgr; +} + +/*! + \brief Custom event filter for qapplication . + + Redefined from QObject::eventFilter(); +*/ +bool SUIT_ShortcutMgr::eventFilter( QObject* o, QEvent* e ) +{ + if ( e->type() == QEvent::ActionAdded ) { + QActionEvent* anActionEvent = (QActionEvent*)e; + if (anActionEvent) { + QtxAction* anAction = qobject_cast( anActionEvent->action() ); + if ( anAction ) + processAction( anAction ); + } + } + + return QObject::eventFilter( o, e ); +} + +/*! + \brief Return key sequence for shortcut action name. + \param actionName name of shortcut action in preferences + \return key sequence defined in preferences or empty sequence +*/ +QKeySequence SUIT_ShortcutMgr::getShortcutByActionName( const QString& actionName ) const +{ + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + + QString section = actionName.section( resMgr->sectionsToken(), 0, 0 ); + section.prepend( QString("shortcuts") + resMgr->sectionsToken() ); + QString parameter = actionName.section( resMgr->sectionsToken(), 1, 1 ); + + QString shortcutValue; + bool hasValue = resMgr->value( section, parameter, shortcutValue, false ); + + if ( !hasValue ) + return QKeySequence(); + + return QKeySequence::fromString( shortcutValue ); +} + +/*! + \brief Set shortcut to the given action if the shortcut is defined. + \param action action to process + */ +void SUIT_ShortcutMgr::processAction( QtxAction* action ) +{ + QString shortcutActionName = action->shortcutActionName(); + + if ( !shortcutActionName.isEmpty() ) { + // Add action to the actions map + if ( !myShortcutActions.contains( shortcutActionName, action ) ) { + myShortcutActions.insert( shortcutActionName, action ); + connect( action, SIGNAL( destroyed( QObject* ) ), + this, SLOT ( onActionDestroyed( QObject* ) ) ); + } + + QKeySequence keySeq = getShortcutByActionName( shortcutActionName ); + action->setShortcut( keySeq ); + } +} + +/*! + \brief Enable/disable a shortcuts section. + + Enables or disables actions which belong to the given shortcuts section. + Only actions which have an active desktop as a parent widget + are taken into account. + + \param section shorcuts section + \param on if \c true - action will be enabled, otherwise - disabled +*/ +void SUIT_ShortcutMgr::setSectionEnabled( const QString& section, const bool on ) +{ + QMap::ConstIterator it; + for ( it = myShortcutActions.constBegin(); it != myShortcutActions.constEnd(); ++it ) { + QtxAction* action = it.value(); + QString shortcutActionName = action->shortcutActionName(); + QString actionSection = shortcutActionName.section( ":", 0, 0 ); + if ( actionSection == section ) { + // Check if the action parent widget equals to the active desktop + SUIT_Application* app = SUIT_Session::session()->activeApplication(); + if ( !app ) + return; + if ( action->parentWidget() == (QWidget*)app->desktop() ) + action->setEnabled( on ); + } + } +} + +/*! + \brief Update shortcuts from preferences. +*/ +void SUIT_ShortcutMgr::updateShortcuts() +{ + QMap::ConstIterator it; + for ( it = myShortcutActions.constBegin(); it != myShortcutActions.constEnd(); ++it ) { + QtxAction* action = it.value(); + QKeySequence keySeq = getShortcutByActionName( action->shortcutActionName() ); + action->setShortcut( keySeq ); + } +} + +/*! + \brief Called when the corresponding action is destroyed. + + Removes destroyed action from the actions list. + + \param obj action being destroyed +*/ +void SUIT_ShortcutMgr::onActionDestroyed( QObject* obj ) +{ + QtxAction* anAction = (QtxAction*)obj; + + if ( anAction ) + myShortcutActions.remove( anAction->shortcutActionName(), anAction ); +} diff --git a/src/SUIT/SUIT_ShortcutMgr.h b/src/SUIT/SUIT_ShortcutMgr.h new file mode 100644 index 000000000..cbccabaa7 --- /dev/null +++ b/src/SUIT/SUIT_ShortcutMgr.h @@ -0,0 +1,75 @@ +// Copyright (C) 2007-2012 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 SUIT_SHORTCUTMGR_H +#define SUIT_SHORTCUTMGR_H + +#include "SUIT.h" + +#include +#include + +class QtxAction; + +class QKeySequence; + +#if defined WIN32 +#pragma warning( disable: 4251 ) +#endif + +/*! + \class SUIT_ShortcutMgr + \brief Class which manages shortcuts customization. +*/ +class SUIT_EXPORT SUIT_ShortcutMgr: public QObject +{ + Q_OBJECT +public: + static void Init(); + static SUIT_ShortcutMgr* getShortcutMgr(); + + void setSectionEnabled( const QString&, const bool = true ); + void updateShortcuts(); + +protected: + SUIT_ShortcutMgr(); + virtual ~SUIT_ShortcutMgr(); + +private slots: + void onActionDestroyed( QObject* ); + +private: + virtual bool eventFilter( QObject* o, QEvent* e ); + + void processAction( QtxAction* ); + QKeySequence getShortcutByActionName( const QString& ) const; + +private: + static SUIT_ShortcutMgr* myShortcutMgr; + QMultiMap myShortcutActions; +}; + +#if defined WIN32 +#pragma warning( default: 4251 ) +#endif + +#endif diff --git a/src/SUIT/resources/SUIT_images.ts b/src/SUIT/resources/SUIT_images.ts new file mode 100644 index 000000000..ff3f7d4fc --- /dev/null +++ b/src/SUIT/resources/SUIT_images.ts @@ -0,0 +1,15 @@ + + + + + @default + + ICON_DATAOBJ_VISIBLE + icon_visibility_on.png + + + ICON_DATAOBJ_INVISIBLE + icon_visibility_off.png + + + diff --git a/src/SUIT/resources/SUIT_msg_fr.ts b/src/SUIT/resources/SUIT_msg_fr.ts new file mode 100755 index 000000000..345b25512 --- /dev/null +++ b/src/SUIT/resources/SUIT_msg_fr.ts @@ -0,0 +1,151 @@ + + + + + @default + + MEN_DESK_WINDOW + &Fenêtre + + + ERR_CANT_DUMP_VIEW + Impossible de sauvegarder le contenu de la vue dans le fichier. + + + TLT_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg) + + + MEN_DESK_WINDOW_CASCADE + &Cascade + + + PRP_DESK_WINDOW_CASCADE + Superpose les fenêtres + + + ERR_DIR_NOT_EXIST + Le répertoire "%1" n'existe pas ! + + + ERR_FILE_NOT_DIR + "%1" n'est pas un répertoire ! + + + CONTINUE + Continuer + + + CANCEL + Annuler + + + ERR_FILE_NOT_EXIST + Le fichier "%1" n'existe pas ! + + + QUE_DOC_FILEEXISTS + Le fichier %1 existe déjà. +Voulez-vous l'écraser ? + + + PRP_DESK_WINDOW_ACTIVATE + Active la fenêtre + + + ERR_PERMISSION_DENIED + Impossible de sauvegarder le fichier "%1". +Autorisation interdite. + + + ERR_OPEN_PERMISSION_DENIED + Impossible d'ouvrir le fichier "%1". +Autorisation interdite. + + + ERR_DIR_READ_PERMISSION_DENIED + Impossible de lire le répertoire "%1". +Autorisation interdite. + + + ERR_DIR_WRITE_PERMISSION_DENIED + Impossible d'écrire dans le répertoire "%1". +Autorisation interdite. + + + ERR_ERROR + Erreur + + + QUE_FILE_EXISTS + Le fichier %1 existe déjà. +Voulez-vous l'écraser ? + + + WRN_WARNING + Avertissement + + + TLT_DUMP_VIEW + Enregistrer la vue dans le fichier + + + PRP_DESK_WINDOW_TILE + Place les fenêtres en mosaïque + + + MEN_DESK_WINDOW_VTILE + Mosaïque &verticale + + + INF_DIRECTORIES_FILTER + Répertoires + + + PRP_DESK_WINDOW_VTILE + Place les fenêtres en mosaïque verticale + + + MEN_DESK_WINDOW_TILE + &Mosaïque + + + NAME_COLUMN + Nom + + + + SUIT_Study + + OPERATION_LAUNCH + Lancer l'opération + + + PREVIOUS_NOT_FINISHED + L'opération précédente n'est pas aboutie et sera interrompue + + + + SUIT_FileDlg + + LAB_QUICK_PATH + Emplacement : + + + BUT_ADD_PATH + Ajouter un chemin + + + INF_DESK_DOC_OPEN + Ouvrir un fichier + + + INF_DESK_DOC_SAVE + Sauvegarder un fichier + + + ALL_FILES_FILTER + Tous les fichiers (*) + + + diff --git a/src/SUIT/resources/icon_visibility_off.png b/src/SUIT/resources/icon_visibility_off.png new file mode 100644 index 0000000000000000000000000000000000000000..31c505d82d1b08a54ac666f380e47837c04a9247 GIT binary patch literal 344 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 WTb=;+;gt>m0000interp; + PyEval_InitThreads(); // Create (and acquire) the interpreter lock + SUIT_PYTHON::_gtstate = PyEval_SaveThread(); // Release global thread state + SUIT_PYTHON::initialized = true; +} + diff --git a/src/SUITApp/SUITApp_init_python.hxx b/src/SUITApp/SUITApp_init_python.hxx new file mode 100644 index 000000000..50855fb9d --- /dev/null +++ b/src/SUITApp/SUITApp_init_python.hxx @@ -0,0 +1,59 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// Author : Roman NIKOLAEV, Open CASCADE S.A.S. (roman.nikolaev@opencascade.com) +// Date : 22/06/2007 +// +#ifndef _SUITAPP_INIT_PYTHON_ +#define _SUITAPP_INIT_PYTHON_ + +#include + +// rnv: avoid compilation warning on Linux : "_POSIX_C_SOURCE" and "_XOPEN_SOURCE" are redefined +#ifdef _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#endif + +#ifdef _XOPEN_SOURCE +#undef _XOPEN_SOURCE +#endif + +#include + +#ifdef WNT +# if defined SUITAPP_EXPORTS || defined SUITApp_EXPORTS +# define SUITAPP_EXPORT __declspec(dllexport) +# else +# define SUITAPP_EXPORT __declspec(dllimport) +# endif +#else +# define SUITAPP_EXPORT +#endif + +struct SUITAPP_EXPORT SUIT_PYTHON +{ + static PyThreadState *_gtstate; + static PyInterpreterState *_interp; + static PyObject *salome_shared_modules_module; + static bool initialized; + static void init_python(int argc, char **argv); + +}; + +#endif // _SUITAPP_INIT_PYTHON_ diff --git a/src/SUITApp/resources/SUITApp_msg_fr.ts b/src/SUITApp/resources/SUITApp_msg_fr.ts new file mode 100755 index 000000000..92f8f53fb --- /dev/null +++ b/src/SUITApp/resources/SUITApp_msg_fr.ts @@ -0,0 +1,19 @@ + + + + + @default + + APP_OK + Ok + + + APP_ERROR + Erreur + + + APP_UNK_EXCEPTION + Exception inconnue + + + diff --git a/src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts b/src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts new file mode 100755 index 000000000..27458b761 --- /dev/null +++ b/src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts @@ -0,0 +1,27 @@ + + + + + @default + + MNU_PAN_VIEW + Déplacement + + + DSC_PAN_VIEW + Déplacement de la vue + + + MNU_RESET_VIEW + Restaurer + + + DSC_RESET_VIEW + Restaurer le point de vue + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + diff --git a/src/SVTK/resources/SVTK_msg_fr.ts b/src/SVTK/resources/SVTK_msg_fr.ts new file mode 100755 index 000000000..9ea65e81e --- /dev/null +++ b/src/SVTK/resources/SVTK_msg_fr.ts @@ -0,0 +1,607 @@ + + + + + @default + + DSC_ANTICLOCKWISE_VIEW + Tourner la vue à gauche + + + DSC_CLOCKWISE_VIEW + Tourner la vue à droite + + + MNU_ANTICLOCKWISE_VIEW + Tourner la vue à gauche + + + MNU_CLOCKWISE_VIEW + Tourner la vue à droite + + + MNU_FRONT_VIEW + Avant + + + ERROR + Erreur + + + MNU_DUMP_VIEW + Sauvegarder la scène... + + + DSC_TOP_VIEW + Vue de dessus + + + MNU_PAN_VIEW + Déplacement + + + MNU_TOP_VIEW + Dessus + + + DSC_GLOBALPAN_VIEW + Sélection d'un nouveau centre de la vue + + + DSC_ROTATE_VIEW + Tourner le point de vue autour du centre de la scène + + + MNU_ZOOM_VIEW + Zoom + + + DSC_PAN_VIEW + Déplacer la vue + + + DSC_LEFT_VIEW + Vue de gauche + + + DSC_FITALL + Redimensionner la scène pour montrer tous les objets + + + MNU_FITALL + Tout afficher + + + MNU_ROTATE_VIEW + Rotation + + + DSC_SHOW_TRIHEDRON + Montrer/cacher le trièdre + + + DSC_FRONT_VIEW + Vue de face + + + MNU_GLOBALPAN_VIEW + Panoramique global + + + INF_APP_DUMP_VIEW + Sauvegarder la vue + + + MNU_BACK_VIEW + Arrière + + + MNU_SHOW_TRIHEDRON + Afficher/cacher le trièdre + + + DSC_CHANGINGROTATIONPOINT_VIEW + Changer le point autour duquel la scène est tournée + + + MNU_BOTTOM_VIEW + Dessous + + + MNU_RESET_VIEW + Restaurer + + + MNU_LEFT_VIEW + Gauche + + + DSC_RIGHT_VIEW + Vue de droite + + + MNU_CHANGINGROTATIONPOINT_VIEW + Changer le point de rotation + + + DSC_FITRECT + Redimensionner la scène pour ne montrer que sa partie choisie par l'encadré + + + MNU_FITRECT + Afficher la zone + + + DSC_BOTTOM_VIEW + Vue de dessous + + + DSC_DUMP_VIEW + Sauvegarder la scène actuelle dans un fichier image + + + DSC_ZOOM_VIEW + Zoomer la vue + + + VTK_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg) + + + DSC_RESET_VIEW + Restaurer le point de vue + + + ERR_DOC_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + MNU_RIGHT_VIEW + Droite + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + DSC_BACK_VIEW + Vue arrière + + + SVTK_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg *.pdf *.ps *.eps) + + + MNU_VIEWPARAMETERS_VIEW + Changer les paramètres de visualisation + + + DSC_VIEWPARAMETERS_VIEW + Changer les paramètres de la vue + + + MNU_SYNCHRONIZE_VIEW + Synchroniser + + + DSC_SYNCHRONIZE_VIEW + Synchroniser la vue + + + MNU_SYNC_NO_VIEW + [ Pas de vue appropriée ] + + + MNU_SVTK_PARALLEL_MODE + Mode orthogonal + + + DSC_SVTK_PARALLEL_MODE + Choisir la projection orthogonale + + + MNU_SVTK_PERSPECTIVE_MODE + Mode perspective + + + DSC_SVTK_PERSPECTIVE_MODE + Choisir la projection en perspective + + + DSC_SVTK_STYLE_SWITCH + Changer le style d'intéraction + + + MNU_SVTK_STYLE_SWITCH + Changer le style d'interaction + + + DSC_SVTK_ZOOMING_STYLE_SWITCH + Changer le style de zoom + + + MNU_SVTK_ZOOMING_STYLE_SWITCH + Changer le style de zoom + + + DSC_SVTK_DYNAMIC_PRESLECTION_SWITCH + Pré-sélection dynamique + + + MNU_SVTK_DYNAMIC_PRESLECTION_SWITCH + Pré-sélection dynamique + + + + SVTK_FontWidget + + ARIAL + Arial + + + TIMES + Times + + + COURIER + Courier + + + + SVTK_ViewWindow + + DSC_SVTK_UPDATE_RATE + Fréquence de mise à jour + + + DSC_SVTK_SCALING + Mise à l'échelle + + + MNU_SVTK_SCALING + Mise à l'échelle + + + MNU_SVTK_GRADUATED_AXES + Axes gradués + + + DSC_SVTK_GRADUATED_AXES + Axes gradués + + + MNU_SVTK_UPDATE_RATE + Fréquence de mise à jour + + + DSC_SVTK_RECORDING_START + Commencer l'enregistrement + + + MNU_SVTK_RECORDING_START + Commencer l'enregistrement + + + DSC_SVTK_RECORDING_PLAY + Commencer l'enregistrement + + + MNU_SVTK_RECORDING_PLAY + Commencer l'enregistrement + + + DSC_SVTK_RECORDING_PAUSE + Mettre en pause l'enregistrement + + + MNU_SVTK_RECORDING_PAUSE + Mettre en pause l'enregistrement + + + DSC_SVTK_RECORDING_STOP + Arrêter l'enregistrement + + + MNU_SVTK_RECORDING_STOP + Arrêter l'enregistrement + + + LBL_TOOLBAR_RECORD_LABEL + Opérations d'enregistrement + + + MSG_NO_AVI_MAKER + L'outil jpeg2yuv, requis pour enregistrer les fichiers AVI, n'est pas disponible. +Veuillez consulter la documentation. + + + + SVTK_NonIsometricDlg + + LBL_X + X: + + + LBL_Y + Y: + + + LBL_Z + Z: + + + MEN_SCALING + Echelle + + + DLG_TITLE + Mise à l'échelle + + + + SVTK_RecorderDlg + + ALL_DISLPAYED_FRAMES + Enregistrer toutes les images affichées + + + CLOSE + Fermer + + + DLG_RECORDER_TITLE + Magnéto + + + FILE_NAME + Sauvegarder dans le fichier : + + + FLT_ALL_FILES + Tous les fichiers (*.*) + + + FLT_AVI_FILES + Fichiers AVI (*.avi) + + + FPS + FPS : + + + HELP + Aide + + + PROGRESSIVE + Progressive + + + QUALITY + Qualité : + + + RECORDING_MODE + Mode : + + + SETTINGS + Réglages + + + SKIPPED_FRAMES + Enregistrer à FPS donné + + + START + Commencer + + + + SVTK_SetRotationPointDlg + + LBL_X + X: + + + LBL_Y + Y: + + + LBL_Z + Z: + + + LBL_CENTER_OF_BOUNDING_BOX + Centre de la boîte englobante + + + RBUTTONGROUP_TITLE + Le type du point de rotation + + + USE_BBCENTER + Utiliser le centre de la boîte englobante + + + LBL_ORIGIN + Origine du système de coordonnées + + + LBL_SELECTED_POINT + Point sélectionné + + + LBL_TOORIGIN + Réinitialiser à l'origine + + + LBL_SELECTPOINT + Choisir un point dans la vue + + + DLG_TITLE + Définir le point de rotation + + + + SVTK_ViewParameterDlg + + LBL_X + X : + + + LBL_Y + Y : + + + LBL_Z + Z : + + + LBL_DX + DX : + + + LBL_DY + DY : + + + LBL_DZ + DZ : + + + PROJECTION_MODE + Mode de projection + + + ORTHOGONAL_MODE + Orthogonal + + + PERSPECTIVE_MODE + Perspective + + + USE_BBCENTER + Utiliser le centre de la boîte englobante + + + LBL_TOBBCENTER + Définir au centre de la boîte englobante + + + LBL_TOORIGIN + Initialiser à l'origine + + + LBL_SELECTPOINT + Choisir un point de la vue + + + FOCAL_POINT + Point focal + + + CAMERA_POSITION + Position de la caméra + + + WORLD_COORDINATES + Coordonnées obsolues + + + FOCAL_RELATIVE + Relatif au point focal + + + PROJECTION_DIRECTION + Direction de la projection : + + + FOCAL_DISTANCE + Distance focale : + + + VIEW_UP_DIRECTION + Direction pour la vue verticale : + + + ZOOMING + Zoom + + + LBL_SCALE + Echelle + + + LBL_VIEW_ANGLE + Angle de visualisation + + + DLG_TITLE + Paramètres de visualisation + + + + SVTK_UpdateRateDlg + + INFORMATION_FRAME_TITLE + Informations + + + STILL + Fréquence réduite de mise à jour , FPS + + + INPUT_FRAME_TITLE + Activer + + + NUMBER_CELLS + Nombre de cellules, - + + + DESIRED + Fréquence de mise à jour requise, FPS + + + CURRENT_FPS + Fréquence actuelle de mise à jour , FPS + + + DLG_TITLE + Fréquence de mise à jour + + + + SVTK_ViewManager + + VTK_VIEW_TITLE + Scène VTK:%1 - visualiseur:%2 + + + + SVTK_Viewer + + MEN_DUMP_VIEW + Sauvegarder la vue... + + + MEN_SHOW_TOOLBAR + Montrer la barre d'outils + + + MEN_CHANGE_BACKGROUND + Changer l'arrière-plan... + + + GT_VERTICALGRADIENT + Gradient vertical + + + BG_IMAGE_FILES + Fichiers images (*.png *.jpg *.jpeg *.bmp *.tif *.tiff *.mhd *.mha) + + + diff --git a/src/SVTK/resources/vtk_view_highlight.png b/src/SVTK/resources/vtk_view_highlight.png new file mode 100755 index 0000000000000000000000000000000000000000..0aa1d6f9c6624693ee049035e8551d882e557438 GIT binary patch literal 835 zcmV-J1HAl+P)Px#24YJ`L;ykni2&i^nL@V!000SaNLh0L01m_e01m_fl`9S#00007bV*G`2ipl4 z5ds^DCplyQ00P5FL_t(I%dM2pOH@%5$3OR++cZwoPqQ2$E3=%0Hd;hc|3JH`Re`%A z`awjZ3kRVeN?B2sL|8!)LW^h-L{WiJk_9yov}hKg4T+VaNx!T{=e2lm#u;(SMHepb z@ZRHdzUQ3py(SzE^S@R+9>;pI^B-Vqf&Mg*^U*$xC@P8(!5Brv-8&m*(Z8k%D~eb_ z)uJM(wTK7>Pxb*+0~v*g2u1`lFqwDNF!UL3*mAR#+K`L(9)>WFlG7T`I6Wa*MMMV9jB?ejpjW&XluJnEEWS` z+}p`Xe#`(T`%FZc6)Xbd=l;WI1Oh&4Yimg)5=0`A-T4fj0Z#UrF+xFLKE8s*d>;A0 z&0Dt_Oa34ltxEv0X#qvWou*YBCq*(jia+SXT0bL$BV4<7m7(EJOXKnQ%ZiGMN@L8M z$v~L^=K3tz4p$LW03&9Y^s zUB=9~l&^sxn;|?ZIPqa7hq-}SW{X&uVbqJ{s8y$zKYI`L1zE} N002ovPDHLkV1n7(bgcjY literal 0 HcmV?d00001 diff --git a/src/SVTK/resources/vtk_view_sync.png b/src/SVTK/resources/vtk_view_sync.png new file mode 100755 index 0000000000000000000000000000000000000000..32b95228a8b97c791405a2b82d9a472aecf37c1b GIT binary patch literal 627 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 + +vtkCxxRevisionMacro(vtkPVAxesActor, "$Revision$"); +vtkStandardNewMacro(vtkPVAxesActor); + +vtkCxxSetObjectMacro( vtkPVAxesActor, UserDefinedTip, vtkPolyData ); +vtkCxxSetObjectMacro( vtkPVAxesActor, UserDefinedShaft, vtkPolyData ); + +//----------------------------------------------------------------------------- +vtkPVAxesActor::vtkPVAxesActor() +{ + this->XAxisLabelText = NULL; + this->YAxisLabelText = NULL; + this->ZAxisLabelText = NULL; + + this->SetXAxisLabelText("X"); + this->SetYAxisLabelText("Y"); + this->SetZAxisLabelText("Z"); + + //colors chosen to match the output of vtkAxes.cxx's LUT. + this->XAxisShaft = vtkActor::New(); + this->XAxisShaft->GetProperty()->SetColor(1, 0, 0); + this->YAxisShaft = vtkActor::New(); + this->YAxisShaft->GetProperty()->SetColor(1, 1, 0); + this->ZAxisShaft = vtkActor::New(); + this->ZAxisShaft->GetProperty()->SetColor(0, 1, 0); + + this->XAxisTip = vtkActor::New(); + this->XAxisTip->GetProperty()->SetColor(1, 0, 0); + this->YAxisTip = vtkActor::New(); + this->YAxisTip->GetProperty()->SetColor(1, 1, 0); + this->ZAxisTip = vtkActor::New(); + this->ZAxisTip->GetProperty()->SetColor(0, 1, 0); + + this->CylinderSource = vtkCylinderSource::New(); + this->CylinderSource->SetHeight(1.0); + + this->LineSource = vtkLineSource::New(); + this->LineSource->SetPoint1( 0.0, 0.0, 0.0 ); + this->LineSource->SetPoint2( 0.0, 1.0, 0.0 ); + + this->ConeSource = vtkConeSource::New(); + this->ConeSource->SetDirection( 0, 1, 0 ); + this->ConeSource->SetHeight( 1.0 ); + + this->SphereSource = vtkSphereSource::New(); + + vtkPolyDataMapper *shaftMapper = vtkPolyDataMapper::New(); + + this->XAxisShaft->SetMapper( shaftMapper ); + this->YAxisShaft->SetMapper( shaftMapper ); + this->ZAxisShaft->SetMapper( shaftMapper ); + + shaftMapper->Delete(); + + vtkPolyDataMapper *tipMapper = vtkPolyDataMapper::New(); + + this->XAxisTip->SetMapper( tipMapper ); + this->YAxisTip->SetMapper( tipMapper ); + this->ZAxisTip->SetMapper( tipMapper ); + + tipMapper->Delete(); + + this->TotalLength[0] = 1.0; + this->TotalLength[1] = 1.0; + this->TotalLength[2] = 1.0; + + this->NormalizedShaftLength[0] = 0.8; + this->NormalizedShaftLength[1] = 0.8; + this->NormalizedShaftLength[2] = 0.8; + + this->NormalizedTipLength[0] = 0.2; + this->NormalizedTipLength[1] = 0.2; + this->NormalizedTipLength[2] = 0.2; + + this->ConeResolution = 16; + this->SphereResolution = 16; + this->CylinderResolution = 16; + + this->ConeRadius = 0.4; + this->SphereRadius = 0.5; + this->CylinderRadius = 0.05; + + this->XAxisLabelPosition = 1; + this->YAxisLabelPosition = 1; + this->ZAxisLabelPosition = 1; + + this->ShaftType = vtkPVAxesActor::LINE_SHAFT; + this->TipType = vtkPVAxesActor::CONE_TIP; + + this->UserDefinedTip = NULL; + this->UserDefinedShaft = NULL; + + this->XAxisVectorText = vtkVectorText::New(); + this->YAxisVectorText = vtkVectorText::New(); + this->ZAxisVectorText = vtkVectorText::New(); + + this->XAxisLabel = vtkFollower::New(); + this->YAxisLabel = vtkFollower::New(); + this->ZAxisLabel = vtkFollower::New(); + + vtkPolyDataMapper *xmapper = vtkPolyDataMapper::New(); + vtkPolyDataMapper *ymapper = vtkPolyDataMapper::New(); + vtkPolyDataMapper *zmapper = vtkPolyDataMapper::New(); + + xmapper->SetInput( this->XAxisVectorText->GetOutput() ); + ymapper->SetInput( this->YAxisVectorText->GetOutput() ); + zmapper->SetInput( this->ZAxisVectorText->GetOutput() ); + + this->XAxisLabel->SetMapper( xmapper ); + this->YAxisLabel->SetMapper( ymapper ); + this->ZAxisLabel->SetMapper( zmapper ); + + xmapper->Delete(); + ymapper->Delete(); + zmapper->Delete(); + + this->UpdateProps(); +} + +//----------------------------------------------------------------------------- +vtkPVAxesActor::~vtkPVAxesActor() +{ + this->CylinderSource->Delete(); + this->LineSource->Delete(); + this->ConeSource->Delete(); + this->SphereSource->Delete(); + + this->XAxisShaft->Delete(); + this->YAxisShaft->Delete(); + this->ZAxisShaft->Delete(); + + this->XAxisTip->Delete(); + this->YAxisTip->Delete(); + this->ZAxisTip->Delete(); + + this->SetUserDefinedTip( NULL ); + this->SetUserDefinedShaft( NULL ); + + this->SetXAxisLabelText( NULL ); + this->SetYAxisLabelText( NULL ); + this->SetZAxisLabelText( NULL ); + + this->XAxisVectorText->Delete(); + this->YAxisVectorText->Delete(); + this->ZAxisVectorText->Delete(); + + this->XAxisLabel->Delete(); + this->YAxisLabel->Delete(); + this->ZAxisLabel->Delete(); +} + +//----------------------------------------------------------------------------- +// Shallow copy of an actor. +void vtkPVAxesActor::ShallowCopy(vtkProp *prop) +{ + vtkPVAxesActor *a = vtkPVAxesActor::SafeDownCast(prop); + if ( a != NULL ) + { + } + + // Now do superclass + this->vtkProp3D::ShallowCopy(prop); +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::GetActors(vtkPropCollection *ac) +{ + ac->AddItem(this->XAxisShaft); + ac->AddItem(this->YAxisShaft); + ac->AddItem(this->ZAxisShaft); + ac->AddItem(this->XAxisTip); + ac->AddItem(this->YAxisTip); + ac->AddItem(this->ZAxisTip); + ac->AddItem(this->XAxisLabel); + ac->AddItem(this->YAxisLabel); + ac->AddItem(this->ZAxisLabel); + +} + +//----------------------------------------------------------------------------- +int vtkPVAxesActor::RenderOpaqueGeometry(vtkViewport *vp) +{ + int renderedSomething = 0; + + vtkRenderer *ren = vtkRenderer::SafeDownCast( vp ); + + this->UpdateProps(); + + this->XAxisLabel->SetCamera( ren->GetActiveCamera() ); + this->YAxisLabel->SetCamera( ren->GetActiveCamera() ); + this->ZAxisLabel->SetCamera( ren->GetActiveCamera() ); + + this->XAxisShaft->RenderOpaqueGeometry(vp); + this->YAxisShaft->RenderOpaqueGeometry(vp); + this->ZAxisShaft->RenderOpaqueGeometry(vp); + + this->XAxisTip->RenderOpaqueGeometry(vp); + this->YAxisTip->RenderOpaqueGeometry(vp); + this->ZAxisTip->RenderOpaqueGeometry(vp); + + this->XAxisLabel->RenderOpaqueGeometry(vp); + this->YAxisLabel->RenderOpaqueGeometry(vp); + this->ZAxisLabel->RenderOpaqueGeometry(vp); + + return renderedSomething; +} + +//----------------------------------------------------------------------------- +#if (VTK_MINOR_VERSION>=2) +// porting to VTK 5.0.x +int vtkPVAxesActor::RenderTranslucentPolygonalGeometry(vtkViewport *vp) +{ + int renderedSomething=0; + + this->UpdateProps(); + + renderedSomething += this->XAxisShaft->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->YAxisShaft->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->ZAxisShaft->RenderTranslucentPolygonalGeometry(vp); + + renderedSomething += this->XAxisTip->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->YAxisTip->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->ZAxisTip->RenderTranslucentPolygonalGeometry(vp); + + renderedSomething += this->XAxisLabel->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->YAxisLabel->RenderTranslucentPolygonalGeometry(vp); + renderedSomething += this->ZAxisLabel->RenderTranslucentPolygonalGeometry(vp); + + return renderedSomething; +} + +//----------------------------------------------------------------------------- +// porting to VTK 5.0.x +int vtkPVAxesActor::HasTranslucentPolygonalGeometry() +{ + int result = 0; + + this->UpdateProps(); + + result |= this->XAxisShaft->HasTranslucentPolygonalGeometry(); + result |= this->YAxisShaft->HasTranslucentPolygonalGeometry(); + result |= this->ZAxisShaft->HasTranslucentPolygonalGeometry(); + + result |= this->XAxisTip->HasTranslucentPolygonalGeometry(); + result |= this->YAxisTip->HasTranslucentPolygonalGeometry(); + result |= this->ZAxisTip->HasTranslucentPolygonalGeometry(); + + result |= this->XAxisLabel->HasTranslucentPolygonalGeometry(); + result |= this->YAxisLabel->HasTranslucentPolygonalGeometry(); + result |= this->ZAxisLabel->HasTranslucentPolygonalGeometry(); + + return result; +} + +#else +//----------------------------------------------------------------------------- +// porting to VTK 5.0.x +int vtkPVAxesActor::RenderTranslucentGeometry(vtkViewport *vp) +{ + int renderedSomething=0; + + this->UpdateProps(); + + renderedSomething += this->XAxisShaft->RenderTranslucentGeometry(vp); + renderedSomething += this->YAxisShaft->RenderTranslucentGeometry(vp); + renderedSomething += this->ZAxisShaft->RenderTranslucentGeometry(vp); + + renderedSomething += this->XAxisTip->RenderTranslucentGeometry(vp); + renderedSomething += this->YAxisTip->RenderTranslucentGeometry(vp); + renderedSomething += this->ZAxisTip->RenderTranslucentGeometry(vp); + + renderedSomething += this->XAxisLabel->RenderTranslucentGeometry(vp); + renderedSomething += this->YAxisLabel->RenderTranslucentGeometry(vp); + renderedSomething += this->ZAxisLabel->RenderTranslucentGeometry(vp); + + return renderedSomething; +} +#endif + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::ReleaseGraphicsResources(vtkWindow *win) +{ + this->XAxisShaft->ReleaseGraphicsResources( win ); + this->YAxisShaft->ReleaseGraphicsResources( win ); + this->ZAxisShaft->ReleaseGraphicsResources( win ); + + this->XAxisTip->ReleaseGraphicsResources( win ); + this->YAxisTip->ReleaseGraphicsResources( win ); + this->ZAxisTip->ReleaseGraphicsResources( win ); + + this->XAxisLabel->ReleaseGraphicsResources( win ); + this->YAxisLabel->ReleaseGraphicsResources( win ); + this->ZAxisLabel->ReleaseGraphicsResources( win ); +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::GetBounds(double bounds[6]) +{ + double *bds = this->GetBounds(); + bounds[0] = bds[0]; + bounds[1] = bds[1]; + bounds[2] = bds[2]; + bounds[3] = bds[3]; + bounds[4] = bds[4]; + bounds[5] = bds[5]; +} + +//----------------------------------------------------------------------------- +// Get the bounds for this Actor as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax). +double *vtkPVAxesActor::GetBounds() +{ + double bounds[6]; + int i; + + this->XAxisShaft->GetBounds(this->Bounds); + + this->YAxisShaft->GetBounds(bounds); + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (bounds[2*i+1]>this->Bounds[2*i+1])?(bounds[2*i+1]):(this->Bounds[2*i+1]); + } + + this->ZAxisShaft->GetBounds(bounds); + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (bounds[2*i+1]>this->Bounds[2*i+1])?(bounds[2*i+1]):(this->Bounds[2*i+1]); + } + + this->XAxisTip->GetBounds(bounds); + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (bounds[2*i+1]>this->Bounds[2*i+1])?(bounds[2*i+1]):(this->Bounds[2*i+1]); + } + + this->YAxisTip->GetBounds(bounds); + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (bounds[2*i+1]>this->Bounds[2*i+1])?(bounds[2*i+1]):(this->Bounds[2*i+1]); + } + + this->ZAxisTip->GetBounds(bounds); + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (bounds[2*i+1]>this->Bounds[2*i+1])?(bounds[2*i+1]):(this->Bounds[2*i+1]); + } + + double dbounds[6]; + (vtkPolyDataMapper::SafeDownCast(this->YAxisShaft->GetMapper()))-> + GetInput()->GetBounds( dbounds ); + + for (i=0; i<3; i++) + { + this->Bounds[2*i+1] = + (dbounds[2*i+1]>this->Bounds[2*i+1])?(dbounds[2*i+1]):(this->Bounds[2*i+1]); + } + + // We want this actor to rotate / re-center about the origin, so give it + // the bounds it would have if the axes were symmetrical. + for (i = 0; i < 3; i++) + { + this->Bounds[2*i] = -this->Bounds[2*i+1]; + } + + return this->Bounds; +} + +//----------------------------------------------------------------------------- +unsigned long int vtkPVAxesActor::GetMTime() +{ + unsigned long mTime=this->Superclass::GetMTime(); + + + return mTime; +} + +//----------------------------------------------------------------------------- +unsigned long int vtkPVAxesActor::GetRedrawMTime() +{ + unsigned long mTime=this->GetMTime(); + + return mTime; +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetXAxisTipProperty() +{ + return this->XAxisTip->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetYAxisTipProperty() +{ + return this->YAxisTip->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetZAxisTipProperty() +{ + return this->ZAxisTip->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetXAxisShaftProperty() +{ + return this->XAxisShaft->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetYAxisShaftProperty() +{ + return this->YAxisShaft->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetZAxisShaftProperty() +{ + return this->ZAxisShaft->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetXAxisLabelProperty() +{ + return this->XAxisLabel->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetYAxisLabelProperty() +{ + return this->YAxisLabel->GetProperty(); +} + +//----------------------------------------------------------------------------- +vtkProperty *vtkPVAxesActor::GetZAxisLabelProperty() +{ + return this->ZAxisLabel->GetProperty(); +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::SetTotalLength( float x, float y, float z ) +{ + if ( this->TotalLength[0] != x || + this->TotalLength[1] != y || + this->TotalLength[2] != z ) + { + this->TotalLength[0] = x; + this->TotalLength[1] = y; + this->TotalLength[2] = z; + + this->Modified(); + + this->UpdateProps(); + } +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::SetNormalizedShaftLength( float x, float y, float z ) +{ + if ( this->NormalizedShaftLength[0] != x || + this->NormalizedShaftLength[1] != y || + this->NormalizedShaftLength[2] != z ) + { + this->NormalizedShaftLength[0] = x; + this->NormalizedShaftLength[1] = y; + this->NormalizedShaftLength[2] = z; + + this->Modified(); + + this->UpdateProps(); + } +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::SetNormalizedTipLength( float x, float y, float z ) +{ + if ( this->NormalizedTipLength[0] != x || + this->NormalizedTipLength[1] != y || + this->NormalizedTipLength[2] != z ) + { + this->NormalizedTipLength[0] = x; + this->NormalizedTipLength[1] = y; + this->NormalizedTipLength[2] = z; + + this->Modified(); + + this->UpdateProps(); + } +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::SetShaftType( int type ) +{ + if ( this->ShaftType != type ) + { + this->ShaftType = type; + + this->Modified(); + + this->UpdateProps(); + } +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::SetTipType( int type ) +{ + if ( this->TipType != type ) + { + this->TipType = type; + + this->Modified(); + + this->UpdateProps(); + } +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::UpdateProps() +{ + this->CylinderSource->SetRadius(this->CylinderRadius); + this->CylinderSource->SetResolution(this->CylinderResolution); + + + this->ConeSource->SetResolution(this->ConeResolution); + this->ConeSource->SetRadius(this->ConeRadius); + + this->SphereSource->SetThetaResolution( this->SphereResolution ); + this->SphereSource->SetPhiResolution( this->SphereResolution ); + this->SphereSource->SetRadius(this->SphereRadius); + + switch ( this->ShaftType ) + { + case vtkPVAxesActor::CYLINDER_SHAFT: + (vtkPolyDataMapper::SafeDownCast(this->XAxisShaft->GetMapper()))-> + SetInput( this->CylinderSource->GetOutput() ); + break; + case vtkPVAxesActor::LINE_SHAFT: + (vtkPolyDataMapper::SafeDownCast(this->XAxisShaft->GetMapper()))-> + SetInput( this->LineSource->GetOutput() ); + break; + case vtkPVAxesActor::USER_DEFINED_SHAFT: + (vtkPolyDataMapper::SafeDownCast(this->XAxisShaft->GetMapper()))-> + SetInput( this->UserDefinedShaft ); + } + + switch ( this->TipType ) + { + case vtkPVAxesActor::CONE_TIP: + (vtkPolyDataMapper::SafeDownCast(this->XAxisTip->GetMapper()))-> + SetInput( this->ConeSource->GetOutput() ); + break; + case vtkPVAxesActor::SPHERE_TIP: + (vtkPolyDataMapper::SafeDownCast(this->XAxisTip->GetMapper()))-> + SetInput( this->SphereSource->GetOutput() ); + break; + case vtkPVAxesActor::USER_DEFINED_TIP: + (vtkPolyDataMapper::SafeDownCast(this->XAxisTip->GetMapper()))-> + SetInput( this->UserDefinedTip ); + } + + (vtkPolyDataMapper::SafeDownCast(this->XAxisTip->GetMapper()))-> + GetInput()->Update(); + (vtkPolyDataMapper::SafeDownCast(this->XAxisShaft->GetMapper()))-> + GetInput()->Update(); + + + + float scale[3]; + double bounds[6]; + + (vtkPolyDataMapper::SafeDownCast(this->XAxisShaft->GetMapper()))-> + GetInput()->GetBounds( bounds ); + + int i; + for ( i = 0; i < 3; i++ ) + { + scale[i] = + this->NormalizedShaftLength[i]*this->TotalLength[i] / + (bounds[3] - bounds[2]); + } + + vtkTransform *xTransform = vtkTransform::New(); + vtkTransform *yTransform = vtkTransform::New(); + vtkTransform *zTransform = vtkTransform::New(); + + xTransform->RotateZ( -90 ); + zTransform->RotateX( 90 ); + + xTransform->Scale( scale[0], scale[0], scale[0] ); + yTransform->Scale( scale[1], scale[1], scale[1] ); + zTransform->Scale( scale[2], scale[2], scale[2] ); + + xTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + yTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + zTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + + + + this->XAxisShaft->SetUserTransform( xTransform ); + this->YAxisShaft->SetUserTransform( yTransform ); + this->ZAxisShaft->SetUserTransform( zTransform ); + + xTransform->Delete(); + yTransform->Delete(); + zTransform->Delete(); + + (vtkPolyDataMapper::SafeDownCast(this->XAxisTip->GetMapper()))-> + GetInput()->GetBounds( bounds ); + + xTransform = vtkTransform::New(); + yTransform = vtkTransform::New(); + zTransform = vtkTransform::New(); + + xTransform->RotateZ( -90 ); + zTransform->RotateX( 90 ); + + xTransform->Scale( this->TotalLength[0], this->TotalLength[0], this->TotalLength[0] ); + yTransform->Scale( this->TotalLength[1], this->TotalLength[1], this->TotalLength[1] ); + zTransform->Scale( this->TotalLength[2], this->TotalLength[2], this->TotalLength[2] ); + + xTransform->Translate( 0, (1.0 - this->NormalizedTipLength[0]), 0 ); + yTransform->Translate( 0, (1.0 - this->NormalizedTipLength[1]), 0 ); + zTransform->Translate( 0, (1.0 - this->NormalizedTipLength[2]), 0 ); + + xTransform->Scale( this->NormalizedTipLength[0], + this->NormalizedTipLength[0], + this->NormalizedTipLength[0] ); + + yTransform->Scale( this->NormalizedTipLength[1], + this->NormalizedTipLength[1], + this->NormalizedTipLength[1] ); + + zTransform->Scale( this->NormalizedTipLength[2], + this->NormalizedTipLength[2], + this->NormalizedTipLength[2] ); + + xTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + yTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + zTransform->Translate( -(bounds[0]+bounds[1])/2, + -bounds[2], + -(bounds[4]+bounds[5])/2 ); + + + this->XAxisTip->SetUserTransform( xTransform ); + this->YAxisTip->SetUserTransform( yTransform ); + this->ZAxisTip->SetUserTransform( zTransform ); + + xTransform->Delete(); + yTransform->Delete(); + zTransform->Delete(); + + this->XAxisVectorText->SetText( this->XAxisLabelText ); + this->YAxisVectorText->SetText( this->YAxisLabelText ); + this->ZAxisVectorText->SetText( this->ZAxisLabelText ); + + + float avgScale = + (this->TotalLength[0] + this->TotalLength[1] + this->TotalLength[2])/15; + + this->XAxisShaft->GetBounds(bounds); + this->XAxisLabel->SetScale( avgScale, avgScale, avgScale ); + this->XAxisLabel->SetPosition( bounds[0] + this->XAxisLabelPosition * + (bounds[1]-bounds[0]), + bounds[2] - (bounds[3]-bounds[2])*2.0, + bounds[5] + (bounds[5]-bounds[4])/2.0 ); + + this->YAxisShaft->GetBounds(bounds); + this->YAxisLabel->SetScale( avgScale, avgScale, avgScale ); + this->YAxisLabel->SetPosition( (bounds[0]+bounds[1])/2, + bounds[2] + this->YAxisLabelPosition * + (bounds[3]-bounds[2]), + bounds[5] + (bounds[5]-bounds[4])/2.0 ); + + this->ZAxisShaft->GetBounds(bounds); + this->ZAxisLabel->SetScale( avgScale, avgScale, avgScale ); + this->ZAxisLabel->SetPosition( bounds[0], + bounds[2] - (bounds[3]-bounds[2])*2.0, + bounds[4] + this->ZAxisLabelPosition * + (bounds[5]-bounds[4]) ); +} + +//----------------------------------------------------------------------------- +void vtkPVAxesActor::PrintSelf(ostream& os, vtkIndent indent) +{ + this->Superclass::PrintSelf(os,indent); + + os << indent << "UserDefinedShaft: "; + if (this->UserDefinedShaft) + { + os << this->UserDefinedShaft << endl; + } + else + { + os << "(none)" << endl; + } + + os << indent << "UserDefinedTip: "; + if (this->UserDefinedTip) + { + os << this->UserDefinedTip << endl; + } + else + { + os << "(none)" << endl; + } + + os << indent << "XAxisLabelText: " << (this->XAxisLabelText ? + this->XAxisLabelText : "(none)") + << endl; + os << indent << "YAxisLabelText: " << (this->YAxisLabelText ? + this->YAxisLabelText : "(none)") + << endl; + os << indent << "ZAxisLabelText: " << (this->ZAxisLabelText ? + this->ZAxisLabelText : "(none)") + << endl; + os << indent << "XAxisLabelPosition: " << this->XAxisLabelPosition << endl; + os << indent << "YAxisLabelPosition: " << this->YAxisLabelPosition << endl; + os << indent << "ZAxisLabelPosition: " << this->ZAxisLabelPosition << endl; + + os << indent << "SphereRadius: " << this->SphereRadius << endl; + os << indent << "SphereResolution: " << this->SphereResolution << endl; + os << indent << "CylinderRadius: " << this->CylinderRadius << endl; + os << indent << "CylinderResolution: " << this->CylinderResolution << endl; + os << indent << "ConeRadius: " << this->ConeRadius << endl; + os << indent << "ConeResolution: " << this->ConeResolution << endl; + + os << indent << "NormalizedShaftLength: " + << this->NormalizedShaftLength[0] << "," + << this->NormalizedShaftLength[1] << "," + << this->NormalizedShaftLength[2] << endl; + os << indent << "NormalizedTipLength: " + << this->NormalizedTipLength[0] << "," + << this->NormalizedTipLength[1] << "," + << this->NormalizedTipLength[2] << endl; + os << indent << "TotalLength: " + << this->TotalLength[0] << "," + << this->TotalLength[1] << "," + << this->TotalLength[2] << endl; +} + +//----------------------------------------------------------------------------- +// porting to VTK 5.0.x +void vtkPVAxesActor::AddToRender( vtkRenderer* theRenderer ) +{ + theRenderer->AddActor(this->XAxisLabel); + theRenderer->AddActor(this->YAxisLabel); + theRenderer->AddActor(this->ZAxisLabel); +} diff --git a/src/SVTK/vtkPVAxesActor.h b/src/SVTK/vtkPVAxesActor.h new file mode 100644 index 000000000..8b9d329cc --- /dev/null +++ b/src/SVTK/vtkPVAxesActor.h @@ -0,0 +1,293 @@ +/*========================================================================= + + Program: ParaView + Module: $RCSfile$ + + Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc. + All rights reserved. + + ParaView is a free software; you can redistribute it and/or modify it + under the terms of the ParaView license version 1.2. + + See License_v1.2.txt for the full ParaView license. + A copy of this license can be obtained by contacting + Kitware Inc. + 28 Corporate Drive + Clifton Park, NY 12065 + USA + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=========================================================================*/ +// .NAME vtkPVAxesActor - a 3D axes representation +// .SECTION Description +// +// vtkPVAxesActor is used to represent 3D axes in the scene. The user can +// define the geometry to use for the shaft and the tip, and the user can +// set the text for the three axes. The text will follow the camera. + + +#ifndef __vtkPVAxesActor_h +#define __vtkPVAxesActor_h + +#include "SVTK.h" +#include "vtkProp3D.h" + +class vtkRenderer; +class vtkPropCollection; +class vtkMapper; +class vtkProperty; +class vtkActor; +class vtkFollower; +class vtkCylinderSource; +class vtkLineSource; +class vtkConeSource; +class vtkSphereSource; +class vtkPolyData; +class vtkVectorText; + +class SVTK_EXPORT vtkPVAxesActor : public vtkProp3D +{ +public: + static vtkPVAxesActor *New(); + vtkTypeRevisionMacro(vtkPVAxesActor,vtkProp3D); + void PrintSelf(ostream& os, vtkIndent indent); + + + // Description: + // For some exporters and other other operations we must be + // able to collect all the actors or volumes. These methods + // are used in that process. + virtual void GetActors(vtkPropCollection *); + + // Description: + // Support the standard render methods. + virtual int RenderOpaqueGeometry(vtkViewport *viewport); +#if (VTK_MINOR_VERSION>=2) + virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport); // porting to VTK 5.0.x + virtual int HasTranslucentPolygonalGeometry(); // porting to VTK 5.0.x +#else + virtual int RenderTranslucentGeometry(vtkViewport *viewport); // porting to VTK 5.0.x +#endif + + // Description: + // Shallow copy of an axes actor. Overloads the virtual vtkProp method. + void ShallowCopy(vtkProp *prop); + + // Description: + // Release any graphics resources that are being consumed by this actor. + // The parameter window could be used to determine which graphic + // resources to release. + void ReleaseGraphicsResources(vtkWindow *); + + // Description: + // Get the bounds for this Actor as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax). (The + // method GetBounds(double bounds[6]) is available from the superclass.) + void GetBounds(double bounds[6]); + double *GetBounds(); + + // Description: + // Get the actors mtime plus consider its properties and texture if set. + unsigned long int GetMTime(); + + // Description: + // Return the mtime of anything that would cause the rendered image to + // appear differently. Usually this involves checking the mtime of the + // prop plus anything else it depends on such as properties, textures + // etc. + virtual unsigned long GetRedrawMTime(); + + // Description: + // Set the total length of the axes in 3 dimensions. + void SetTotalLength( float v[3] ) + { this->SetTotalLength( v[0], v[1], v[2] ); } + void SetTotalLength( float x, float y, float z ); + vtkGetVectorMacro( TotalLength, float, 3 ); + + // Description: + // Set the normalized (0-1) length of the shaft. + void SetNormalizedShaftLength( float v[3] ) + { this->SetNormalizedShaftLength( v[0], v[1], v[2] ); } + void SetNormalizedShaftLength( float x, float y, float z ); + vtkGetVectorMacro( NormalizedShaftLength, float, 3 ); + + // Description: + // Set the normalized (0-1) length of the tip. + void SetNormalizedTipLength( float v[3] ) + { this->SetNormalizedTipLength( v[0], v[1], v[2] ); } + void SetNormalizedTipLength( float x, float y, float z ); + vtkGetVectorMacro( NormalizedTipLength, float, 3 ); + + // Description: + // Set/get the resolution of the pieces of the axes actor + vtkSetClampMacro(ConeResolution, int, 3, 128); + vtkGetMacro(ConeResolution, int); + vtkSetClampMacro(SphereResolution, int, 3, 128); + vtkGetMacro(SphereResolution, int); + vtkSetClampMacro(CylinderResolution, int, 3, 128); + vtkGetMacro(CylinderResolution, int); + + // Description: + // Set/get the radius of the pieces of the axes actor + vtkSetClampMacro(ConeRadius, float, 0, VTK_LARGE_FLOAT); + vtkGetMacro(ConeRadius, float); + vtkSetClampMacro(SphereRadius, float, 0, VTK_LARGE_FLOAT); + vtkGetMacro(SphereRadius, float); + vtkSetClampMacro(CylinderRadius, float, 0, VTK_LARGE_FLOAT); + vtkGetMacro(CylinderRadius, float); + + // Description: + // Set/get the positions of the axis labels + vtkSetClampMacro(XAxisLabelPosition, float, 0, 1); + vtkGetMacro(XAxisLabelPosition, float); + vtkSetClampMacro(YAxisLabelPosition, float, 0, 1); + vtkGetMacro(YAxisLabelPosition, float); + vtkSetClampMacro(ZAxisLabelPosition, float, 0, 1); + vtkGetMacro(ZAxisLabelPosition, float); + + // Description: + // Set the type of the shaft to a cylinder, line, or user defined geometry. + void SetShaftType( int type ); + void SetShaftTypeToCylinder() + { this->SetShaftType( vtkPVAxesActor::CYLINDER_SHAFT ); } + void SetShaftTypeToLine() + { this->SetShaftType( vtkPVAxesActor::LINE_SHAFT ); } + void SetShaftTypeToUserDefined() + { this->SetShaftType( vtkPVAxesActor::USER_DEFINED_SHAFT ); } + + // Description: + // Set the type of the tip to a cone, sphere, or user defined geometry. + void SetTipType( int type ); + void SetTipTypeToCone() + { this->SetTipType( vtkPVAxesActor::CONE_TIP ); } + void SetTipTypeToSphere() + { this->SetTipType( vtkPVAxesActor::SPHERE_TIP ); } + void SetTipTypeToUserDefined() + { this->SetTipType( vtkPVAxesActor::USER_DEFINED_TIP ); } + + //BTX + // Description: + // Set the user defined tip polydata. + void SetUserDefinedTip( vtkPolyData * ); + vtkGetObjectMacro( UserDefinedTip, vtkPolyData ); + + // Description: + // Set the user defined shaft polydata. + void SetUserDefinedShaft( vtkPolyData * ); + vtkGetObjectMacro( UserDefinedShaft, vtkPolyData ); + + // Description: + // Get the tip properties. + vtkProperty *GetXAxisTipProperty(); + vtkProperty *GetYAxisTipProperty(); + vtkProperty *GetZAxisTipProperty(); + + // Description: + // Get the shaft properties. + vtkProperty *GetXAxisShaftProperty(); + vtkProperty *GetYAxisShaftProperty(); + vtkProperty *GetZAxisShaftProperty(); + + // Description: + // Get the label properties. + vtkProperty *GetXAxisLabelProperty(); + vtkProperty *GetYAxisLabelProperty(); + vtkProperty *GetZAxisLabelProperty(); + //ETX + // + // Description: + // Set the label text. + vtkSetStringMacro( XAxisLabelText ); + vtkSetStringMacro( YAxisLabelText ); + vtkSetStringMacro( ZAxisLabelText ); + +//BTX + enum + { + CYLINDER_SHAFT, + LINE_SHAFT, + USER_DEFINED_SHAFT + }; + + + enum + { + CONE_TIP, + SPHERE_TIP, + USER_DEFINED_TIP + }; + +//ETX + + void AddToRender( vtkRenderer* theRenderer ); // porting to VTK 5.0.x + +protected: + vtkPVAxesActor(); + ~vtkPVAxesActor(); + + vtkCylinderSource *CylinderSource; + vtkLineSource *LineSource; + vtkConeSource *ConeSource; + vtkSphereSource *SphereSource; + + vtkActor *XAxisShaft; + vtkActor *YAxisShaft; + vtkActor *ZAxisShaft; + + vtkActor *XAxisTip; + vtkActor *YAxisTip; + vtkActor *ZAxisTip; + + void UpdateProps(); + + float TotalLength[3]; + float NormalizedShaftLength[3]; + float NormalizedTipLength[3]; + + int ShaftType; + int TipType; + + vtkPolyData *UserDefinedTip; + vtkPolyData *UserDefinedShaft; + + char *XAxisLabelText; + char *YAxisLabelText; + char *ZAxisLabelText; + + vtkVectorText *XAxisVectorText; + vtkVectorText *YAxisVectorText; + vtkVectorText *ZAxisVectorText; + + vtkFollower *XAxisLabel; + vtkFollower *YAxisLabel; + vtkFollower *ZAxisLabel; + + int ConeResolution; + int SphereResolution; + int CylinderResolution; + + float ConeRadius; + float SphereRadius; + float CylinderRadius; + + float XAxisLabelPosition; + float YAxisLabelPosition; + float ZAxisLabelPosition; + +private: + vtkPVAxesActor(const vtkPVAxesActor&); // Not implemented. + void operator=(const vtkPVAxesActor&); // Not implemented. +}; + +#endif + diff --git a/src/SVTK/vtkPVAxesWidget.cxx b/src/SVTK/vtkPVAxesWidget.cxx new file mode 100644 index 000000000..42d80002b --- /dev/null +++ b/src/SVTK/vtkPVAxesWidget.cxx @@ -0,0 +1,869 @@ +/*========================================================================= + + Program: ParaView + Module: $RCSfile$ + + Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc. + All rights reserved. + + ParaView is a free software; you can redistribute it and/or modify it + under the terms of the ParaView license version 1.2. + + See License_v1.2.txt for the full ParaView license. + A copy of this license can be obtained by contacting + Kitware Inc. + 28 Corporate Drive + Clifton Park, NY 12065 + USA + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=========================================================================*/ +#include "vtkPVAxesWidget.h" + +#include "vtkActor2D.h" +#include "vtkCallbackCommand.h" +#include "vtkCamera.h" +#include "vtkCoordinate.h" +#include "vtkObjectFactory.h" +#include "vtkPoints.h" +#include "vtkPolyData.h" +#include "vtkPolyDataMapper2D.h" +#include "vtkProperty.h" +#include "vtkProperty2D.h" +#include "vtkPVAxesActor.h" +#include "vtkRenderer.h" +#include "vtkRenderWindow.h" +#include "vtkRenderWindowInteractor.h" + +vtkStandardNewMacro(vtkPVAxesWidget); +vtkCxxRevisionMacro(vtkPVAxesWidget, "$Revision$"); + +vtkCxxSetObjectMacro(vtkPVAxesWidget, AxesActor, vtkPVAxesActor); +vtkCxxSetObjectMacro(vtkPVAxesWidget, ParentRenderer, vtkRenderer); + +//---------------------------------------------------------------------------- +class vtkPVAxesWidgetObserver : public vtkCommand +{ +public: + static vtkPVAxesWidgetObserver *New() + {return new vtkPVAxesWidgetObserver;}; + + vtkPVAxesWidgetObserver() + { + this->AxesWidget = 0; + } + + virtual void Execute(vtkObject* wdg, unsigned long event, void *calldata) + { + if (this->AxesWidget) + { + this->AxesWidget->ExecuteEvent(wdg, event, calldata); + } + } + + vtkPVAxesWidget *AxesWidget; +}; + +//---------------------------------------------------------------------------- +vtkPVAxesWidget::vtkPVAxesWidget() +{ + this->StartEventObserverId = 0; + + this->EventCallbackCommand->SetCallback(vtkPVAxesWidget::ProcessEvents); + + this->Observer = vtkPVAxesWidgetObserver::New(); + this->Observer->AxesWidget = this; + this->Renderer = vtkRenderer::New(); + this->Renderer->SetViewport(0.0, 0.0, 0.2, 0.2); + this->Renderer->SetLayer(1); + this->Renderer->InteractiveOff(); + this->Priority = 0.55; + this->AxesActor = vtkPVAxesActor::New(); + this->Renderer->AddActor(this->AxesActor); + this->AxesActor->AddToRender(this->Renderer); // tmp + + this->ParentRenderer = NULL; + + this->Moving = 0; + this->MouseCursorState = vtkPVAxesWidget::Outside; + + this->StartTag = 0; + + this->Interactive = 1; + + this->Outline = vtkPolyData::New(); + this->Outline->Allocate(); + vtkPoints *points = vtkPoints::New(); + vtkIdType ptIds[5]; + ptIds[4] = ptIds[0] = points->InsertNextPoint(1, 1, 0); + ptIds[1] = points->InsertNextPoint(2, 1, 0); + ptIds[2] = points->InsertNextPoint(2, 2, 0); + ptIds[3] = points->InsertNextPoint(1, 2, 0); + this->Outline->SetPoints(points); + this->Outline->InsertNextCell(VTK_POLY_LINE, 5, ptIds); + vtkCoordinate *tcoord = vtkCoordinate::New(); + tcoord->SetCoordinateSystemToDisplay(); + vtkPolyDataMapper2D *mapper = vtkPolyDataMapper2D::New(); + mapper->SetInput(this->Outline); + mapper->SetTransformCoordinate(tcoord); + this->OutlineActor = vtkActor2D::New(); + this->OutlineActor->SetMapper(mapper); + this->OutlineActor->SetPosition(0, 0); + this->OutlineActor->SetPosition2(1, 1); + + points->Delete(); + mapper->Delete(); + tcoord->Delete(); +} + +//---------------------------------------------------------------------------- +vtkPVAxesWidget::~vtkPVAxesWidget() +{ + this->Observer->Delete(); + this->AxesActor->Delete(); + this->OutlineActor->Delete(); + this->Outline->Delete(); + this->SetParentRenderer(NULL); + this->Renderer->Delete(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetEnabled(int enabling) +{ + if (!this->Interactor) + { + vtkErrorMacro("The interactor must be set prior to enabling/disabling widget"); + } + + if (enabling) + { + if (this->Enabled) + { + return; + } + if (!this->ParentRenderer) + { + vtkErrorMacro("The parent renderer must be set prior to enabling this widget"); + return; + } + + this->Enabled = 1; + + if ( this->EventCallbackCommand ) + { + vtkRenderWindowInteractor *i = this->Interactor; + i->AddObserver(vtkCommand::MouseMoveEvent, + this->EventCallbackCommand, this->Priority); + i->AddObserver(vtkCommand::LeftButtonPressEvent, + this->EventCallbackCommand, this->Priority); + i->AddObserver(vtkCommand::LeftButtonReleaseEvent, + this->EventCallbackCommand, this->Priority); + } + + this->ParentRenderer->GetRenderWindow()->AddRenderer(this->Renderer); + if (this->ParentRenderer->GetRenderWindow()->GetNumberOfLayers() < 2) + { + this->ParentRenderer->GetRenderWindow()->SetNumberOfLayers(2); + } + this->AxesActor->SetVisibility(1); + // We need to copy the camera before the compositing observer is called. + // Compositing temporarily changes the camera to display an image. + this->StartEventObserverId = + this->ParentRenderer->AddObserver(vtkCommand::StartEvent,this->Observer,1); + this->InvokeEvent(vtkCommand::EnableEvent, NULL); + } + else + { + if (!this->Enabled) + { + return; + } + + this->Enabled = 0; + this->Interactor->RemoveObserver(this->EventCallbackCommand); + + this->AxesActor->SetVisibility(0); + if (this->ParentRenderer) + { + if (this->ParentRenderer->GetRenderWindow()) + { + this->ParentRenderer->GetRenderWindow()->RemoveRenderer(this->Renderer); + this->AxesActor->ReleaseGraphicsResources(this->ParentRenderer->GetRenderWindow()); + } + if (this->StartEventObserverId != 0) + { + this->ParentRenderer->RemoveObserver(this->StartEventObserverId); + } + } + + this->InvokeEvent(vtkCommand::DisableEvent, NULL); + } +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ExecuteEvent(vtkObject *vtkNotUsed(o), + unsigned long vtkNotUsed(event), + void *vtkNotUsed(calldata)) +{ + if (!this->ParentRenderer) + { + return; + } + + vtkCamera *cam = this->ParentRenderer->GetActiveCamera(); + double pos[3], fp[3], viewup[3]; + cam->GetPosition(pos); + cam->GetFocalPoint(fp); + cam->GetViewUp(viewup); + + cam = this->Renderer->GetActiveCamera(); + cam->SetPosition(pos); + cam->SetFocalPoint(fp); + cam->SetViewUp(viewup); + this->Renderer->ResetCamera(); + + this->SquareRenderer(); +} + +void vtkPVAxesWidget::UpdateCursorIcon() +{ + if (!this->Enabled) + { + this->SetMouseCursor(vtkPVAxesWidget::Outside); + return; + } + + if (this->Moving) + { + return; + } + + int *parentSize = this->ParentRenderer->GetSize(); + + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + double xNorm = x / (double)parentSize[0]; + double yNorm = y / (double)parentSize[1]; + + double pos[4]; + this->Renderer->GetViewport(pos); + + int pState = this->MouseCursorState; + + if (xNorm > pos[0] && xNorm < pos[2] && yNorm > pos[1] && yNorm < pos[3]) + { + this->MouseCursorState = vtkPVAxesWidget::Inside; + } + else if (fabs(xNorm-pos[0]) < .02 && fabs(yNorm-pos[3]) < .02) + { + this->MouseCursorState = vtkPVAxesWidget::TopLeft; + } + else if (fabs(xNorm-pos[2]) < .02 && fabs(yNorm-pos[3]) < .02) + { + this->MouseCursorState = vtkPVAxesWidget::TopRight; + } + else if (fabs(xNorm-pos[0]) < .02 && fabs(yNorm-pos[1]) < .02) + { + this->MouseCursorState = vtkPVAxesWidget::BottomLeft; + } + else if (fabs(xNorm-pos[2]) < .02 && fabs(yNorm-pos[1]) < .02) + { + this->MouseCursorState = vtkPVAxesWidget::BottomRight; + } + else + { + this->MouseCursorState = vtkPVAxesWidget::Outside; + } + + if (pState == this->MouseCursorState) + { + return; + } + + if (this->MouseCursorState == vtkPVAxesWidget::Outside) + { + this->Renderer->RemoveActor(this->OutlineActor); + } + else + { + this->Renderer->AddActor(this->OutlineActor); + } + this->Interactor->Render(); + + this->SetMouseCursor(this->MouseCursorState); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetMouseCursor(int cursorState) +{ + switch (cursorState) + { + case vtkPVAxesWidget::Outside: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_DEFAULT); + break; + case vtkPVAxesWidget::Inside: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_SIZEALL); + break; + case vtkPVAxesWidget::TopLeft: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_SIZENW); + break; + case vtkPVAxesWidget::TopRight: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_SIZENE); + break; + case vtkPVAxesWidget::BottomLeft: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_SIZESW); + break; + case vtkPVAxesWidget::BottomRight: + this->Interactor->GetRenderWindow()->SetCurrentCursor(VTK_CURSOR_SIZESE); + break; + } +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ProcessEvents(vtkObject* vtkNotUsed(object), + unsigned long event, + void *clientdata, + void* vtkNotUsed(calldata)) +{ + vtkPVAxesWidget *self = + reinterpret_cast(clientdata); + + if (!self->GetInteractive()) + { + return; + } + + switch (event) + { + case vtkCommand::LeftButtonPressEvent: + self->OnButtonPress(); + break; + case vtkCommand::MouseMoveEvent: + self->OnMouseMove(); + break; + case vtkCommand::LeftButtonReleaseEvent: + self->OnButtonRelease(); + break; + } +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::OnButtonPress() +{ + if (this->MouseCursorState == vtkPVAxesWidget::Outside) + { + return; + } + + this->SetMouseCursor(this->MouseCursorState); + + this->StartPosition[0] = this->Interactor->GetEventPosition()[0]; + this->StartPosition[1] = this->Interactor->GetEventPosition()[1]; + + this->Moving = 1; + this->EventCallbackCommand->SetAbortFlag(1); + this->StartInteraction(); + this->InvokeEvent(vtkCommand::StartInteractionEvent, NULL); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::OnButtonRelease() +{ + if (this->MouseCursorState == vtkPVAxesWidget::Outside) + { + return; + } + + this->Moving = 0; + this->EndInteraction(); + this->InvokeEvent(vtkCommand::EndInteractionEvent, NULL); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::OnMouseMove() +{ + if (this->Moving) + { + switch (this->MouseCursorState) + { + case vtkPVAxesWidget::Inside: + this->MoveWidget(); + break; + case vtkPVAxesWidget::TopLeft: + this->ResizeTopLeft(); + break; + case vtkPVAxesWidget::TopRight: + this->ResizeTopRight(); + break; + case vtkPVAxesWidget::BottomLeft: + this->ResizeBottomLeft(); + break; + case vtkPVAxesWidget::BottomRight: + this->ResizeBottomRight(); + break; + } + + this->UpdateCursorIcon(); + this->EventCallbackCommand->SetAbortFlag(1); + this->InvokeEvent(vtkCommand::InteractionEvent, NULL); + } + else + { + this->UpdateCursorIcon(); + } +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::MoveWidget() +{ + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + + int dx = x - this->StartPosition[0]; + int dy = y - this->StartPosition[1]; + + this->StartPosition[0] = x; + this->StartPosition[1] = y; + + int *size = this->ParentRenderer->GetSize(); + double dxNorm = dx / (double)size[0]; + double dyNorm = dy / (double)size[1]; + + double *vp = this->Renderer->GetViewport(); + + double newPos[4]; + newPos[0] = vp[0] + dxNorm; + newPos[1] = vp[1] + dyNorm; + newPos[2] = vp[2] + dxNorm; + newPos[3] = vp[3] + dyNorm; + + if (newPos[0] < 0) + { + this->StartPosition[0] = 0; + newPos[0] = 0; + newPos[2] = vp[2] - vp[0]; + } + if (newPos[1] < 0) + { + this->StartPosition[1] = 0; + newPos[1] = 0; + newPos[3] = vp[3] - vp[1]; + } + if (newPos[2] > 1) + { + this->StartPosition[0] = (int)(size[0] - size[0] * (vp[2]-vp[0])); + newPos[0] = 1 - (vp[2]-vp[0]); + newPos[2] = 1; + } + if (newPos[3] > 1) + { + this->StartPosition[1] = (int)(size[1] - size[1]*(vp[3]-vp[1])); + newPos[1] = 1 - (vp[3]-vp[1]); + newPos[3] = 1; + } + + this->Renderer->SetViewport(newPos); + this->Interactor->Render(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ResizeTopLeft() +{ + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + + int dx = x - this->StartPosition[0]; + int dy = y - this->StartPosition[1]; + + int *size = this->ParentRenderer->GetSize(); + double dxNorm = dx / (double)size[0]; + double dyNorm = dy / (double)size[1]; + + int useX; + double change; + double absDx = fabs(dxNorm); + double absDy = fabs(dyNorm); + + if (absDx > absDy) + { + change = dxNorm; + useX = 1; + } + else + { + change = dyNorm; + useX = 0; + } + + double *vp = this->Renderer->GetViewport(); + + this->StartPosition[0] = x; + this->StartPosition[1] = y; + + double newPos[4]; + newPos[0] = useX ? vp[0] + change : vp[0] - change; + newPos[1] = vp[1]; + newPos[2] = vp[2]; + newPos[3] = useX ? vp[3] - change : vp[3] + change; + + if (newPos[0] < 0) + { + this->StartPosition[0] = 0; + newPos[0] = 0; + } + if (newPos[0] >= newPos[2]-0.01) + { + newPos[0] = newPos[2] - 0.01; + } + if (newPos[3] > 1) + { + this->StartPosition[1] = size[1]; + newPos[3] = 1; + } + if (newPos[3] <= newPos[1]+0.01) + { + newPos[3] = newPos[1] + 0.01; + } + + this->Renderer->SetViewport(newPos); + this->Interactor->Render(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ResizeTopRight() +{ + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + + int dx = x - this->StartPosition[0]; + int dy = y - this->StartPosition[1]; + + int *size = this->ParentRenderer->GetSize(); + double dxNorm = dx / (double)size[0]; + double dyNorm = dy / (double)size[1]; + + double change; + double absDx = fabs(dxNorm); + double absDy = fabs(dyNorm); + + if (absDx > absDy) + { + change = dxNorm; + } + else + { + change = dyNorm; + } + + double *vp = this->Renderer->GetViewport(); + + this->StartPosition[0] = x; + this->StartPosition[1] = y; + + double newPos[4]; + newPos[0] = vp[0]; + newPos[1] = vp[1]; + newPos[2] = vp[2] + change; + newPos[3] = vp[3] + change; + + if (newPos[2] > 1) + { + this->StartPosition[0] = size[0]; + newPos[2] = 1; + } + if (newPos[2] <= newPos[0]+0.01) + { + newPos[2] = newPos[0] + 0.01; + } + if (newPos[3] > 1) + { + this->StartPosition[1] = size[1]; + newPos[3] = 1; + } + if (newPos[3] <= newPos[1]+0.01) + { + newPos[3] = newPos[1] + 0.01; + } + + this->Renderer->SetViewport(newPos); + this->Interactor->Render(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ResizeBottomLeft() +{ + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + + int dx = x - this->StartPosition[0]; + int dy = y - this->StartPosition[1]; + + int *size = this->ParentRenderer->GetSize(); + double dxNorm = dx / (double)size[0]; + double dyNorm = dy / (double)size[1]; + double *vp = this->Renderer->GetViewport(); + + double change; + double absDx = fabs(dxNorm); + double absDy = fabs(dyNorm); + + if (absDx > absDy) + { + change = dxNorm; + } + else + { + change = dyNorm; + } + + this->StartPosition[0] = x; + this->StartPosition[1] = y; + + double newPos[4]; + newPos[0] = vp[0] + change; + newPos[1] = vp[1] + change; + newPos[2] = vp[2]; + newPos[3] = vp[3]; + + if (newPos[0] < 0) + { + this->StartPosition[0] = 0; + newPos[0] = 0; + } + if (newPos[0] >= newPos[2]-0.01) + { + newPos[0] = newPos[2] - 0.01; + } + if (newPos[1] < 0) + { + this->StartPosition[1] = 0; + newPos[1] = 0; + } + if (newPos[1] >= newPos[3]-0.01) + { + newPos[1] = newPos[3] - 0.01; + } + + this->Renderer->SetViewport(newPos); + this->Interactor->Render(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::ResizeBottomRight() +{ + int x = this->Interactor->GetEventPosition()[0]; + int y = this->Interactor->GetEventPosition()[1]; + + int dx = x - this->StartPosition[0]; + int dy = y - this->StartPosition[1]; + + int *size = this->ParentRenderer->GetSize(); + double dxNorm = dx / (double)size[0]; + double dyNorm = dy / (double)size[1]; + + double *vp = this->Renderer->GetViewport(); + + int useX; + double change; + double absDx = fabs(dxNorm); + double absDy = fabs(dyNorm); + + if (absDx > absDy) + { + change = dxNorm; + useX = 1; + } + else + { + change = dyNorm; + useX = 0; + } + + this->StartPosition[0] = x; + this->StartPosition[1] = y; + + double newPos[4]; + newPos[0] = vp[0]; + newPos[1] = useX ? vp[1] - change : vp[1] + change; + newPos[2] = useX ? vp[2] + change : vp[2] - change; + newPos[3] = vp[3]; + + if (newPos[2] > 1) + { + this->StartPosition[0] = size[0]; + newPos[2] = 1; + } + if (newPos[2] <= newPos[0]+0.01) + { + newPos[2] = newPos[0] + 0.01; + } + if (newPos[1] < 0) + { + this->StartPosition[1] = 0; + newPos[1] = 0; + } + if (newPos[1] >= newPos[3]-0.01) + { + newPos[1] = newPos[3]-0.01; + } + + this->Renderer->SetViewport(newPos); + this->Interactor->Render(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SquareRenderer() +{ + int *size = this->Renderer->GetSize(); + if (size[0] == 0 || size[1] == 0) + { + return; + } + + double vp[4]; + this->Renderer->GetViewport(vp); + + double deltaX = vp[2] - vp[0]; + double newDeltaX = size[1] * deltaX / (double)size[0]; + double deltaY = vp[3] - vp[1]; + double newDeltaY = size[0] * deltaY / (double)size[1]; + + if (newDeltaX > 1) + { + if (newDeltaY > 1) + { + if (size[0] > size[1]) + { + newDeltaX = size[1] / (double)size[0]; + newDeltaY = 1; + } + else + { + newDeltaX = 1; + newDeltaY = size[0] / (double)size[1]; + } + vp[0] = vp[1] = 0; + vp[2] = newDeltaX; + vp[3] = newDeltaY; + } + else + { + vp[3] = vp[1] + newDeltaY; + if (vp[3] > 1) + { + vp[3] = 1; + vp[1] = vp[3] - newDeltaY; + } + } + } + else + { + vp[2] = vp[0] + newDeltaX; + if (vp[2] > 1) + { + vp[2] = 1; + vp[0] = vp[2] - newDeltaX; + } + } + + this->Renderer->SetViewport(vp); + + this->Renderer->NormalizedDisplayToDisplay(vp[0], vp[1]); + this->Renderer->NormalizedDisplayToDisplay(vp[2], vp[3]); + + vtkPoints *points = this->Outline->GetPoints(); + points->SetPoint(0, vp[0]+1, vp[1]+1, 0); + points->SetPoint(1, vp[2]-1, vp[1]+1, 0); + points->SetPoint(2, vp[2]-1, vp[3]-1, 0); + points->SetPoint(3, vp[0]+1, vp[3]-1, 0); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetInteractive(int state) +{ + if (this->Interactive != state) + { + this->Interactive = state; + } + + if (!state) + { + this->OnButtonRelease(); + this->MouseCursorState = vtkPVAxesWidget::Outside; + this->Renderer->RemoveActor(this->OutlineActor); + if (this->Interactor) + { + this->SetMouseCursor(this->MouseCursorState); + // this->Interactor->Render(); + } + } +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetOutlineColor(double r, double g, double b) +{ + this->OutlineActor->GetProperty()->SetColor(r, g, b); + if (this->Interactor) + { +// this->Interactor->Render(); + } +} + +//---------------------------------------------------------------------------- +double* vtkPVAxesWidget::GetOutlineColor() +{ + return this->OutlineActor->GetProperty()->GetColor(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetAxisLabelColor(double r, double g, double b) +{ + this->AxesActor->GetXAxisLabelProperty()->SetColor(r, g, b); + this->AxesActor->GetYAxisLabelProperty()->SetColor(r, g, b); + this->AxesActor->GetZAxisLabelProperty()->SetColor(r, g, b); +} + +//---------------------------------------------------------------------------- +double* vtkPVAxesWidget::GetAxisLabelColor() +{ + return this->AxesActor->GetXAxisLabelProperty()->GetColor(); +} + +//---------------------------------------------------------------------------- +vtkRenderer* vtkPVAxesWidget::GetParentRenderer() +{ + return this->ParentRenderer; +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::SetViewport(double minX, double minY, + double maxX, double maxY) +{ + this->Renderer->SetViewport(minX, minY, maxX, maxY); +} + +//---------------------------------------------------------------------------- +double* vtkPVAxesWidget::GetViewport() +{ + return this->Renderer->GetViewport(); +} + +//---------------------------------------------------------------------------- +void vtkPVAxesWidget::PrintSelf(ostream& os, vtkIndent indent) +{ + this->Superclass::PrintSelf(os, indent); + + os << indent << "AxesActor: " << this->AxesActor << endl; + os << indent << "Interactive: " << this->Interactive << endl; +} diff --git a/src/SVTK/vtkPVAxesWidget.h b/src/SVTK/vtkPVAxesWidget.h new file mode 100644 index 000000000..35c152a94 --- /dev/null +++ b/src/SVTK/vtkPVAxesWidget.h @@ -0,0 +1,159 @@ +/*========================================================================= + + Program: ParaView + Module: $RCSfile$ + + Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc. + All rights reserved. + + ParaView is a free software; you can redistribute it and/or modify it + under the terms of the ParaView license version 1.2. + + See License_v1.2.txt for the full ParaView license. + A copy of this license can be obtained by contacting + Kitware Inc. + 28 Corporate Drive + Clifton Park, NY 12065 + USA + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=========================================================================*/ +// .NAME vtkPVAxesWidget - A widget to manipulate an axe +// +// .SECTION Description +// This widget creates and manages its own vtkPVAxesActor. + + +#ifndef __vtkPVAxesWidget_h +#define __vtkPVAxesWidget_h + +#include "SVTK.h" +#include "vtkInteractorObserver.h" + +class vtkActor2D; +class vtkKWApplication; +class vtkPolyData; +class vtkPVAxesActor; +class vtkPVAxesWidgetObserver; +class vtkRenderer; + +class SVTK_EXPORT vtkPVAxesWidget : public vtkInteractorObserver +{ +public: + static vtkPVAxesWidget* New(); + vtkTypeRevisionMacro(vtkPVAxesWidget, vtkInteractorObserver); + void PrintSelf(ostream& os, vtkIndent indent); + + // Description: + // Set/get the axes actor to be displayed in this 3D widget. + void SetAxesActor(vtkPVAxesActor *actor); + vtkGetObjectMacro(AxesActor, vtkPVAxesActor); + + // Description: + // Enable the 3D widget. + virtual void SetEnabled(int); + + //BTX + // Description: + // Set the renderer this 3D widget will be contained in. + void SetParentRenderer(vtkRenderer *ren); + vtkRenderer* GetParentRenderer(); + //ETX + + // Description: + // Callback to keep the camera for the axes actor up to date with the + // camera in the parent renderer + void ExecuteEvent(vtkObject *o, unsigned long event, void *calldata); + + // Description: + // Set/get whether to allow this 3D widget to be interactively moved/scaled. + void SetInteractive(int state); + vtkGetMacro(Interactive, int); + vtkBooleanMacro(Interactive, int); + + // Description: + // Set/get the color of the outline of this widget. The outline is visible + // when (in interactive mode) the cursor is over this 3D widget. + void SetOutlineColor(double r, double g, double b); + double *GetOutlineColor(); + + // Description: + // Set/get the color of the axis labels of this widget. + void SetAxisLabelColor(double r, double g, double b); + double *GetAxisLabelColor(); + + // Description: + // Set/get the viewport to position/size this 3D widget. + void SetViewport(double minX, double minY, double maxX, double maxY); + double* GetViewport(); + +protected: + vtkPVAxesWidget(); + ~vtkPVAxesWidget(); + + vtkRenderer *Renderer; + vtkRenderer *ParentRenderer; + + vtkPVAxesActor *AxesActor; + vtkPolyData *Outline; + vtkActor2D *OutlineActor; + + static void ProcessEvents(vtkObject *object, unsigned long event, + void *clientdata, void *calldata); + + vtkPVAxesWidgetObserver *Observer; + int StartTag; + + int MouseCursorState; + int Moving; + int StartPosition[2]; + + int Interactive; + + void UpdateCursorIcon(); + void SetMouseCursor(int cursorState); + +//BTX + int State; + + enum AxesWidgetState + { + Outside = 0, + Inside, + TopLeft, + TopRight, + BottomLeft, + BottomRight + }; +//ETX + + void OnButtonPress(); + void OnMouseMove(); + void OnButtonRelease(); + + void MoveWidget(); + void ResizeTopLeft(); + void ResizeTopRight(); + void ResizeBottomLeft(); + void ResizeBottomRight(); + + void SquareRenderer(); + + unsigned long StartEventObserverId; +private: + vtkPVAxesWidget(const vtkPVAxesWidget&); // Not implemented + void operator=(const vtkPVAxesWidget&); // Not implemented +}; + +#endif diff --git a/src/SalomeApp/addvars2notebook.py b/src/SalomeApp/addvars2notebook.py new file mode 100644 index 000000000..b112841fe --- /dev/null +++ b/src/SalomeApp/addvars2notebook.py @@ -0,0 +1,85 @@ +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import os +import os.path + +def addvars2notebook(filename): + # + vars_and_values = [] + contents = [] + # + directory = os.path.dirname(filename) + base = os.path.basename(filename) + prefix = base[:-3] # remove ".py" + prefix = prefix + '_' + from os import listdir + l = listdir(directory) + for f in l: + if f.find(prefix) != 0: continue + if f[-3:] != ".py": continue + module = f[len(prefix):-3] + try: + mod = __import__("addvars2notebook_%s"%(module)) + except ImportError: + continue + try: + func = mod.addvars2notebook + except AttributeError: + continue + fff = os.path.join(directory, f) + content = func(fff, vars_and_values) + contents.append([fff, content]) + pass + # + if vars_and_values: + stream = open(filename) + content = stream.read() + stream.close() + fields = content.split("import iparameters") + if len(fields) == 2: + begin = fields[0] + if begin.find("## NoteBook E.A.") >= 0: + begin = begin.split("## NoteBook E.A.")[0] + pass + end = "import iparameters" + fields[1] + content = begin + content += "## NoteBook E.A.\n" + for var, value in vars_and_values: + content += "notebook.set(%s,%s)\n"%(var.__repr__(), value) + pass + content += end + stream = open(filename, "w") + stream.write(content) + stream.close() + # + for fff, content in contents: + stream = open(fff, "w") + stream.write(content) + stream.close() + pass + pass + pass + # + return + +if __name__ == "__main__": + import sys + addvars2notebook(sys.argv[1]) + pass diff --git a/src/SalomeApp/resources/SalomeApp_msg_fr.ts b/src/SalomeApp/resources/SalomeApp_msg_fr.ts new file mode 100755 index 000000000..dc4f87c52 --- /dev/null +++ b/src/SalomeApp/resources/SalomeApp_msg_fr.ts @@ -0,0 +1,517 @@ + + + + + @default + + WRN_FILE_NAME_BAD + Indiquez un nom de fichier correct. +Un fichier Python ne doit être composé que de lettres, chiffres et tirets bas et doit commencer avec une lettre ou un tiret bas. + + + WRN_FILE_NOT_EXIST + Le fichier %1 n'existe pas. + + + CLOSE_LOCKED_STUDY + Fermer l'étude verrouillée ? + + + PUBLISH_IN_STUDY + Publier dans l'étude + + + MULTI_FILE_DUMP + Dump multi-fichiers + + + BUT_NEW + &Nouvelle + + + SAVE_POINT_ROOT_NAME + Etats d'IHM + + + SAVE_POINT_ROOT_TOOLTIP + Etats d'IHM persistents + + + SAVE_GUI_STATE + Sauvegarder l'état d'IHM + + + BUT_LOAD + &Charger + + + BUT_OPEN + &Ouvrir + + + SAVE_POINT_OBJECT_TOOLTIP + Etat d'IHM: %1 sauvegardé + + + SAVE_POINT_DEF_NAME + Etat d'IHM: + + + VALUE_COLUMN + Valeur + + + IOR_COLUMN + IOR + + + REFENTRY_COLUMN + Entrée de réf. + + + ERR_INCOMPATIBLE_TYPE + Le type numérique de la variable "%1" n'est pas compatible + + + ERR_INVALID_VALUE + La valeur n'a pas été validée + + + ERR_NO_VARIABLE + La variable "%1" n'existe pas. + + + + SalomeApp_Application + + ALL_FILES_FILTER + Tous les fichiers (*.*) + + + APPCLOSE_UNLOAD + &Déconnecter + + + APPCLOSE_CLOSE + &Fermer sans sauvegarder + + + MEN_WINDOWS_NEW + Nouvelle fenêtre + + + MEN_DELETE_INVALID_REFERENCE + Supprimer la référence invalide + + + TOT_FILE_DESK_PREFERENCES + Préférences + + + MEN_DELETE_VS + Supprimer + + + MEN_OPENWITH + Activer module %1 + + + MEN_DESK_REGISTRY_DISPLAY + Affichage du registre CORBA + + + APPCLOSE_SAVE + &Sauvegarder && Fermer + + + TOT_DESK_FILE_LOAD_SCRIPT + Exécuter un script python + + + PREF_PYDUMP_PUBLISH + Publier dans l'étude dans un scrypt Python + + + PREF_PYDUMP_MULTI_FILE + Dump Python multi-fichiers + + + PREF_PYDUMP_SAVE_GUI + Enregistrer l'état de l'IHM dans un script Python + + + PREF_STORE_VISUAL_STATE + Sauvegarder/restaurer le dernier état d'IHM + + + PRP_DESK_FILE_SAVE_GUI_STATE + Sauvegarder l'état actuel des vues 3D, des objets affichés, etc. + + + MEN_DESK_FILE_SAVE_GUI_STATE + Sauvegarder l'état d'IHM + + + TOT_DESK_FILE_SAVE_GUI_STATE + Sauvegarder l'état d'IHM + + + MEN_RESTORE_VS + Restaurer + + + WRN_DUMP_STUDY_FAILED + Impossible de générer le script de l'étude + + + MEN_DESK_PROPERTIES + Pro&priétés... + + + QUE_DOC_ALREADYEXIST + Le document %1 existe déjà dans le gestionnaire d'études. +Voulez-vous le recharger ? + + + MEN_RENAME_VS + Renommer + + + TOT_DESK_CATALOG_GENERATOR + Générateur de catalogue + + + TOT_DESK_ADD_VARS_TO_NOTEBOOK + Ajouter les variables au registre + + + PUBLISH_IN_STUDY + Publier dans l'étude + + + PREF_OBJ_BROWSER_SETTINGS + Paramètres + + + PRP_DESK_REGISTRY_DISPLAY + Visualiser le contenu du registre du serveur CORBA + + + PYTHON_FILES_FILTER + Fichiers PYTHON (*.py) + + + APPCLOSE_DESCRIPTION + Voulez-vous fermer ou décharger l'étude avant de la fermer ? + + + PRP_DESK_PROPERTIES + Editer les propriétés de l'étude + + + PREF_TAB_OBJBROWSER + Arbre d'étude + + + STUDY_LOCKED + VERROUILLEE + + + APPCLOSE_CANCEL + &Annuler + + + OBJ_BROWSER_NAME + Objet + + + TOT_DESK_REGISTRY_DISPLAY + Visualiser le registre CORBA + + + OBJ_BROWSER_COLUMN_0 + Entrée + + + OBJ_BROWSER_COLUMN_1 + Valeur + + + OBJ_BROWSER_COLUMN_2 + IOR + + + OBJ_BROWSER_COLUMN_3 + Entrée de référence + + + PREF_CATEGORY_SALOME + SALOME + + + PYTHON_CONSOLE + Console Python + + + MEN_DESK_FILE_LOAD_SCRIPT + Exécuter un scrip&t... + + + MEN_DESK_TOOLS + &Outils + + + MEN_DESK_PLUGINS_TOOLS + Outils + + + MEN_DESK_PLUGINS + Extensions + + + TOT_DESK_FILE_DUMP_STUDY + Générer le script de l'étude + + + MEN_VIEW_WNDS + Fenêtres + + + MEN_DESK_FILE_DUMP_STUDY + &Générer le script de l'étude... + + + PRP_DESK_CATALOG_GENERATOR + Génére un catalogue XML de l'interface du composant + + + PRP_DESK_ADD_VARS_TO_NOTEBOOK + Ajouter les variables de l'étude au registre + + + PRP_DESK_FILE_DUMP_STUDY + Génère le script python de l'étude + + + TOT_DESK_FILE_NOTEBOOK + Ouvrir le registre + + + MEN_DESK_FILE_NOTEBOOK + Re&gistre... + + + PRP_DESK_FILE_NOTEBOOK + Ouvrir le registre + + + TOT_DESK_PROPERTIES + Propriétés de l'étude + + + PREF_GROUP_DEF_COLUMNS + Colonnes par défaut + + + PRP_DESK_FILE_LOAD_SCRIPT + Exécute un script Python à partir d'un fichier + + + MEN_DESK_CATALOG_GENERATOR + &Genérateur de catalogue + + + MEN_DESK_ADD_VARS_TO_NOTEBOOK + Ajouter les variables au registre + + + APPCLOSE_CAPTION + Fermer l'étude actuelle + + + MEN_DESK_MRU + Dernières études ouvertes + + + TOT_DESK_MRU + Dernières études ouvertes + + + ACTIVATE_MODULE_OP_LOAD + &Charger... + + + ACTIVATE_MODULE_OP_SCRIPT + Charger un &script... + + + + SalomeApp_StudyPropertiesDlg + + PRP_MODE_FROM_SCRATCH + du début + + + PRP_AUTHOR + Auteur + + + PRP_LOCKED + Verrouillée + + + PRP_MODIFICATIONS + Modifications + + + PRP_DATE_MODIF + Date + + + PRP_UNITS + Unités de longueur + + + PRP_COMMENT + Commentaires + + + PRP_NO + Non + + + PRP_YES + Oui + + + PRP_MODIFIED + Modifiée + + + PRP_NOT_MODIFIED + Non modifiée + + + PRP_DATE + Date de création + + + PRP_MODE + Mode + + + PRP_MODE_FROM_COPYFROM + copier de + + + TLT_STUDY_PROPERTIES + Propriétés de l'étude + + + + SalomeApp_ExitDlg + + SHUTDOWN_SERVERS + Arrêter les serveurs + + + + NoteBook_Table + + REMOVE_VARIABLE_IS_USED + La variable "%1" est utilisée dans l'étude. +Voulez-vous vraiment la supprimer? + + + RENAME_VARIABLE_IS_USED + La variable "%1" est utilisée dans l'étude. +Voulez-vous vraiment la renommer? + + + VARNAME_COLUMN + Nom de la variable + + + VARVALUE_COLUMN + Valeur de la variable + + + VARVALUE_INCORRECT + La valeur de la variable n'est pas correcte: %1 + + + VARNAME_INCORRECT + Le nom de la variable n'est pas correct: %1 + + + VARNAME_EXISTS + La variable "%1" existe + + + + SalomeApp_NoteBookDlg + + NOTEBOOK_TITLE + Registre Salome + + + BUT_UPDATE_STUDY + &Mettre l'étude à jour + + + BUT_REMOVE + &Supprimer + + + BUT_APPLY_AND_CLOSE + A&ppliquer et Fermer + + + BUT_HELP + &Aide + + + CLOSE_CAPTION + Fermer le registre + + + CLOSE_DESCRIPTION + Voulez-vous sauvegarder les changements faits au registre ? + + + INCORRECT_DATA + Au moins une variable a été définie incorrectement. +Editez ses paramètres ou retirez la de la liste. + + + ERR_UPDATE_STUDY_FAILED + Impossible de mettre l'étude à jour ! + + + + SalomeApp_DoubleSpinBox + + VALID_RANGE_VAR_MSG + Indiquez un nom de variable ou +une valeur réelle dans l'intervalle ( %1; %2 ) +avec une précision de %3 décimales + + + VALID_RANGE_NOVAR_MSG + Indiquez une valeur réelle dans l'intervalle ( %1; %2 ) +avec une précision de %3 décimales + + + + SalomeApp_IntSpinBox + + VALID_RANGE_VAR_MSG + Indiquez un nom de variable ou +une valeur entière dans l'intervalle ( %1; %2 ) + + + VALID_RANGE_NOVAR_MSG + Indiquez une valeur entière dans l'intervalle ( %1; %2 ) + + + diff --git a/src/SalomeApp/salome_pluginsmanager.py b/src/SalomeApp/salome_pluginsmanager.py new file mode 100644 index 000000000..c498c1a45 --- /dev/null +++ b/src/SalomeApp/salome_pluginsmanager.py @@ -0,0 +1,328 @@ +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +""" +This module is imported from C++ SalomeApp_Application and initialized +(call to initialize function with 4 parameters) module : 0 if it's +plugins manager at the application level 1 if it is at the module +level name : the name of the plugins manager. This name is used to +build the name of the plugins files basemenuname : the name of the +menu into we want to add the menu of the plugins ("Tools" for example) +menuname : the name of plugins menu + +A plugins manager is created when calling initialize. + +The plugins manager creates a submenu in the +menu. + +The plugins manager searches in $HOME/.config/salome/Plugins, +$HOME/$APPLI/Plugins, $SALOME_PLUGINS_PATH directories files named +_plugins.py and executes them. + +These files should contain python code that register functions into +the plugins manager. + +Example of a plugins manager with name salome. It searches files with +name salome_plugins.py (example follows):: + + import salome_pluginsmanager + + def about(context): + from PyQt4.QtGui import QMessageBox + QMessageBox.about(None, "About SALOME pluginmanager", "SALOME plugins manager in SALOME virtual application ") + + salome_pluginsmanager.AddFunction('About plugins','About SALOME pluginmanager',about) + +All entries in menu are added in the same order as the calls to +AddFunction. It is possible to customize this presentation by getting +the entries list (salome_pluginsmanager.entries()) and modifying it in +place. For example, you can do that : +salome_pluginsmanager.entries().sort() to order them alphabetically or +salome_pluginsmanager.entries().remove("a") to remove the entry named +"a". + +It is possible to put entries in submenus. You only need to give a +name with / to the entry. for example:: + + salome_pluginsmanager.AddFunction('a/b/About','About SALOME pluginmanager',about) + +will add 2 submenus a and b before creating the entry. + +In short to add a plugin: + + 1. import the python module salome_pluginsmanager (in your + salome_plugins.py or _plugins.py) + + 2. write a function with one argument context (it's an object with 3 + attributes) + + 3. register the function with a call to AddFunction (entry in menu plugins, + tooltip, function) + +context attributes: + + - sg : the SALOME Swig interface + - studyId : the SALOME studyId that must be used to execute the plugin + - study : the SALOME study object that must be used to execute the plugin + +""" + +import os,sys,traceback +from PyQt4 import QtGui +from PyQt4 import QtCore + +import salome + +SEP=":" +if sys.platform == "win32": + SEP = ";" + +# Get SALOME PyQt interface +import SalomePyQt +sgPyQt = SalomePyQt.SalomePyQt() + +# Get SALOME Swig interface +import libSALOME_Swig +sg = libSALOME_Swig.SALOMEGUI_Swig() + +plugins={} +current_plugins_manager=None + +def initialize(module,name,basemenuname,menuname): + if not plugins.has_key(name): + if module: + plugins[name]={} + else: + plugins[name]=[] + if module: + studyId=sg.getActiveStudyId() + if plugins[name].has_key(studyId):return + plugins[name][studyId]=PluginsManager(module,name,basemenuname,menuname) + else: + plugins[name].append(PluginsManager(module,name,basemenuname,menuname)) + +class Context: + def __init__(self,sgpyqt): + self.sg=sgpyqt + self.studyId=salome.sg.getActiveStudyId() + self.study= salome.myStudyManager.GetStudyByID(self.studyId) + +def find_menu(smenu): + lmenus=smenu.split("|") + main=lmenus.pop(0).strip() + menu=sgPyQt.getPopupMenu(main) + return findMenu(lmenus,menu) + +def findMenu(lmenu,menu): + if not lmenu:return menu + m=lmenu.pop(0).strip() + for a in menu.actions(): + if a.menu(): + if a.text() == m: + return findMenu(lmenu,a.menu()) + +PLUGIN_PATH_PATTERN="share/salome/plugins" +MATCH_ENDING_PATTERN="_plugins.py" +from salome.kernel.syshelper import walktree +from salome.kernel.logger import Logger +#from salome.kernel.termcolor import GREEN +logger=Logger("PluginsManager") #,color=GREEN) +# VSR 21/11/2011 : do not show infos in the debug mode +#logger.showDebug() + +class PluginsManager: + def __init__(self,module,name,basemenuname,menuname): + self.name=name + self.basemenuname=basemenuname + self.menuname=menuname + self.module=module + self.registry={} + self.handlers={} + self.entries=[] + self.lasttime=0 + self.plugindirs=[] + self.plugins_files=[] + + # MODULES plugins directory. + # The SALOME modules may provides natively some plugins. These + # MODULES plugins are supposed to be located in the + # installation folder of the module, in the subdirectory + # "share/salome/plugins". We first look for these directories. + for key in os.environ.keys(): + if key.endswith("_ROOT_DIR"): + rootpath=os.environ[key] + dirpath=os.path.join(rootpath,PLUGIN_PATH_PATTERN) + if os.path.isdir(dirpath) and dirpath not in self.plugindirs: + logger.debug("Looking for plugins in the directory %s ..."%dirpath) + walktree(dirpath,self.analyseFile) + + # USER plugins directory + user_dir = os.path.expanduser("~/.config/salome/Plugins") + self.plugindirs.append(user_dir) + logger.info("The user directory %s has been added to plugin paths"%user_dir) + # obsolete: USER plugins directory + # (for compatibility reasons only; new plugins should be stored in ~/.config/salome/Plugins) + user_obsolete_dir = os.path.expanduser("~/.salome/Plugins") + self.plugindirs.append(user_obsolete_dir) + logger.info("The user directory %s has been added to plugin paths (deprecated)"%user_obsolete_dir) + + # APPLI plugins directory + appli=os.getenv("APPLI") + if appli: + appli_dir=os.path.join(os.path.expanduser("~"),appli,"Plugins") + self.plugindirs.append(appli_dir) + logger.info("The APPLI directory %s has been added to plugin paths"%appli_dir) + + #SALOME_PLUGINS_PATH environment variable (list of directories separated by ":") + pluginspath=os.getenv("SALOME_PLUGINS_PATH") + if pluginspath: + for directory in pluginspath.split(SEP): + self.plugindirs.append(directory) + logger.info("The directory %s has been added to plugin paths"%directory) + + self.basemenu = find_menu(self.basemenuname) + + if self.module: + self.menu=QtGui.QMenu(self.menuname) + mid=sgPyQt.createMenu(self.menu.menuAction(),self.basemenuname) + else: + self.menu=QtGui.QMenu(self.menuname,self.basemenu) + self.basemenu.addMenu(self.menu) + + self.menu.menuAction().setVisible(False) + + self.basemenu.connect(self.basemenu, QtCore.SIGNAL("aboutToShow()"), self.importPlugins) + + def analyseFile(self,filename): + """ + This function checks if the specified file is a plugins python + module and add the directory name of this file to the list of + plugin paths. This function is aimed to be used as the callback + function of the walktree algorithm. + """ + if str(filename).endswith(MATCH_ENDING_PATTERN): + dirpath=os.path.dirname(filename) + if dirpath not in self.plugindirs: + self.plugindirs.append(dirpath) + logger.debug("The directory %s has been added to plugin paths"%dirpath) + + def AddFunction(self,name,description,script): + """ Add a plugin function + """ + self.registry[name]=script,description + self.entries.append(name) + + def handler(obj=self,script=script): + try: + script(Context(sgPyQt)) + except: + s=traceback.format_exc() + QtGui.QMessageBox.warning(None,"Exception occured",s) + + self.handlers[name]=handler + + def importPlugins(self): + """Execute the salome_plugins file that contains plugins definition """ + studyId=sg.getActiveStudyId() + if studyId == 0: + self.menu.clear() + self.menu.menuAction().setVisible(False) + return + elif self.lasttime ==0: + salome.salome_init(embedded=1) + + lasttime=0 + + plugins_files=[] + plugins_file_name=self.name+MATCH_ENDING_PATTERN + for directory in self.plugindirs: + plugins_file = os.path.join(directory,plugins_file_name) + if os.path.isfile(plugins_file): + plugins_files.append((directory,plugins_file)) + lasttime=max(lasttime,os.path.getmtime(plugins_file)) + + plugins_files.sort() + + if not plugins_files: + self.registry.clear() + self.handlers.clear() + self.entries=[] + self.lasttime=0 + self.menu.clear() + self.menu.menuAction().setVisible(False) + return + + if self.plugins_files != plugins_files or lasttime > self.lasttime: + global current_plugins_manager + current_plugins_manager=self + self.registry.clear() + self.handlers.clear() + self.entries=[] + self.lasttime=lasttime + for directory,plugins_file in plugins_files: + if directory not in sys.path: + sys.path.insert(0,directory) + try: + execfile(plugins_file,globals(),{}) + except: + logger.fatal("Error while loading plugins from file %s"%plugins_file) + traceback.print_exc() + + self.updateMenu() + + def updateMenu(self): + """Update the Plugins menu""" + self.menu.clear() + for entry in self.entries: + names=entry.split("/") + if len(names) < 1:continue + parentMenu=self.menu + + if len(names) > 1: + #create or get submenus + submenus={} + for action in parentMenu.actions(): + menu=action.menu() + if menu: + submenus[str(menu.title())]=menu + while len(names) > 1: + name=names.pop(0) + if submenus.has_key(name): + amenu=submenus[name] + else: + amenu=QtGui.QMenu(name,parentMenu) + parentMenu.addMenu(amenu) + submenus[name]=amenu + parentMenu=amenu + + name=names.pop(0) + act=parentMenu.addAction(name,self.handlers[entry]) + act.setStatusTip(self.registry[entry][1]) + + self.menu.menuAction().setVisible(True) + +def AddFunction(name,description,script): + """ Add a plugin function + Called by a user to register a function (script) + """ + return current_plugins_manager.AddFunction(name,description,script) + +def entries(): + """ Return the list of entries in menu: can be sorted or modified in place to customize menu content """ + return current_plugins_manager.entries diff --git a/src/Style/resources/Style_msg_fr.ts b/src/Style/resources/Style_msg_fr.ts new file mode 100644 index 000000000..29604c9f4 --- /dev/null +++ b/src/Style/resources/Style_msg_fr.ts @@ -0,0 +1,287 @@ + + + + + Style_PrefDlg + + Quick + Rapide + + + Auto + Auto + + + Base colors + Couleurs de base + + + Additional colors + Couleurs supplémentaires + + + Active + Actif + + + Inactive + Inactif + + + Disabled + Désactivé + + + Window text + Texte de la fenêtre + + + Button + Bouton + + + Light + Clair + + + Midlight + Demi-clair + + + Dark + Foncé + + + Mid + Moyen + + + Text + Texte + + + Bright text + Texte éclairé + + + Button text + Texte du bouton + + + Base + Base + + + Window + Fenêtre + + + Shadow + Ombre + + + Highlight + Surligner + + + Highlighted text + Texte surligné + + + Link + Lien + + + Visited link + Lien visité + + + Alternate base + Base alternative + + + Tooltip base + Base d'infobulle + + + Tooltip text + Texte d'infobulle + + + Border top + Frontière de dessus + + + Border bottom + Frontière de dessous + + + Tab border top + Frontière de dessus de l'onglet + + + Tab border bottom + Frontière de dessous de l'onglet + + + Field light + Champ clair + + + Field dark + Champ foncé + + + Slider + Barre de défilement + + + Lines + Lignes + + + Widget center + Composant central + + + Widget border + Composant de frontière + + + Header + Titre + + + Progress bar + Barre d'avancement + + + Pointer + Pointeur + + + Checked + Coché + + + Table grid + Quadrillage du tableau + + + SALOME style preferences + Préférences de style Salomé + + + Enable SALOME Style + Activer le style Salomé + + + Font + Caractères + + + Type + Type + + + None + Aucun + + + Horizontal + Horizontal + + + Inclined + Incliné + + + Transparency + Transparence + + + Widgets rounding + Arrondi des objets-fenêtres + + + Buttons + Boutons + + + Edit boxes + Champs d'édition + + + Frames + Cadres + + + Sliders + Barres de défilement + + + Anti-aliased borders + Frontières anticrénelées + + + Handle + Poignée + + + Horizontal spacing + Espacement horizontal + + + Vertical spacing + Espacement vertical + + + Splitter handle size + Taille de poignée du diviseur + + + Slider handle size + Taille de poignée de la barre de défilement + + + Widget effect + Effet des composants + + + Highlight widgets + Mettre en valeur les composants + + + Auto raise widgets + Activer les composants automatiquement + + + Colors + Couleurs + + + Properties + Paramètres + + + [ Current ] + [ Actuel ] + + + [ Default ] + [ Défaut ] + + + Delete user theme + Supprimer le thème utilisateur + + + Remove theme %1? + Supprimer le thème %1? + + + Custom schema + Schéma personnalisé + + + diff --git a/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts b/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts new file mode 100755 index 000000000..20a97c711 --- /dev/null +++ b/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts @@ -0,0 +1,222 @@ + + + + + @default + + TOOLS_WRN_WARNING + Avertissement + + + TOOLS_BUT_BROWSE + Naviguer... + + + TOOLS_ERR_ERROR + Erreur + + + TOOLS_ERR_FILE_NOT_EXIST + %1 +Le fichier n'existe pas + + + TOOLS_BUT_OK + &Ok + + + TOOLS_BUT_APPLY + &Appliquer + + + TOOLS_BUT_CLOSE + &Fermer + + + + ToolsGUI_CatalogGeneratorDlg + + TOOLS_MEN_EXPORT + Exporter + + + TOOLS_MEN_IMPORT + Importer + + + TOOLS_VERSION + Version : + + + TOOLS_COMP_NAME + Nom : + + + TOOLS_COMP_TYPE + Type : + + + TOOLS_XML_FILE + XML : + + + TOOLS_PNG_FILE + Icône : + + + TOOLS_SUPPLEMENT + Données supplémentaires du composant + + + TOOLS_AUTHOR + Auteur : + + + TOOLS_COMP_MULTISTD + Multi-étude : + + + TOOLS_COMP_USERNAME + Nom utilisateur : + + + TOOLS_CATALOG_GENERATOR + Générateur du catalogue + + + TOOLS_FILES + Fichiers + + + TOOLS_MEN_IMPORT_PNG + Fichiers PNG ( *.png ) + + + TOOLS_MEN_IMPORT_IDL + Fichiers IDL ( *.idl ) + + + TOOLS_MEN_EXPORT_XML + Fichiers XML ( *.xml ) + + + TOOLS_IDL_FILE + IDL : + + + + ToolsGUI_RegWidget + + TLT_REFRESH_INTERVAL + Fréquence d'actualisation + + + LAB_REFRESH_INTERVAL + Nouvelle fréquence d'actualisation (en secondes) + + + TLT_REGISTRY + Registre + + + MNU_ACTIONS + Actions + + + TB_ACTIONS + Actions + + + MEN_REFRESH + Actualiser + + + STB_REFRESH + Met à jour la liste des composants + + + MEN_INTERVAL + Fréquence d'actualisation... + + + STB_INTERVAL + Changer la fréquence d'actualisation + + + MEN_CLOSE + Fermer + + + STB_CLOSE + Fermer la fenêtre du Registre + + + TAB_RUNNING + En cours + + + TAB_HISTORY + Historique + + + HDR_COMPONENT + Composant + + + HDR_PID + PID + + + HDR_USERNAME + Nom de l'utilisateur + + + HDR_HOSTNAME + Nom de l'hôte + + + HDR_STARTED + Commencé + + + HDR_FINISHED + Terminé + + + HDR_HELLO + Dernier ping + + + ERR_NO_REGISTRY + Erreur: le serveur de registre n'est pas trouvé + + + INFO_SERVICE + Service : %1 + + + INFO_PROCESS + Le procédé ( PID : %1 ) sur la station %2 ( adresse IP : %3 ); lancé par l'utilisateur %4 ( UID : %5 ) au répertoire %6. + + + INFO_STARTED + Commencé : %1 + + + INFO_LAST_PING + Dernier signal : %1 + + + INFO_FINISHED + Fini : %1 + + + INFO_RUNNING + En cours + + + INFO_TIME_DIFF + Le temps de la station %1 est différent du temps du serveur. La différence est %2 secondes. + + + diff --git a/src/VTKViewer/VTKViewer.qrc b/src/VTKViewer/VTKViewer.qrc new file mode 100644 index 000000000..6256bfbf6 --- /dev/null +++ b/src/VTKViewer/VTKViewer.qrc @@ -0,0 +1,14 @@ + + + textures/texture1.dat + textures/texture2.dat + textures/texture3.dat + textures/texture4.dat + textures/texture5.dat + textures/texture6.dat + textures/texture7.dat + textures/texture8.dat + textures/texture9.dat + + + \ No newline at end of file diff --git a/src/VTKViewer/VTKViewer_Algorithm.cxx b/src/VTKViewer/VTKViewer_Algorithm.cxx new file mode 100644 index 000000000..ce57a890d --- /dev/null +++ b/src/VTKViewer/VTKViewer_Algorithm.cxx @@ -0,0 +1,42 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_Algorithm.h" + +namespace VTK +{ + ActorCollectionCopy::ActorCollectionCopy( vtkActorCollection* theActorCollection ) + { + myActorCollection = vtkActorCollection::New(); + theActorCollection->InitTraversal(); + while(vtkActor* anActor = theActorCollection->GetNextActor()) + myActorCollection->AddItem(anActor); + } + + ActorCollectionCopy::~ActorCollectionCopy() + { + myActorCollection->Delete(); + myActorCollection = NULL; + } + + vtkActorCollection* ActorCollectionCopy::GetActors() const + { + return myActorCollection; + } +} diff --git a/src/VTKViewer/VTKViewer_ArcBuilder.cxx b/src/VTKViewer/VTKViewer_ArcBuilder.cxx new file mode 100644 index 000000000..26df8dbdc --- /dev/null +++ b/src/VTKViewer/VTKViewer_ArcBuilder.cxx @@ -0,0 +1,672 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File : VTKViewer_ArcBuilder.cxx +// Author : Roman NIKOLAEV +// Module : GUI +// +#include "VTKViewer_ArcBuilder.h" + +#include +#include + +//VTK includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PRECISION 10e-4 +#define ANGLE_PRECISION 0.5 +//#define _MY_DEBUG_ + +#ifdef _MY_DEBUG_ +#include +#endif + + +bool CheckAngle(const double compare, const double angle){ + if((angle <= compare - ANGLE_PRECISION) || (angle >= compare + ANGLE_PRECISION)) + return true; + else + return false; +} + +//------------------------------------------------------------------------ +/*! + *Class XYZ + *Constructor + */ +XYZ::XYZ(double X, double Y, double Z): + x(X),y(Y),z(Z) {} + +/*! + * Empty Constructor + */ +XYZ::XYZ(){} + +/*! + * Destructor + */ +XYZ::~XYZ() +{} + +/* + * Calculate modulus + */ +double XYZ::Modulus () const { + return sqrt (x * x + y * y + z * z); +} + +//------------------------------------------------------------------------ +/*! + * Class Pnt + * Constructor + */ +Pnt::Pnt(double X, + double Y, + double Z, + double ScalarValue): + coord(X,Y,Z), + scalarValue(ScalarValue) +{ +} + +Pnt::Pnt() +{ +} + +/*! + * Destructor + */ +Pnt::~Pnt() +{ +} + +//------------------------------------------------------------------------ +/*! + * Class Vec + * Constructor + */ +Vec::Vec (const double Xv, + const double Yv, + const double Zv) +{ + double D = sqrt (Xv * Xv + Yv * Yv + Zv * Zv); + if(D != 0) { + coord.SetX(Xv / D); + coord.SetY(Yv / D); + coord.SetZ(Zv / D); + } +} + +/*! + * Destructor + */ +Vec::~Vec(){} + + +/*! + * Calculate angle between vectors in radians + */ +double Vec::AngleBetween(const Vec & Other) +{ + double res; + double numerator = GetXYZ().X()*Other.GetXYZ().X()+GetXYZ().Y()*Other.GetXYZ().Y()+GetXYZ().Z()*Other.GetXYZ().Z(); + double denumerator = GetXYZ().Modulus()*Other.GetXYZ().Modulus(); + double d = numerator/denumerator; + if( d < -1 && d > -1 - PRECISION ) + d = -1; + else if( d > 1 && d < 1 + PRECISION ) + d = 1; + res = acos( d ); + return res; +} + +/*! + * Calculate angle between vectors in degrees + */ +double Vec::AngleBetweenInGrad(const Vec & Other){ + return AngleBetween(Other)*vtkMath::DegreesFromRadians(1.); +} + +/* + * Calculate vector multiplication +*/ +Vec Vec::VectMultiplication(const Vec & Other) const{ + double x = GetXYZ().Y()*Other.GetXYZ().Z() - GetXYZ().Z()*Other.GetXYZ().Y(); + double y = GetXYZ().Z()*Other.GetXYZ().X() - GetXYZ().X()*Other.GetXYZ().Z(); + double z = GetXYZ().X()*Other.GetXYZ().Y() - GetXYZ().Y()*Other.GetXYZ().X(); + Vec *aRes = new Vec(x,y,z); + return *aRes; +} + +/*---------------------Class Plane --------------------------------*/ +/*! + * Constructor + */ +Plane::Plane(const Pnt& thePnt1, const Pnt& thePnt2, const Pnt& thePnt3) +{ + CalculatePlane(thePnt1,thePnt2,thePnt3); +} + +/*! + * Destructor + */ +Plane::~Plane() +{} + +/* + * Return plane normale + */ +Vec Plane::GetNormale() const{ + return Vec(myA,myB,myC); +} + +/* + * Calculate A,B,C coeefs of plane + */ +void Plane::CalculatePlane(const Pnt& thePnt1, const Pnt& thePnt2, const Pnt& thePnt3){ + + double x1 = thePnt1.GetXYZ().X(); + double x2 = thePnt2.GetXYZ().X(); + double x3 = thePnt3.GetXYZ().X(); + + double y1 = thePnt1.GetXYZ().Y(); + double y2 = thePnt2.GetXYZ().Y(); + double y3 = thePnt3.GetXYZ().Y(); + + double z1 = thePnt1.GetXYZ().Z(); + double z2 = thePnt2.GetXYZ().Z(); + double z3 = thePnt3.GetXYZ().Z(); + + myA = y1*(z2 - z3) + y2*(z3 - z1) + y3*(z1 - z2); + myB = z1*(x2 - x3) + z2*(x3 - x1) + z3*(x1 - x2); + myC = x1*(y2 - y3) + x2*(y3 - y1) + x3*(y1 - y2); + +#ifdef _MY_DEBUG_ + cout<<"Plane A: "<Update(); +#ifdef _MY_DEBUG_ + cout<<"Need Rotation!!!"<GetPoint(0,coords); + myPnt1 = Pnt(coords[0],coords[1],coords[2], thePnt1.GetScalarValue()); + aTransformedGrid->GetPoint(1,coords); + myPnt2 = Pnt(coords[0],coords[1],coords[2], thePnt2.GetScalarValue()); + aTransformedGrid->GetPoint(2,coords); + myPnt3 = Pnt(coords[0],coords[1],coords[2], thePnt3.GetScalarValue()); + std::vector aScalarValues; + vtkUnstructuredGrid* anArc = BuildArc(aScalarValues); + vtkUnstructuredGrid* anTransArc; + if(needRotation) { + anTransArc = TransformGrid(anArc,aAxis,-anAngle); + anTransArc->Update(); + } + else + anTransArc = anArc; + + myPoints = anTransArc->GetPoints(); + myScalarValues = aScalarValues; + myStatus = Arc_Done; + } + } + else{ +#ifdef _MY_DEBUG_ + std::cout<<"Points lay on the one line !"<Update(); + myPoints = aGrid->GetPoints(); + + myScalarValues.clear(); + myScalarValues.push_back(thePnt1.GetScalarValue()); + myScalarValues.push_back(thePnt2.GetScalarValue()); + myScalarValues.push_back(thePnt3.GetScalarValue()); + myStatus = Arc_Done; + } +} + +/*! + * Destructor + */ +VTKViewer_ArcBuilder::~VTKViewer_ArcBuilder() +{} + + +/* + * Add to the vtkUnstructuredGrid points from input list + */ +vtkUnstructuredGrid* VTKViewer_ArcBuilder::BuildGrid(const PntList& theList) const +{ + int aListsize = theList.size(); + vtkUnstructuredGrid* aGrid = NULL; + + if(aListsize != 0) { + aGrid = vtkUnstructuredGrid::New(); + vtkPoints* aPoints = vtkPoints::New(); + aPoints->SetNumberOfPoints(aListsize); + + aGrid->Allocate(aListsize); + + PntList::const_iterator it = theList.begin(); + int aCounter = 0; + for(;it != theList.end();it++) { + Pnt aPnt = *it; + aPoints->InsertPoint(aCounter, + aPnt.GetXYZ().X(), + aPnt.GetXYZ().Y(), + aPnt.GetXYZ().Z()); + vtkVertex* aVertex = vtkVertex::New(); + aVertex->GetPointIds()->SetId(0, aCounter); + aGrid->InsertNextCell(aVertex->GetCellType(), aVertex->GetPointIds()); + aCounter++; + aVertex->Delete(); + } + aGrid->SetPoints(aPoints); + aPoints->Delete(); + } + return aGrid; +} + + +vtkUnstructuredGrid* +VTKViewer_ArcBuilder::TransformGrid(vtkUnstructuredGrid* theGrid, + const Vec& theAxis, const double angle) const +{ + vtkTransform *aTransform = vtkTransform::New(); + aTransform->RotateWXYZ(angle, theAxis.GetXYZ().X(), theAxis.GetXYZ().Y(), theAxis.GetXYZ().Z()); + vtkTransformFilter* aTransformFilter = vtkTransformFilter::New(); + aTransformFilter->SetTransform(aTransform); + aTransformFilter->SetInput(theGrid); + aTransform->Delete(); + return aTransformFilter->GetUnstructuredGridOutput(); +} + + +void VTKViewer_ArcBuilder::GetAngle(const double theAngle){ + myAngle = theAngle; +} + +double InterpolateScalarValue(int index, int count, double firstValue, double middleValue, double lastValue) +{ + bool isFirstHalf = index <= count / 2; + double first = isFirstHalf ? firstValue : lastValue; + double last = isFirstHalf ? middleValue : middleValue; + double ratio = (double)index / (double)count; + double position = isFirstHalf ? ratio * 2 : ( 1 - ratio ) * 2; + double value = first + (last - first) * position; + return value; +} + +vtkUnstructuredGrid* VTKViewer_ArcBuilder::BuildArc(std::vector& theScalarValues){ + double x1 = myPnt1.GetXYZ().X(); double x2 = myPnt2.GetXYZ().X(); double x3 = myPnt3.GetXYZ().X(); + double y1 = myPnt1.GetXYZ().Y(); double y2 = myPnt2.GetXYZ().Y(); double y3 = myPnt3.GetXYZ().Y(); + double z = myPnt1.GetXYZ().Z(); //Points on plane || XOY + + + theScalarValues.clear(); + + double K1 = 0; + double K2 = 0; + bool okK1 = false, okK2 = false; + if ( fabs(x2 - x1) > DBL_MIN ) + K1 = (y2 - y1)/(x2 - x1), okK1 = true; + if ( fabs(x3 - x2) > DBL_MIN ) + K2 = (y3 - y2)/(x3 - x2), okK2 = true; + +#ifdef _MY_DEBUG_ + std::cout<<"K1 : "<< K1 < infinity + xCenter = (K1*(y1-y3) + (x1+x2))/2.0; + + else if( !okK1 ) //K1 --> infinity + xCenter = (K2*(y1-y3) - (x2+x3))/(-2.0); + + else + xCenter = (K1*K2*(y1-y3) + K2*(x1+x2) - K1*(x2+x3))/ (2.0*(K2-K1)); + + double yCenter; + + if ( K1 == 0 ) + yCenter = (-1/K2)*(xCenter - (x2+x3)/2.0) + (y2 + y3)/2.0; + else + yCenter = (-1/K1)*(xCenter - (x1+x2)/2.0) + (y1 + y2)/2.0; + +#ifdef _MY_DEBUG_ + double zCenter = z; + std::cout<<"xCenter : "< vtkMath::DoublePi()) + aTotalAngle = 2*vtkMath::DoublePi()-aTotalAngle; + */ + + double aTotalAngle = 0; + IncOrder aOrder = GetArcAngle(angle1,angle2,angle3,&aTotalAngle); + + vtkUnstructuredGrid *aC = NULL; + + if(aTotalAngle > aMaxAngle) { + int nbSteps = int(aTotalAngle/aMaxAngle)+1; + double anIncrementAngle = aTotalAngle/nbSteps; + double aCurrentAngle = angle1; + if(aOrder == VTKViewer_ArcBuilder::MINUS) + aCurrentAngle-=anIncrementAngle; + else + aCurrentAngle+=anIncrementAngle; +#ifdef _MY_DEBUG_ + cout<<"Total angle :"<& VTKViewer_ArcBuilder::GetScalarValues() +{ + return myScalarValues; +} + +VTKViewer_ArcBuilder::IncOrder VTKViewer_ArcBuilder::GetArcAngle( const double& P1, const double& P2, const double& P3,double* Ang){ + IncOrder aResult; + if(P1 < P2 && P2 < P3){ + *Ang = P3 - P1; + aResult = VTKViewer_ArcBuilder::PLUS; + } + else if((P1 < P3 && P3 < P2) || (P2 < P1 && P1 < P3)){ + *Ang = 2*vtkMath::DoublePi() - P3 + P1; + aResult = VTKViewer_ArcBuilder::MINUS; + } + else if((P2 < P3 && P3 < P1) || (P3 < P1 && P1 < P2)){ + *Ang = 2*vtkMath::DoublePi() - P1 + P3; + aResult = VTKViewer_ArcBuilder::PLUS; + } + else if(P3 < P2 && P2 < P1){ + *Ang = P1 - P3; + aResult = VTKViewer_ArcBuilder::MINUS; + } + return aResult; +} + +//------------------------------------------------------------------------ +Pnt CreatePnt(vtkCell* cell, vtkDataArray* scalars, vtkIdType index) +{ + vtkFloatingPointType coord[3]; + cell->GetPoints()->GetPoint(index, coord); + vtkIdType pointId = cell->GetPointId(index); + double scalarValue = scalars ? scalars->GetTuple1(pointId) : 0; + Pnt point(coord[0], coord[1], coord[2], scalarValue); + return point; +} + +//------------------------------------------------------------------------ +vtkIdType Build1DArc(vtkIdType cellId, vtkUnstructuredGrid* input, + vtkPolyData *output,vtkIdType *pts, + vtkFloatingPointType myMaxArcAngle){ + + vtkIdType aResult = -1; + vtkIdType *aNewPoints; + + vtkDataArray* inputScalars = input->GetPointData()->GetScalars(); + vtkDataArray* outputScalars = output->GetPointData()->GetScalars(); + + vtkCell* aCell = input->GetCell(cellId); + //Get All points from input cell + Pnt P0 = CreatePnt( aCell, inputScalars, 0 ); + Pnt P1 = CreatePnt( aCell, inputScalars, 1 ); + Pnt P2 = CreatePnt( aCell, inputScalars, 2 ); + + VTKViewer_ArcBuilder aBuilder(P0,P2,P1,myMaxArcAngle); + if (aBuilder.GetStatus() != VTKViewer_ArcBuilder::Arc_Done) { + return aResult; + } + else{ + vtkPoints* aPoints = aBuilder.GetPoints(); + std::vector aScalarValues = aBuilder.GetScalarValues(); + vtkIdType aNbPts = aPoints->GetNumberOfPoints(); + aNewPoints = new vtkIdType[aNbPts]; + vtkIdType curID; + vtkIdType aCellType = VTK_POLY_LINE; + + aNewPoints[0] = pts[0]; + for(vtkIdType idx = 1; idx < aNbPts-1;idx++) { + curID = output->GetPoints()->InsertNextPoint(aPoints->GetPoint(idx)); + if( outputScalars ) + outputScalars->InsertNextTuple1(aScalarValues[idx]); + aNewPoints[idx] = curID; + } + aNewPoints[aNbPts-1] = pts[1]; + + aResult = output->InsertNextCell(aCellType,aNbPts,aNewPoints); + return aResult; + } +} + +/*! + * Add all points from the input vector theCollection into thePoints. + * Array theIds - it is array with ids of added points. + */ +vtkIdType MergevtkPoints(const std::vector& theCollection, + const std::vector< std::vector >& theScalarCollection, + vtkPoints* thePoints, + std::map& thePntId2ScalarValue, + vtkIdType* &theIds){ + vtkIdType aNbPoints = 0; + vtkIdType anIdCounter = 0; + vtkIdType aNewPntId = 0; + + //Compute number of points + std::vector::const_iterator it = theCollection.begin(); + for(;it != theCollection.end();it++){ + vtkPoints* aPoints = *it; + if(aPoints) { + aNbPoints += aPoints->GetNumberOfPoints()-1; //Because we add all points except last + } + } + it = theCollection.begin(); + std::vector< std::vector >::const_iterator itScalar = theScalarCollection.begin(); + theIds = new vtkIdType[aNbPoints]; + // ..and add all points + for(;it != theCollection.end() && itScalar != theScalarCollection.end(); it++, itScalar++){ + vtkPoints* aPoints = *it; + std::vector aScalarValues = *itScalar; + + if(aPoints){ + for(vtkIdType idx = 0;idx < aPoints->GetNumberOfPoints()-1;idx++){ + aNewPntId = thePoints->InsertNextPoint(aPoints->GetPoint(idx)); + theIds[anIdCounter] = aNewPntId; + thePntId2ScalarValue[ aNewPntId ] = aScalarValues[idx]; + anIdCounter++; + } + } + } + return aNbPoints; +} diff --git a/src/VTKViewer/VTKViewer_ArcBuilder.h b/src/VTKViewer/VTKViewer_ArcBuilder.h new file mode 100644 index 000000000..c5f47a2c4 --- /dev/null +++ b/src/VTKViewer/VTKViewer_ArcBuilder.h @@ -0,0 +1,189 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_ARCBUILDER_H +#define VTKVIEWER_ARCBUILDER_H + +#include "VTKViewer.h" +#include +#include +#include + +class vtkCell; +class vtkDataArray; +class vtkPoints; +class vtkPolyData; +class vtkUnstructuredGrid; + +class Pnt; + +typedef std::list PntList; + +vtkIdType MergevtkPoints(const std::vector& theCollection, + const std::vector< std::vector >& theScalarCollection, + vtkPoints* thePoints, + std::map& thePntId2ScalarValue, + vtkIdType* &theIds); + +vtkIdType Build1DArc(vtkIdType cellId, + vtkUnstructuredGrid* input, + vtkPolyData *output, + vtkIdType *pts, + vtkFloatingPointType myMaxArcAngle); + +Pnt CreatePnt(vtkCell* cell, + vtkDataArray* scalars, + vtkIdType index); + +/*! + * Class for represenation coordinates X,Y,Z + */ +class XYZ{ + public: + + XYZ(); + XYZ(double , double , double); + ~XYZ(); + + double X()const {return x;} + double Y()const {return y;} + double Z()const {return z;} + + void SetX(const double X) { x=X; } + void SetY(const double Y) { y=Y; } + void SetZ(const double Z) { z=Z; } + + void Coord (double& X, double& Y, double& Z) const { X = x; Y = y; Z = z; } + + double Modulus () const; + + private: + double x; + double y; + double z; +}; + +/*! + Class for the representation point in the 3D space. +*/ +class Pnt{ + public: + Pnt(); + Pnt(double, double, double, double); + ~Pnt(); + + void Coord (double& X, double& Y, double& Z) const {coord.Coord(X,Y,Z);} + XYZ GetXYZ() const {return coord;} + double GetScalarValue() const { return scalarValue; } + + private: + XYZ coord; + double scalarValue; +}; + +/*! + Class for the representation Vector in the 3D space. +*/ +class Vec{ + public: + + Vec(const double Xv, const double Yv, const double Zv); + ~Vec(); + + XYZ GetXYZ() const {return coord;} + + double AngleBetween(const Vec & Other); + double AngleBetweenInGrad(const Vec & Other); + + Vec VectMultiplication(const Vec & Other) const; + + private: + XYZ coord; +}; + +/*! + Class for the representation plane in the 3D. +*/ +class Plane{ + + public: + Plane(const Pnt& thePnt1, const Pnt& thePnt2, const Pnt& thePnt3); + ~Plane(); + + double A() const {return myA;} + double B() const {return myB;} + double C() const {return myC;} + + Vec GetNormale() const; + + private: + void CalculatePlane(const Pnt& thePnt1, const Pnt& thePnt2, const Pnt& thePnt3); + + private: + double myA; + double myB; + double myC; +}; + + +class VTKViewer_ArcBuilder{ + public: + enum ArcStatus {Arc_Done=0, Arc_Error}; + VTKViewer_ArcBuilder(const Pnt& thePnt1, + const Pnt& thePnt2, + const Pnt& thePnt3, + double theAngle); + + ~VTKViewer_ArcBuilder(); + + Vec GetNormale(); + + ArcStatus GetStatus(){return myStatus;} + + void GetAngle(const double theAngle); + + static double GetPointAngleOnCircle(const double theXCenter, const double theYCenter, + const double theXPoint, const double theYPoint); + + vtkPoints* GetPoints(); + const std::vector& GetScalarValues(); + + private: + + enum IncOrder{MINUS=0,PLUS}; + + vtkUnstructuredGrid* BuildGrid(const PntList& theList) const; + vtkUnstructuredGrid* TransformGrid(vtkUnstructuredGrid* theGrid, const Vec& theAxis, const double angle) const; + vtkUnstructuredGrid* BuildArc(std::vector& theScalarValues); + IncOrder GetArcAngle( const double& P1, const double& P2, const double& P3, double* Ang); + + + + private: + Pnt myPnt1; + Pnt myPnt2; + Pnt myPnt3; + + double myAngle; + ArcStatus myStatus; + vtkPoints* myPoints; + std::vector myScalarValues; +}; + +#endif //VTKVIEWER_ARCBUILDER_H diff --git a/src/VTKViewer/VTKViewer_CellCenters.cxx b/src/VTKViewer/VTKViewer_CellCenters.cxx new file mode 100644 index 000000000..0aa717bd2 --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellCenters.cxx @@ -0,0 +1,184 @@ +// Copyright (C) 2007-2012 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 "VTKViewer_CellCenters.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +vtkCxxRevisionMacro(VTKViewer_CellCenters, "$Revision$"); +vtkStandardNewMacro(VTKViewer_CellCenters); + +/*! + * Class : VTKViewer_CellCenters + * Description : Filter computing geometrical centers of given cells + * (differs from native vtk filter by small fix for VTK_CONVEX_POINT_SET cells) + */ + +/*! + Constructor +*/ +VTKViewer_CellCenters::VTKViewer_CellCenters() +{ +} + +/*! + Redefined main method +*/ +int VTKViewer_CellCenters::RequestData( + vtkInformation *vtkNotUsed(request), + vtkInformationVector **inputVector, + vtkInformationVector *outputVector) +{ + // get the info objects + vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); + vtkInformation *outInfo = outputVector->GetInformationObject(0); + + // get the input and ouptut + vtkDataSet *input = vtkDataSet::SafeDownCast( + inInfo->Get(vtkDataObject::DATA_OBJECT())); + vtkPolyData *output = vtkPolyData::SafeDownCast( + outInfo->Get(vtkDataObject::DATA_OBJECT())); + + vtkIdType cellId, numCells; + int subId; + vtkCellData *inCD; + vtkPointData *outPD; + vtkPoints *newPts; + vtkCell *cell; + double x[3], pcoords[3]; + double *weights; + + inCD=input->GetCellData(); + outPD=output->GetPointData(); + + if ( (numCells = input->GetNumberOfCells()) < 1 ) + { + vtkWarningMacro(<<"No cells to generate center points for"); + return 1; + } + + newPts = vtkPoints::New(); + newPts->SetNumberOfPoints(numCells); + weights = new double [input->GetMaxCellSize()]; + + int abort=0; + vtkIdType progressInterval = numCells/10 + 1; + int hasEmptyCells = 0; + for (cellId=0; cellId < numCells && !abort; cellId++) + { + if ( ! (cellId % progressInterval) ) + { + vtkDebugMacro(<<"Processing #" << cellId); + this->UpdateProgress (0.5*cellId/numCells); + abort = this->GetAbortExecute(); + } + + cell = input->GetCell(cellId); + if (cell->GetCellType() != VTK_EMPTY_CELL) + { + // fix for VTK_CONVEX_POINT_SET cells + if (cell->GetCellType() == VTK_CONVEX_POINT_SET ) + { + x[0] = x[1] = x[2] = 0; + vtkPoints* aPoints = cell->GetPoints(); + int aNbPoints = aPoints->GetNumberOfPoints(); + for( int i = 0; i < aNbPoints; i++ ) + { + double aCoord[3]; + aPoints->GetPoint( i, aCoord ); + x[0] += aCoord[0]; + x[1] += aCoord[1]; + x[2] += aCoord[2]; + } + x[0] /= aNbPoints; + x[1] /= aNbPoints; + x[2] /= aNbPoints; + } + else + { + subId = cell->GetParametricCenter(pcoords); + cell->EvaluateLocation(subId, pcoords, x, weights); + } + newPts->SetPoint(cellId,x); + } + else + { + hasEmptyCells = 1; + } + } + + if ( this->VertexCells ) + { + vtkIdType pts[1]; + vtkCellData *outCD=output->GetCellData(); + vtkCellArray *verts = vtkCellArray::New(); + verts->Allocate(verts->EstimateSize(1,numCells),1); + + for (cellId=0; cellId < numCells && !abort; cellId++) + { + if ( ! (cellId % progressInterval) ) + { + vtkDebugMacro(<<"Processing #" << cellId); + this->UpdateProgress (0.5+0.5*cellId/numCells); + abort = this->GetAbortExecute(); + } + + cell = input->GetCell(cellId); + if (cell->GetCellType() != VTK_EMPTY_CELL) + { + pts[0] = cellId; + verts->InsertNextCell(1,pts); + } + } + + output->SetVerts(verts); + verts->Delete(); + if (!hasEmptyCells) + { + outCD->PassData(inCD); //only if verts are generated + } + } + + // clean up and update output + output->SetPoints(newPts); + newPts->Delete(); + + if (!hasEmptyCells) + { + outPD->PassData(inCD); //because number of points = number of cells + } + if (weights) + { + delete [] weights; + } + + return 1; +} diff --git a/src/VTKViewer/VTKViewer_CellCenters.h b/src/VTKViewer/VTKViewer_CellCenters.h new file mode 100644 index 000000000..6a37f1585 --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellCenters.h @@ -0,0 +1,60 @@ +// Copyright (C) 2007-2012 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 VTKVIEWER_CELLCENTERS_H +#define VTKVIEWER_CELLCENTERS_H + +#include "VTKViewer.h" + +#include + +#ifdef WIN32 +#pragma warning ( disable:4251 ) +#endif + +/*! + * Class : VTKViewer_CellCenters + * Description : Filter computing geometrical centers of given cells + * (differs from native vtk filter by small fix for VTK_CONVEX_POINT_SET cells) + */ +class VTKVIEWER_EXPORT VTKViewer_CellCenters : public vtkCellCenters +{ +public: + vtkTypeRevisionMacro(VTKViewer_CellCenters,vtkCellCenters); + + static VTKViewer_CellCenters *New(); + +protected: + VTKViewer_CellCenters(); + + virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); + +private: + VTKViewer_CellCenters(const VTKViewer_CellCenters&); // Not implemented. + void operator=(const VTKViewer_CellCenters&); // Not implemented. +}; + +#ifdef WIN32 +#pragma warning ( default:4251 ) +#endif + +#endif diff --git a/src/VTKViewer/VTKViewer_DataSetMapper.cxx b/src/VTKViewer/VTKViewer_DataSetMapper.cxx new file mode 100644 index 000000000..fad3d9179 --- /dev/null +++ b/src/VTKViewer/VTKViewer_DataSetMapper.cxx @@ -0,0 +1,111 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_DataSetMapper.h" +#include "VTKViewer_PolyDataMapper.h" + +#include +#include + +vtkCxxRevisionMacro(VTKViewer_DataSetMapper, "Revision$"); +vtkStandardNewMacro(VTKViewer_DataSetMapper); + +//---------------------------------------------------------------------------- +VTKViewer_DataSetMapper::VTKViewer_DataSetMapper() +{ + this->MarkerEnabled = false; + this->MarkerType = VTK::MT_NONE; + this->MarkerScale = VTK::MS_NONE; + this->MarkerId = 0; +} + +//---------------------------------------------------------------------------- +VTKViewer_DataSetMapper::~VTKViewer_DataSetMapper() +{ +} + +//---------------------------------------------------------------------------- +void VTKViewer_DataSetMapper::Render(vtkRenderer *ren, vtkActor *act) +{ + // just to create VTKViewer_PolyDataMapper instead of vtkPolyDataMapper + if( this->PolyDataMapper == NULL ) + { + vtkDataSetSurfaceFilter *gf = vtkDataSetSurfaceFilter::New(); + VTKViewer_PolyDataMapper *pm = VTKViewer_PolyDataMapper::New(); + pm->SetInput(gf->GetOutput()); + + pm->SetMarkerEnabled( this->MarkerEnabled ); + if( this->MarkerType != VTK::MT_USER ) + pm->SetMarkerStd( this->MarkerType, this->MarkerScale ); + else + pm->SetMarkerTexture( this->MarkerId, this->MarkerTexture ); + + this->GeometryExtractor = gf; + this->PolyDataMapper = pm; + } + vtkDataSetMapper::Render(ren, act); +} + +//----------------------------------------------------------------------------- +void VTKViewer_DataSetMapper::SetMarkerEnabled( bool theMarkerEnabled ) +{ + this->MarkerEnabled = theMarkerEnabled; + if( this->PolyDataMapper ) + if( VTKViewer_PolyDataMapper* aMapper = dynamic_cast( this->PolyDataMapper ) ) + aMapper->SetMarkerEnabled( theMarkerEnabled ); +} + +//---------------------------------------------------------------------------- +void VTKViewer_DataSetMapper::SetMarkerStd( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale ) +{ + this->MarkerType = theMarkerType; + this->MarkerScale = theMarkerScale; + if( this->PolyDataMapper ) + if( VTKViewer_PolyDataMapper* aMapper = dynamic_cast( this->PolyDataMapper ) ) + aMapper->SetMarkerStd( theMarkerType, theMarkerScale ); +} + +//---------------------------------------------------------------------------- +void VTKViewer_DataSetMapper::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMarkerTexture ) +{ + this->MarkerType = VTK::MT_USER; + this->MarkerId = theMarkerId; + this->MarkerTexture = theMarkerTexture; + if( this->PolyDataMapper ) + if( VTKViewer_PolyDataMapper* aMapper = dynamic_cast( this->PolyDataMapper ) ) + aMapper->SetMarkerTexture( theMarkerId, theMarkerTexture ); +} + +//----------------------------------------------------------------------------- +VTK::MarkerType VTKViewer_DataSetMapper::GetMarkerType() +{ + return this->MarkerType; +} + +//----------------------------------------------------------------------------- +VTK::MarkerScale VTKViewer_DataSetMapper::GetMarkerScale() +{ + return this->MarkerScale; +} + +//----------------------------------------------------------------------------- +int VTKViewer_DataSetMapper::GetMarkerTexture() +{ + return this->MarkerId; +} diff --git a/src/VTKViewer/VTKViewer_DataSetMapper.h b/src/VTKViewer/VTKViewer_DataSetMapper.h new file mode 100644 index 000000000..cbdfbbbff --- /dev/null +++ b/src/VTKViewer/VTKViewer_DataSetMapper.h @@ -0,0 +1,71 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKViewer_DATASETMAPPER_H +#define VTKViewer_DATASETMAPPER_H + +#include "VTKViewer.h" +#include "VTKViewer_MarkerDef.h" + +#include + +class VTKVIEWER_EXPORT VTKViewer_DataSetMapper : public vtkDataSetMapper +{ +public: + static VTKViewer_DataSetMapper *New(); + vtkTypeRevisionMacro(VTKViewer_DataSetMapper,vtkDataSetMapper); + + //! Set point marker enabled + void SetMarkerEnabled( bool ); + + //! Set standard point marker + void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale ); + + //! Set custom point marker + void SetMarkerTexture( int, VTK::MarkerTexture ); + + //! Get type of the point marker + VTK::MarkerType GetMarkerType(); + + //! Get scale of the point marker + VTK::MarkerScale GetMarkerScale(); + + //! Get texture identifier of the point marker + int GetMarkerTexture(); + + //! Implement superclass render method. + void Render(vtkRenderer *ren, vtkActor *act); + +protected: + VTKViewer_DataSetMapper(); + ~VTKViewer_DataSetMapper(); + +private: + VTKViewer_DataSetMapper(const VTKViewer_DataSetMapper&); // Not implemented. + void operator=(const VTKViewer_DataSetMapper&); // Not implemented. + +private: + bool MarkerEnabled; + VTK::MarkerType MarkerType; + VTK::MarkerScale MarkerScale; + int MarkerId; + VTK::MarkerTexture MarkerTexture; +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_FramedTextActor.cxx b/src/VTKViewer/VTKViewer_FramedTextActor.cxx new file mode 100644 index 000000000..328d7fd07 --- /dev/null +++ b/src/VTKViewer/VTKViewer_FramedTextActor.cxx @@ -0,0 +1,529 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_FramedTextActor.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define TEXT_MARGIN 4 +#define OFFSET_SPACING 2 + +//================================================================== +vtkCxxRevisionMacro(VTKViewer_FramedTextActor, "$Revision$"); +vtkStandardNewMacro(VTKViewer_FramedTextActor); + +//================================================================== +// function : VTKViewer_FramedTextActor +// purpose : +//================================================================== +VTKViewer_FramedTextActor::VTKViewer_FramedTextActor() +{ + PositionCoordinate->SetCoordinateSystemToNormalizedViewport(); + + myTransparency=0.; + myBar = vtkPolyData::New(); + myBarMapper = vtkPolyDataMapper2D::New(); + myBarMapper->SetInput(myBar); + myBarActor = vtkActor2D::New(); + myBarActor->SetMapper(myBarMapper); + myBarActor->GetProperty()->SetOpacity(1.-myTransparency); + myBarActor->GetProperty()->SetColor(.5, .5, .5); + + myTextProperty = vtkTextProperty::New(); + myTextProperty->SetFontSize(12); + myTextProperty->SetBold(0); + myTextProperty->SetItalic(0); + myTextProperty->SetShadow(1); + myTextProperty->SetFontFamilyToArial(); + + myTextMapper=vtkTextMapper::New(); + myTextMapper->SetInput(""); + myTextMapper->GetTextProperty()->ShallowCopy(myTextProperty); + myTextActor=vtkActor2D::New(); + myTextActor->SetMapper(myTextMapper); + + myBarActor->SetVisibility(1); + myTextActor->SetVisibility(1); + myBarActor->SetPickable(0); + myTextActor->SetPickable(0); + + myModePosition = BelowPoint; + myLayoutType = Vertical; + + for(int i=0; i<4; i++) { + myWorldPoint[i] = 0.; + } + myDistance=10.; + + myTextMargin = TEXT_MARGIN; + + myHorizontalOffset = 0; + myVerticalOffset = 0; + + myMoveFrameFlag = 0; +} + +//================================================================== +// function : ~ +// purpose : +//================================================================== +VTKViewer_FramedTextActor::~VTKViewer_FramedTextActor() +{ + myTextActor->Delete(); + myTextMapper->Delete(); + myTextProperty->Delete(); + myBarActor->Delete(); + myBarMapper->Delete(); + myBar->Delete(); +} + +//================================================================== +// function : SetVisibility +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetVisibility (int theVisibility) +{ + myBarActor->SetVisibility(theVisibility); + myTextActor->SetVisibility(theVisibility); +} + +//================================================================== +// function : GetVisibility +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetVisibility() +{ + return myBarActor->GetVisibility(); +} + +//================================================================== +// function : SetPickable +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetPickable (int thePickability) +{ + myBarActor->SetPickable(thePickability); + myTextActor->SetPickable(thePickability); +} + +//================================================================== +// function : GetPickable +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetPickable() +{ + return myBarActor->GetPickable(); +} + +//================================================================== +// function : GetSize +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::GetSize(vtkRenderer* theRenderer, int theSize[2]) const +{ + myTextMapper->GetSize(theRenderer, theSize); + theSize[0] = theSize[0] + 2 * GetTextMargin() + OFFSET_SPACING; + theSize[1] = theSize[1] + 2 * GetTextMargin() + OFFSET_SPACING; +} + +//================================================================== +// function : SetForegroundColor +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetForegroundColor(const vtkFloatingPointType r, + const vtkFloatingPointType g, + const vtkFloatingPointType b) +{ + myTextProperty->SetColor(r, g, b); + myTextMapper->GetTextProperty()->ShallowCopy(myTextProperty); + Modified(); +} + +//================================================================== +// function : GetForegroundColor +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::GetForegroundColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b) +{ + vtkFloatingPointType aColor[3]; + myTextProperty->GetColor(aColor); + r = aColor[0]; + g = aColor[1]; + b = aColor[2]; +} + +//================================================================== +// function : SetBackgroundColor +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetBackgroundColor(const vtkFloatingPointType r, + const vtkFloatingPointType g, + const vtkFloatingPointType b) +{ + myBarActor->GetProperty()->SetColor(r, g, b); + Modified(); +} + +//================================================================== +// function : GetBackgroundColor +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::GetBackgroundColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b) +{ + vtkFloatingPointType aColor[3]; + myBarActor->GetProperty()->GetColor(aColor); + r = aColor[0]; + g = aColor[1]; + b = aColor[2]; +} + +//================================================================== +// function : SetTransparency +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetTransparency(const vtkFloatingPointType theTransparency) +{ + if (theTransparency>=0. && theTransparency<=1.){ + myTransparency=theTransparency; + myBarActor->GetProperty()->SetOpacity(1.-myTransparency); + Modified(); + } +} + +//================================================================== +// function : GetTransparency +// purpose : +//================================================================== +vtkFloatingPointType VTKViewer_FramedTextActor::GetTransparency()const +{ + return myTransparency; +} + +//================================================================== +// function : SetTextMargin +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetTextMargin(const int theMargin) +{ + if( theMargin >= 0 ) { + myTextMargin = theMargin; + Modified(); + } +} + +//================================================================== +// function : GetTextMargin +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetTextMargin() const +{ + return myTextMargin; +} + +//================================================================== +// function : SetOffset +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetOffset(const int theOffset[2]) +{ + myHorizontalOffset = theOffset[0]; + myVerticalOffset = theOffset[1]; + Modified(); +} + +//================================================================== +// function : SetText +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetText(const char* theText) +{ + // remove whitespaces from from the start and the end + // additionally, consider a case of multi-string text + QString aString(theText); + + QStringList aTrimmedStringList; + QStringList aStringList = aString.split("\n"); + QStringListIterator anIter(aStringList); + while(anIter.hasNext()) + aTrimmedStringList.append(anIter.next().trimmed()); + + myTextMapper->SetInput(aTrimmedStringList.join("\n").toLatin1().constData()); + Modified(); +} + +//================================================================== +// function : GetText +// purpose : +//================================================================== +char* VTKViewer_FramedTextActor::GetText() +{ + return myTextMapper->GetInput(); +} + +//================================================================== +// function : SetModePosition +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetModePosition(const int theMode) +{ + myModePosition = theMode; + Modified(); +} + +//================================================================== +// function : GetModePosition +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetModePosition()const +{ + return myModePosition; +} + +//================================================================== +// function : SetLayoutType +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetLayoutType(const int theType) +{ + myLayoutType = theType; + Modified(); +} + +//================================================================== +// function : GetLayoutType +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetLayoutType() const +{ + return myLayoutType; +} + +//================================================================== +// function : SetWorldPoint +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetWorldPoint(const vtkFloatingPointType theWorldPoint[4]) +{ + for(int i = 0; i<4; ++i) { + myWorldPoint[i] = theWorldPoint[i]; + } + Modified(); +} + +//================================================================== +// function : GetWorldPoint +// purpose : +//================================================================== +const vtkFloatingPointType* VTKViewer_FramedTextActor::GetWorldPoint()const +{ + return myWorldPoint; +} + +//================================================================== +// function : SetDistance +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::SetDistance(const vtkFloatingPointType theDistance) +{ + myDistance=theDistance; +} + +//================================================================== +// function : GetDistance +// purpose : +//================================================================== +vtkFloatingPointType VTKViewer_FramedTextActor::GetDistance()const +{ + return myDistance; +} + +//================================================================== +// function : SetMoveFrameFlag +// purpose : If moveFrameFlag is true, then frame with text is moved +// under world point +//================================================================== +void VTKViewer_FramedTextActor::SetMoveFrameFlag(const int theMoveFrameFlag) +{ + if(myMoveFrameFlag != theMoveFrameFlag) { + myMoveFrameFlag = theMoveFrameFlag; + Modified(); + } +} + +//================================================================== +// function : GetDistance +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::GetMoveFrameFlag() const +{ + return myMoveFrameFlag; +} + + +//================================================================== +// function : ReleaseGraphicsResources +// purpose : +//================================================================== +void VTKViewer_FramedTextActor::ReleaseGraphicsResources(vtkWindow *win) +{ + myTextActor->ReleaseGraphicsResources(win); + myBarActor->ReleaseGraphicsResources(win); +} + +//================================================================== +// function : RenderOverlay +// purpose : +//================================================================== +int VTKViewer_FramedTextActor::RenderOverlay(vtkViewport *viewport) +{ + int renderedSomething = 0; + myBarActor->RenderOverlay(viewport); + renderedSomething +=myTextActor->RenderOverlay(viewport); + return renderedSomething; +} + +//================================================================== +// function : RenderOpaqueGeometry +// purpose : +//================================================================== +int +VTKViewer_FramedTextActor +::RenderOpaqueGeometry(vtkViewport *theViewport) +{ + int anIsRenderedSomething = 0; + + int* aViewportSize = theViewport->GetSize(); + int aViewPortWidth = aViewportSize[0]; + int aViewPortHeight = aViewportSize[1]; + if(aViewPortWidth == 1 || aViewPortHeight == 1) + return anIsRenderedSomething; + + if(!myTextMapper->GetInput()) + return anIsRenderedSomething; + + myBar->Initialize(); + + int aNbPoints = 4; + vtkPoints *aPoints = vtkPoints::New(); + aPoints->SetNumberOfPoints(aNbPoints); + myBar->SetPoints(aPoints); + aPoints->Delete(); + + vtkCellArray *aPolys = vtkCellArray::New(); + aPolys->Allocate(aPolys->EstimateSize(1,4)); + vtkIdType aPointsIds[4] = {0, 1, 3, 2}; + aPolys->InsertNextCell(4,aPointsIds); + myBar->SetPolys(aPolys); + aPolys->Delete(); + + int aTextSize[2]; + myTextMapper->GetSize(theViewport, aTextSize); + int aBarWidth = aTextSize[0]; + int aBarHeight = aTextSize[1]; + + int aTextMargin = GetTextMargin(); + + vtkFloatingPointType xMin = 0.0; + vtkFloatingPointType xMax = 0.0; + vtkFloatingPointType yMin = -aBarHeight/2 - aTextMargin; + vtkFloatingPointType yMax = aBarHeight/2 + aTextMargin; + + int aHorizontalOffset = GetLayoutType() == Horizontal ? myHorizontalOffset : 0; + int aVerticalOffset = GetLayoutType() == Vertical ? myVerticalOffset : 0; + + if( myModePosition == BelowPoint ) + { + theViewport->SetWorldPoint(myWorldPoint); + theViewport->WorldToDisplay(); + + vtkFloatingPointType aSelectionPoint[3]; + theViewport->GetDisplayPoint(aSelectionPoint); + vtkFloatingPointType u = aSelectionPoint[0]; + vtkFloatingPointType v = aSelectionPoint[1] - myDistance; + if(myMoveFrameFlag) + v -= aBarHeight/2.; + theViewport->ViewportToNormalizedViewport(u, v); + PositionCoordinate->SetValue(u, v); + + myTextProperty->SetJustificationToCentered(); + + xMin = -aBarWidth/2 - aTextMargin; + xMax = aBarWidth/2 + aTextMargin; + } + else // except BelowPoint, only TopLeft and TopRight modes are supported at this moment + { + vtkFloatingPointType x = 0, xOffset = aHorizontalOffset + aTextMargin + OFFSET_SPACING; + vtkFloatingPointType y = 0, yOffset = aVerticalOffset + aTextMargin + OFFSET_SPACING; + + if( myModePosition == TopLeft ) + { + x = xOffset; + y = aViewPortHeight - yOffset - aBarHeight/2; + myTextProperty->SetJustificationToLeft(); + + xMin = - aTextMargin; + xMax = aBarWidth + aTextMargin; + } + else if( myModePosition == TopRight ) + { + x = aViewPortWidth - xOffset; + y = aViewPortHeight - yOffset - aBarHeight/2; + myTextProperty->SetJustificationToRight(); + + xMin = -aBarWidth - aTextMargin; + xMax = aTextMargin; + } + + PositionCoordinate->SetValue(x / (vtkFloatingPointType)aViewPortWidth, + y / (vtkFloatingPointType)aViewPortHeight); + } + + aPoints->SetPoint(0, xMin, yMax, 0.0); + aPoints->SetPoint(1, xMin, yMin, 0.0); + aPoints->SetPoint(2, xMax, yMax, 0.0); + aPoints->SetPoint(3, xMax, yMin, 0.0); + + myTextProperty->SetVerticalJustificationToCentered(); + + myTextMapper->GetTextProperty()->ShallowCopy(myTextProperty); + myBarActor ->GetPositionCoordinate()->SetReferenceCoordinate(PositionCoordinate); + myTextActor->GetPositionCoordinate()->SetReferenceCoordinate(PositionCoordinate); + + myBuildTime.Modified(); + + return anIsRenderedSomething; +} diff --git a/src/VTKViewer/VTKViewer_FramedTextActor.h b/src/VTKViewer/VTKViewer_FramedTextActor.h new file mode 100644 index 000000000..0a3e95be3 --- /dev/null +++ b/src/VTKViewer/VTKViewer_FramedTextActor.h @@ -0,0 +1,131 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_FRAMEDTEXTACTOR_H +#define VTKVIEWER_FRAMEDTEXTACTOR_H + +#include "VTKViewer.h" + +#include + +class vtkPolyData; +class vtkPolyDataMapper2D; +class vtkRenderer; +class vtkTimeStamp; +class vtkTextMapper; +class vtkTextProperty; +class vtkViewport; +class vtkWindow; + +class VTKVIEWER_EXPORT VTKViewer_FramedTextActor : public vtkActor2D +{ +public: + enum ModePosition { BelowPoint = 0, TopLeft, TopRight, BottomLeft, BottomRight }; + enum LayoutType { Vertical = 0, Horizontal }; + +public: + vtkTypeRevisionMacro(VTKViewer_FramedTextActor,vtkActor2D); + static VTKViewer_FramedTextActor *New(); + + virtual int RenderOpaqueGeometry(vtkViewport*); + virtual int RenderTranslucentGeometry(vtkViewport*) { return 0; } + virtual int RenderOverlay(vtkViewport*); + virtual void ReleaseGraphicsResources(vtkWindow*); + + virtual void SetVisibility(int); + virtual int GetVisibility(); + virtual void SetPickable(int); + virtual int GetPickable(); + + virtual void GetSize(vtkRenderer* theRenderer, int theSize[2]) const; + + void SetText(const char* theText); + char* GetText(); + + void SetModePosition(const int theMode); + int GetModePosition() const; + + void SetLayoutType(const int theType); + int GetLayoutType() const; + + void SetWorldPoint(const vtkFloatingPointType theWorldPoint[4]); + const vtkFloatingPointType* GetWorldPoint() const; + + void SetDistance(const vtkFloatingPointType theDistance); + vtkFloatingPointType GetDistance() const; + + void SetMoveFrameFlag(const int flag); + int GetMoveFrameFlag() const; + + void SetForegroundColor(const vtkFloatingPointType r, + const vtkFloatingPointType g, + const vtkFloatingPointType b); + void GetForegroundColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b); + + void SetBackgroundColor(const vtkFloatingPointType r, + const vtkFloatingPointType g, + const vtkFloatingPointType b); + void GetBackgroundColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b); + + void SetTransparency(const vtkFloatingPointType theTransparency); + vtkFloatingPointType GetTransparency() const; + + void SetTextMargin(const int theMargin); + int GetTextMargin() const; + + void SetOffset(const int theOffset[2]); + +protected: + VTKViewer_FramedTextActor(); + ~VTKViewer_FramedTextActor(); + +protected: + vtkPolyData* myBar; + vtkPolyDataMapper2D* myBarMapper; + vtkActor2D* myBarActor; + + vtkTextProperty* myTextProperty; + vtkTextMapper* myTextMapper; + vtkActor2D* myTextActor; + + vtkTimeStamp myBuildTime; + + int myModePosition; + int myLayoutType; + int myMoveFrameFlag; + + vtkFloatingPointType myWorldPoint[4]; + vtkFloatingPointType myDistance; + vtkFloatingPointType myTransparency; + + int myTextMargin; + + int myHorizontalOffset; + int myVerticalOffset; + +private: + VTKViewer_FramedTextActor(const VTKViewer_FramedTextActor&); // Not implemented. + void operator=(const VTKViewer_FramedTextActor&); // Not implemented. +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_MarkerDef.h b/src/VTKViewer/VTKViewer_MarkerDef.h new file mode 100644 index 000000000..1cff56cab --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerDef.h @@ -0,0 +1,65 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_MARKERDEF_H +#define VTKVIEWER_MARKERDEF_H + +#include +#include +#include + +namespace VTK +{ + //! Type of standard marker for advanced rendering of vtk points + typedef int MarkerType; + const MarkerType MT_NONE = 0; + const MarkerType MT_POINT = 1; + const MarkerType MT_PLUS = 2; + const MarkerType MT_STAR = 3; + const MarkerType MT_O = 4; + const MarkerType MT_X = 5; + const MarkerType MT_O_POINT = 6; + const MarkerType MT_O_PLUS = 7; + const MarkerType MT_O_STAR = 8; + const MarkerType MT_O_X = 9; + const MarkerType MT_USER = 10; + + //! Scale of standard marker for advanced rendering of vtk points + typedef int MarkerScale; + const MarkerScale MS_NONE = 0; + const MarkerScale MS_10 = 1; + const MarkerScale MS_15 = 2; + const MarkerScale MS_20 = 3; + const MarkerScale MS_25 = 4; + const MarkerScale MS_30 = 5; + const MarkerScale MS_35 = 6; + const MarkerScale MS_40 = 7; + const MarkerScale MS_45 = 8; + const MarkerScale MS_50 = 9; + const MarkerScale MS_55 = 10; + const MarkerScale MS_60 = 11; + const MarkerScale MS_65 = 12; + const MarkerScale MS_70 = 13; + + typedef std::list MarkerTexture; + typedef std::pair MarkerData; + typedef std::map MarkerMap; +} + +#endif diff --git a/src/VTKViewer/VTKViewer_MarkerDlg.cxx b/src/VTKViewer/VTKViewer_MarkerDlg.cxx new file mode 100644 index 000000000..6f6d9ea57 --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerDlg.cxx @@ -0,0 +1,142 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_MarkerDlg.h" +#include "VTKViewer_MarkerWidget.h" + +#include +#include +#include +#include + +#include +#include +#include + +/*! + * Class : VTKViewer_MarkerDlg + * Description : Dialog for specifying point marker parameters + */ + +/*! + Constructor +*/ +VTKViewer_MarkerDlg::VTKViewer_MarkerDlg( QWidget* theParent ) +: QtxDialog( theParent, true, true ) +{ + setWindowTitle( tr( "SET_MARKER_TLT" ) ); + + myMarkerWidget = new VTKViewer_MarkerWidget( mainFrame() ); + + QBoxLayout* aTopLayout = new QHBoxLayout( mainFrame() ); + aTopLayout->setSpacing( 0 ); + aTopLayout->setMargin( 0 ); + aTopLayout->addWidget( myMarkerWidget ); + + connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) ); +} + +/*! + Destructor +*/ +VTKViewer_MarkerDlg::~VTKViewer_MarkerDlg() +{ +} + +void VTKViewer_MarkerDlg::setHelpData( const QString& theModuleName, + const QString& theHelpFileName ) +{ + myModuleName = theModuleName; + myHelpFileName = theHelpFileName; +} + +void VTKViewer_MarkerDlg::keyPressEvent( QKeyEvent* e ) +{ + QtxDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + + if ( e->key() == Qt::Key_F1 ) { + e->accept(); + onHelp(); + } +} + +void VTKViewer_MarkerDlg::onHelp() +{ + if( myModuleName.isNull() || myHelpFileName.isNull() ) + return; + + SUIT_Application* app = SUIT_Session::session()->activeApplication(); + if (app) + app->onHelpContextModule(myModuleName, myHelpFileName); + 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(myHelpFileName)); + } +} + +void VTKViewer_MarkerDlg::setCustomMarkerMap( VTK::MarkerMap theMarkerMap ) +{ + myMarkerWidget->setCustomMarkerMap( theMarkerMap ); +} + +VTK::MarkerMap VTKViewer_MarkerDlg::getCustomMarkerMap() +{ + return myMarkerWidget->getCustomMarkerMap(); +} + +void VTKViewer_MarkerDlg::setStandardMarker( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale ) +{ + myMarkerWidget->setStandardMarker( theMarkerType, theMarkerScale ); +} + +void VTKViewer_MarkerDlg::setCustomMarker( int theId ) +{ + myMarkerWidget->setCustomMarker( theId ); +} + +VTK::MarkerType VTKViewer_MarkerDlg::getMarkerType() const +{ + return myMarkerWidget->getMarkerType(); +} + +VTK::MarkerScale VTKViewer_MarkerDlg::getStandardMarkerScale() const +{ + return myMarkerWidget->getStandardMarkerScale(); +} + +int VTKViewer_MarkerDlg::getCustomMarkerID() const +{ + return myMarkerWidget->getCustomMarkerID(); +} + +void VTKViewer_MarkerDlg::addExtraStdMarker( VTK::MarkerType theMarkerType, const QPixmap& thePixmap ) +{ + myMarkerWidget->addExtraStdMarker( theMarkerType, thePixmap ); +} diff --git a/src/VTKViewer/VTKViewer_MarkerDlg.h b/src/VTKViewer/VTKViewer_MarkerDlg.h new file mode 100644 index 000000000..59bf03a68 --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerDlg.h @@ -0,0 +1,69 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_MARKERDLG_H +#define VTKVIEWER_MARKERDLG_H + +#include "VTKViewer.h" +#include "VTKViewer_MarkerDef.h" + +#include + +class VTKViewer_MarkerWidget; + +/*! + * Class : VTKViewer_MarkerDlg + * Description : Dialog for specifying point marker parameters + */ +class VTKVIEWER_EXPORT VTKViewer_MarkerDlg : public QtxDialog +{ + Q_OBJECT + +public: + VTKViewer_MarkerDlg( QWidget* = 0 ); + virtual ~VTKViewer_MarkerDlg(); + + void setHelpData( const QString& theModuleName, + const QString& theHelpFileName ); + + void setCustomMarkerMap( VTK::MarkerMap ); + VTK::MarkerMap getCustomMarkerMap(); + + void setStandardMarker( VTK::MarkerType, VTK::MarkerScale ); + void setCustomMarker( int ); + VTK::MarkerType getMarkerType() const; + VTK::MarkerScale getStandardMarkerScale() const; + int getCustomMarkerID() const; + + void addExtraStdMarker( VTK::MarkerType, const QPixmap& ); + +protected: + void keyPressEvent( QKeyEvent* ); + +private slots: + void onHelp(); + +private: + VTKViewer_MarkerWidget* myMarkerWidget; + + QString myModuleName; + QString myHelpFileName; +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_MarkerUtils.cxx b/src/VTKViewer/VTKViewer_MarkerUtils.cxx new file mode 100755 index 000000000..8b68004aa --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerUtils.cxx @@ -0,0 +1,159 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_MarkerUtils.h" + +// VTK Includes +#include + +// QT Includes +#include +#include +#include +#include + +namespace VTK +{ + bool LoadTextureData( const QString& theFileName, + VTK::MarkerScale theMarkerScale, + VTK::MarkerTexture& theMarkerTexture ) + { + theMarkerTexture.clear(); + + QFile aFile( theFileName ); + if( !aFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + return false; + + bool ok; + int aWidth = 0, aHeight = 0; + + int aTextureIndex = theMarkerScale == VTK::MS_NONE ? 0 : (int)theMarkerScale-1; + int aCurrentTexture = 0; + + QTextStream aTextStream( &aFile ); + while( !aTextStream.atEnd() ) + { + QString aLine = aTextStream.readLine(); + if( aLine.isEmpty() ) + { + aCurrentTexture++; + continue; + } + + if( aCurrentTexture != aTextureIndex ) + continue; + + int aLineSize = aLine.size(); + for( int i = 0; i < aLineSize; i++ ) + { + ok = false; + unsigned int aPixel = QString( aLine.at( i ) ).toUInt( &ok ); + if( ok ) + theMarkerTexture.push_back( aPixel ); + } + if( aWidth == 0 ) + aWidth = aLineSize; + aHeight++; + } + + if( theMarkerTexture.size() != aWidth * aHeight ) + return false; + + theMarkerTexture.push_front( aWidth ); + theMarkerTexture.push_front( aHeight ); + return true; + } + + vtkSmartPointer MakeVTKImage( const VTK::MarkerTexture& theMarkerTexture, + bool theWhiteForeground ) + { + VTK::MarkerTexture::const_iterator anIter = theMarkerTexture.begin(); + + int aWidth = *anIter++; + int aHeight = *anIter++; + + vtkSmartPointer anImageData = vtkImageData::New(); + anImageData->Delete(); + + anImageData->SetExtent( 0, aWidth-1, 0, aHeight-1, 0, 0 ); + anImageData->SetScalarTypeToUnsignedChar(); + anImageData->SetNumberOfScalarComponents( 4 ); + anImageData->AllocateScalars(); + + unsigned char* aDataPtr = (unsigned char*)anImageData->GetScalarPointer(); + + int anId = 0; + int aSize = aWidth * aHeight * 4; + int aCoef = theWhiteForeground ? 1 : 0; + while( anId < aSize ) + { + int aValue = (*anIter++) * 255; + aDataPtr[ anId++ ] = aValue * aCoef; + aDataPtr[ anId++ ] = aValue * aCoef; + aDataPtr[ anId++ ] = aValue * aCoef; + aDataPtr[ anId++ ] = aValue; + } + anImageData->Update(); + + return anImageData; + } + + QImage ConvertToQImage( vtkImageData* theImageData ) + { + if( theImageData->GetScalarType() != VTK_UNSIGNED_CHAR ) + return QImage(); + + int extent[6]; + theImageData->GetExtent( extent ); + int width = extent[1] - extent[0] + 1; + int height = extent[3] - extent[2] + 1; + + QImage anImage(width, height, QImage::Format_ARGB32); + for( int i = 0; i < height; i++ ) + { + QRgb* bits = reinterpret_cast( anImage.scanLine(i) ); + unsigned char* row = static_cast( + theImageData->GetScalarPointer( extent[0], extent[2] + height - i - 1, extent[4] ) ); + for( int j = 0; j < width; j++ ) + { + unsigned char* data = &row[ j*4 ]; + bits[j] = qRgba( data[0], data[1], data[2], data[3] ); + } + } + return anImage; + } + + int GetUniqueId( const VTK::MarkerMap& theMarkerMap ) + { + int anId = 0; + while( anId++ < 100 ) { + bool anOk = true; + VTK::MarkerMap::const_iterator anIter = theMarkerMap.begin(); + for( ; anIter != theMarkerMap.end(); anIter++ ) { + if( anId == anIter->first ) { + anOk = false; + continue; + } + } + if( anOk ) + return anId; + } + return theMarkerMap.size() + 1; + } +} diff --git a/src/VTKViewer/VTKViewer_MarkerUtils.h b/src/VTKViewer/VTKViewer_MarkerUtils.h new file mode 100755 index 000000000..2b4521d70 --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerUtils.h @@ -0,0 +1,48 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_MARKERUTILS_H +#define VTKVIEWER_MARKERUTILS_H + +#include "VTKViewer.h" +#include "VTKViewer_MarkerDef.h" + +// VTK Includes +#include + +class vtkImageData; + +class QImage; +class QString; + +namespace VTK +{ + VTKVIEWER_EXPORT bool LoadTextureData( const QString& theFileName, + VTK::MarkerScale theMarkerScale, + VTK::MarkerTexture& theTextureData ); + + VTKVIEWER_EXPORT vtkSmartPointer MakeVTKImage( const VTK::MarkerTexture& theTextureData, + bool theWhiteForeground = true ); + + VTKVIEWER_EXPORT QImage ConvertToQImage( vtkImageData* theImageData ); + + VTKVIEWER_EXPORT int GetUniqueId( const VTK::MarkerMap& theMarkerMap ); +} + +#endif diff --git a/src/VTKViewer/VTKViewer_MarkerWidget.cxx b/src/VTKViewer/VTKViewer_MarkerWidget.cxx new file mode 100644 index 000000000..cc0f0d035 --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerWidget.cxx @@ -0,0 +1,273 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_MarkerWidget.h" +#include "VTKViewer_MarkerUtils.h" + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#define MARGIN 9 +#define SPACING 6 + +/*! + * Class : VTKViewer_MarkerWidget + * Description : Widget for specifying point marker parameters + */ + +/*! + Constructor +*/ +VTKViewer_MarkerWidget::VTKViewer_MarkerWidget( QWidget* theParent ) +: QWidget( theParent ) +{ + QRadioButton* aStandardTypeRB = new QRadioButton( tr( "STANDARD_MARKER" ), this ); + QRadioButton* aCustomTypeRB = new QRadioButton( tr( "CUSTOM_MARKER" ), this ); + myTypeGroup = new QButtonGroup( this ); + myTypeGroup->addButton( aStandardTypeRB, 0 ); + myTypeGroup->addButton( aCustomTypeRB, 1 ); + + QHBoxLayout* aRadioLayout = new QHBoxLayout; + aRadioLayout->setMargin( 0 ); + aRadioLayout->setSpacing( SPACING ); + aRadioLayout->addWidget( aStandardTypeRB ); + aRadioLayout->addWidget( aCustomTypeRB ); + + // --- + + myWGStack = new QStackedWidget( this ); + myWGStack->setFrameStyle( QFrame::Box | QFrame::Sunken ); + + // --- + + QWidget* aStdWidget = new QWidget( myWGStack ); + + QLabel* aTypeLab = new QLabel( tr( "TYPE" ), aStdWidget ); + QLabel* aScaleLab = new QLabel( tr( "SCALE" ), aStdWidget ); + + myStdTypeCombo = new QtxComboBox( aStdWidget ); + myStdScaleCombo = new QtxComboBox( aStdWidget ); + + QGridLayout* aStdLayout = new QGridLayout; + aStdLayout->setMargin( MARGIN ); + aStdLayout->setSpacing( SPACING ); + aStdLayout->addWidget( aTypeLab, 0, 0 ); + aStdLayout->addWidget( myStdTypeCombo, 0, 1 ); + aStdLayout->addWidget( aScaleLab, 1, 0 ); + aStdLayout->addWidget( myStdScaleCombo, 1, 1 ); + aStdWidget->setLayout( aStdLayout ); + + // --- + + QWidget* aCustomWidget = new QWidget( myWGStack ); + + QLabel* aCustomLab = new QLabel( tr( "CUSTOM" ), aCustomWidget ); + myCustomTypeCombo = new QtxComboBox( aCustomWidget ); + QPushButton* aBrowseBtn = new QPushButton( tr( "BROWSE" ), aCustomWidget ); + + QGridLayout* aCustomLayout = new QGridLayout; + aCustomLayout->setMargin( MARGIN ); + aCustomLayout->setSpacing( SPACING ); + aCustomLayout->addWidget( aCustomLab, 0, 0 ); + aCustomLayout->addWidget( myCustomTypeCombo, 0, 1 ); + aCustomLayout->addWidget( aBrowseBtn, 0, 2 ); + aCustomLayout->setRowStretch( 1, 5 ); + aCustomWidget->setLayout( aCustomLayout ); + + // --- + + myWGStack->insertWidget( 0, aStdWidget ); + myWGStack->insertWidget( 1, aCustomWidget ); + + // --- + + QVBoxLayout* aTopLayout = new QVBoxLayout; + aTopLayout->setMargin( MARGIN ); + aTopLayout->setSpacing( SPACING ); + aTopLayout->addLayout( aRadioLayout ); + aTopLayout->addWidget( myWGStack ); + setLayout( aTopLayout ); + + // --- + + connect( myTypeGroup, SIGNAL( buttonClicked( int ) ), myWGStack, SLOT( setCurrentIndex( int ) ) ); + connect( myStdTypeCombo, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onStdMarkerChanged( int ) ) ); + connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); + + // --- + + aStandardTypeRB->setChecked( true ); + init(); +} + +/*! + Destructor +*/ +VTKViewer_MarkerWidget::~VTKViewer_MarkerWidget() +{ +} + +void VTKViewer_MarkerWidget::setCustomMarkerMap( VTK::MarkerMap theMarkerMap ) +{ + myCustomMarkerMap = theMarkerMap; + + VTK::MarkerMap::const_iterator it = theMarkerMap.begin(), itEnd = theMarkerMap.end(); + for( ; it != itEnd; it++ ) + { + int anId = it->first; + VTK::MarkerData aMarkerData = it->second; + QPixmap aPixmap = markerFromData( aMarkerData ); + if( !aPixmap.isNull() ) + { + myCustomTypeCombo->addItem( aPixmap, QString::number( anId ) ); + myCustomTypeCombo->setId( myCustomTypeCombo->count()-1, anId ); + } + } +} + +VTK::MarkerMap VTKViewer_MarkerWidget::getCustomMarkerMap() +{ + return myCustomMarkerMap; +} + +void VTKViewer_MarkerWidget::setStandardMarker( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale ) +{ + if ( ( theMarkerType > VTK::MT_NONE && theMarkerType < VTK::MT_USER ) || + myExtraMarkerList.contains( theMarkerType ) ) { + myTypeGroup->button( 0 )->setChecked( true ); + myWGStack->setCurrentIndex( 0 ); + myStdTypeCombo->setCurrentId( theMarkerType ); + int aMarkerScale = std::max( (int)VTK::MS_10, std::min( (int)VTK::MS_70, (int)theMarkerScale ) ); + myStdScaleCombo->setCurrentId( aMarkerScale ); + } +} + +void VTKViewer_MarkerWidget::setCustomMarker( int theId ) +{ + if ( theId > 0 ) { + myTypeGroup->button( 1 )->setChecked( true ); + myWGStack->setCurrentIndex( 1 ); + addTexture( theId ); + myCustomTypeCombo->setCurrentId( theId ); + } +} + +VTK::MarkerType VTKViewer_MarkerWidget::getMarkerType() const +{ + return myWGStack->currentIndex() == 0 ? (VTK::MarkerType)myStdTypeCombo->currentId() : VTK::MT_USER; +} + +VTK::MarkerScale VTKViewer_MarkerWidget::getStandardMarkerScale() const +{ + return myWGStack->currentIndex() == 0 ? (VTK::MarkerScale)myStdScaleCombo->currentId() : VTK::MS_NONE; +} + +int VTKViewer_MarkerWidget::getCustomMarkerID() const +{ + return myWGStack->currentIndex() == 1 ? myCustomTypeCombo->currentId() : 0; +} + +void VTKViewer_MarkerWidget::addExtraStdMarker( VTK::MarkerType theMarkerType, const QPixmap& thePixmap ) +{ + if( myExtraMarkerList.isEmpty() ) + myStdTypeCombo->insertSeparator( myStdTypeCombo->count() ); + myStdTypeCombo->addItem( thePixmap, QString() ); + myStdTypeCombo->setId( myStdTypeCombo->count()-1, theMarkerType ); + + myExtraMarkerList.append( theMarkerType ); +} + +void VTKViewer_MarkerWidget::init() +{ + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + + for ( int i = VTK::MT_POINT; i < VTK::MT_USER; i++ ) { + QString icoFile = QString( "ICON_VERTEX_MARKER_%1" ).arg( i ); + QPixmap pixmap = resMgr->loadPixmap( "VTKViewer", tr( qPrintable( icoFile ) ) ); + myStdTypeCombo->addItem( pixmap, QString() ); + myStdTypeCombo->setId( myStdTypeCombo->count()-1, i ); + } + + for ( int i = VTK::MS_10; i <= VTK::MS_70; i++ ) { + myStdScaleCombo->addItem( QString::number( (i-1)*0.5 + 1.0 ) ); + myStdScaleCombo->setId( myStdScaleCombo->count()-1, i ); + } +} + +void VTKViewer_MarkerWidget::addTexture( int id, bool select ) +{ + if ( id > 0 && myCustomTypeCombo->index( id ) == -1 && + myCustomMarkerMap.find( id ) != myCustomMarkerMap.end() ) { + VTK::MarkerData aMarkerData = myCustomMarkerMap[ id ]; + QPixmap pixmap = markerFromData( aMarkerData ); + if( !pixmap.isNull() ) { + myCustomTypeCombo->addItem( pixmap, QString::number( id ) ); + myCustomTypeCombo->setId( myCustomTypeCombo->count()-1, id ); + if ( select ) myCustomTypeCombo->setCurrentId( id ); + } + } +} + +QPixmap VTKViewer_MarkerWidget::markerFromData( const VTK::MarkerData& theMarkerData ) +{ + const VTK::MarkerTexture& aMarkerTexture = theMarkerData.second; + vtkSmartPointer anImageData = VTK::MakeVTKImage( aMarkerTexture, false ); + + QImage anImage = VTK::ConvertToQImage( anImageData.GetPointer() ); + if( anImage.isNull() ) + return QPixmap(); + + return QPixmap::fromImage( anImage ); +} + +void VTKViewer_MarkerWidget::onStdMarkerChanged( int index ) +{ + VTK::MarkerType aMarkerType = (VTK::MarkerType)myStdTypeCombo->id( index ); + bool anIsExtraMarker = myExtraMarkerList.contains( aMarkerType ); + myStdScaleCombo->setEnabled( !anIsExtraMarker ); +} + +void VTKViewer_MarkerWidget::onBrowse() +{ + QStringList filters; + filters << tr( "Texture files (*.dat)" ) << tr( "All files (*)" ); + QString aFileName = SUIT_Session::session()->activeApplication()->getFileName( true, QString(), filters.join( ";;" ), tr( "LOAD_TEXTURE_TLT" ), this ); + if ( !aFileName.isEmpty() ) { + VTK::MarkerTexture aMarkerTexture; + if ( VTK::LoadTextureData( aFileName, VTK::MS_NONE, aMarkerTexture ) ) { + int anId = VTK::GetUniqueId( myCustomMarkerMap ); + VTK::MarkerData& aMarkerData = myCustomMarkerMap[ anId ]; + aMarkerData.first = aFileName.toStdString(); + aMarkerData.second = aMarkerTexture; + addTexture( anId, true ); + } + } +} diff --git a/src/VTKViewer/VTKViewer_MarkerWidget.h b/src/VTKViewer/VTKViewer_MarkerWidget.h new file mode 100644 index 000000000..671589087 --- /dev/null +++ b/src/VTKViewer/VTKViewer_MarkerWidget.h @@ -0,0 +1,77 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKVIEWER_MARKERWIDGET_H +#define VTKVIEWER_MARKERWIDGET_H + +#include "VTKViewer.h" +#include "VTKViewer_MarkerDef.h" + +#include + +class QButtonGroup; +class QStackedWidget; + +class QtxComboBox; + +/*! + * Class : VTKViewer_MarkerWidget + * Description : Widget for specifying point marker parameters + */ +class VTKVIEWER_EXPORT VTKViewer_MarkerWidget : public QWidget +{ + Q_OBJECT + +public: + VTKViewer_MarkerWidget( QWidget* ); + virtual ~VTKViewer_MarkerWidget(); + + void setCustomMarkerMap( VTK::MarkerMap ); + VTK::MarkerMap getCustomMarkerMap(); + + void setStandardMarker( VTK::MarkerType, VTK::MarkerScale ); + void setCustomMarker( int ); + VTK::MarkerType getMarkerType() const; + VTK::MarkerScale getStandardMarkerScale() const; + int getCustomMarkerID() const; + + void addExtraStdMarker( VTK::MarkerType, const QPixmap& ); + +private: + void init(); + void addTexture( int, bool = false ); + QPixmap markerFromData( const VTK::MarkerData& ); + +private slots: + void onStdMarkerChanged( int ); + void onBrowse(); + +private: + QButtonGroup* myTypeGroup; + QStackedWidget* myWGStack; + QtxComboBox* myStdTypeCombo; + QtxComboBox* myStdScaleCombo; + QtxComboBox* myCustomTypeCombo; + + VTK::MarkerMap myCustomMarkerMap; + + QList myExtraMarkerList; +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_OpenGLRenderer.cxx b/src/VTKViewer/VTKViewer_OpenGLRenderer.cxx new file mode 100644 index 000000000..a7250fa2e --- /dev/null +++ b/src/VTKViewer/VTKViewer_OpenGLRenderer.cxx @@ -0,0 +1,262 @@ +// Copyright (C) 2007-2011 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 "VTKViewer_OpenGLRenderer.h" +#include "VTKViewer_Texture.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include // vtkgl namespace +#include +#include +#include +#include +#include +#include + +vtkStandardNewMacro(VTKViewer_OpenGLRenderer); + +VTKViewer_OpenGLRenderer::VTKViewer_OpenGLRenderer() +{ + this->GradientType = HorizontalGradient; +} + +VTKViewer_OpenGLRenderer::~VTKViewer_OpenGLRenderer() +{ +} + +void VTKViewer_OpenGLRenderer::SetGradientType( const int theGradientType ) +{ + this->GradientType = theGradientType; +} + +void VTKViewer_OpenGLRenderer::Clear(void) +{ + GLbitfield clear_mask = 0; + + if( !this->Transparent() ) + { + glClearColor( static_cast(this->Background[0]), + static_cast(this->Background[1]), + static_cast(this->Background[2]), + static_cast(0.0)); + clear_mask |= GL_COLOR_BUFFER_BIT; + } + + if( !this->GetPreserveDepthBuffer() ) + { + glClearDepth(static_cast(1.0)); + clear_mask |= GL_DEPTH_BUFFER_BIT; + } + + vtkDebugMacro(<< "glClear\n"); + glClear(clear_mask); + + // If gradient background is turned on, draw it now. + if( !this->Transparent() && + ( this->GradientBackground || this->TexturedBackground ) ) + { + double aTileViewport[4]; + this->GetRenderWindow()->GetTileViewport( aTileViewport ); + glPushAttrib( GL_ENABLE_BIT | GL_TRANSFORM_BIT | GL_TEXTURE_BIT ); + glDisable( GL_ALPHA_TEST ); + glDisable( GL_DEPTH_TEST ); + glDisable( GL_LIGHTING ); + glDisable( GL_TEXTURE_1D ); + glDisable( GL_TEXTURE_2D ); + glDisable( GL_BLEND ); + glShadeModel( GL_SMOOTH ); // color interpolation + + glMatrixMode( GL_PROJECTION ); + glPushMatrix(); + glLoadIdentity(); + glMatrixMode( GL_MODELVIEW ); + glPushMatrix(); + glLoadIdentity(); + + glOrtho( aTileViewport[0], aTileViewport[2], aTileViewport[1], aTileViewport[3], -1.0, 1.0 ); + + if( this->GradientBackground ) + { + double* corner1 = 0; + double* corner2 = 0; + double* corner3 = 0; + double* corner4 = 0; + double dcorner1[3]; + double dcorner2[3]; + + switch( this->GradientType ) + { + case HorizontalGradient: + corner1 = this->Background; + corner2 = this->Background2; + corner3 = this->Background2; + corner4 = this->Background; + break; + case VerticalGradient: + corner1 = this->Background2; + corner2 = this->Background2; + corner3 = this->Background; + corner4 = this->Background; + break; + case FirstDiagonalGradient: + corner2 = this->Background2; + corner4 = this->Background; + dcorner1[0] = dcorner2[0] = 0.5F * ( corner2[0] + corner4[0] ); + dcorner1[1] = dcorner2[1] = 0.5F * ( corner2[1] + corner4[1] ); + dcorner1[2] = dcorner2[2] = 0.5F * ( corner2[2] + corner4[2] ); + corner1 = dcorner1; + corner3 = dcorner2; + break; + case SecondDiagonalGradient: + corner1 = this->Background2; + corner3 = this->Background; + dcorner1[0] = dcorner2[0] = 0.5F * ( corner1[0] + corner3[0] ); + dcorner1[1] = dcorner2[1] = 0.5F * ( corner1[1] + corner3[1] ); + dcorner1[2] = dcorner2[2] = 0.5F * ( corner1[2] + corner3[2] ); + corner2 = dcorner1; + corner4 = dcorner2; + break; + case FirstCornerGradient: + corner1 = this->Background2; + corner2 = this->Background2; + corner3 = this->Background2; + corner4 = this->Background; + break; + case SecondCornerGradient: + corner1 = this->Background2; + corner2 = this->Background2; + corner3 = this->Background; + corner4 = this->Background2; + break; + case ThirdCornerGradient: + corner1 = this->Background2; + corner2 = this->Background; + corner3 = this->Background2; + corner4 = this->Background2; + break; + case FourthCornerGradient: + corner1 = this->Background; + corner2 = this->Background2; + corner3 = this->Background2; + corner4 = this->Background2; + break; + default: // just in case + corner1 = this->Background; + corner2 = this->Background; + corner3 = this->Background; + corner4 = this->Background; + break; + } + + glBegin( GL_TRIANGLE_FAN ); + if( this->GradientType != FirstCornerGradient && this->GradientType != ThirdCornerGradient ) + { + glColor3f( corner1[0], corner1[1], corner1[2] ); glVertex2f( 0.F, 0.F ); + glColor3f( corner2[0], corner2[1], corner2[2] ); glVertex2f( 1.F, 0.F ); + glColor3f( corner3[0], corner3[1], corner3[2] ); glVertex2f( 1.F, 1.F ); + glColor3f( corner4[0], corner4[1], corner4[2] ); glVertex2f( 0.F, 1.F ); + } + else //if( this->GradientType == FirstCornerGradient || this->GradientType == ThirdCornerGradient ) + { + glColor3f( corner2[0], corner2[1], corner2[2] ); glVertex2f( 1.F, 0.F ); + glColor3f( corner3[0], corner3[1], corner3[2] ); glVertex2f( 1.F, 1.F ); + glColor3f( corner4[0], corner4[1], corner4[2] ); glVertex2f( 0.F, 1.F ); + glColor3f( corner1[0], corner1[1], corner1[2] ); glVertex2f( 0.F, 0.F ); + } + glEnd(); + } + + if( this->TexturedBackground && this->BackgroundTexture ) + { + if( VTKViewer_Texture* aTexture = VTKViewer_Texture::SafeDownCast( this->BackgroundTexture ) ) + { + glEnable( GL_TEXTURE_2D ); + + aTexture->Render( this ); + + // NOTE: By default the mode is GL_MODULATE. Since the user + // cannot set the mode, the default is set to replace. + glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + + // NOTE: vtkTexture Render enables the alpha test + // so that no buffer is affected if alpha of incoming fragment is + // below the threshold. Here we have to enable it so that it won't + // rejects the fragments of the quad as the alpha is set to 0 on it. + glDisable( GL_ALPHA_TEST ); + + GLfloat texX = 1.F; // texture coordinate + GLfloat texY = 1.F; // texture coordinate + GLfloat x_offset = 0.5, y_offset = 0.5; + GLfloat coeff = 0.5; + + // OCCT issue 0023102: Change the algorithm of rendering the + // 3d viewer background using tiled texture + // Setting this coefficient to -1.F allows to tile textures relatively + // to the top-left corner of the view (value 1.F corresponds to the + // initial behaviour - tiling from the bottom-left corner) + GLfloat aCoef = -1.F; + + int aPosition = aTexture->GetPosition(); + int aWidth = aTexture->GetWidth(); + int aHeight = aTexture->GetHeight(); + int aViewWidth = this->RenderWindow->GetSize()[0]; + int aViewHeight = this->RenderWindow->GetSize()[1]; + if( aPosition == VTKViewer_Texture::Centered ) + { + x_offset = ( (GLfloat)aWidth / (GLfloat)aViewWidth ) / 2.; + y_offset = ( (GLfloat)aHeight / (GLfloat)aViewHeight ) / 2.; + } + else if( aPosition == VTKViewer_Texture::Tiled ) + { + texX = (GLfloat)aViewWidth / (GLfloat)aWidth; + texY = (GLfloat)aViewHeight / (GLfloat)aHeight; + } + + // Note that texture is mapped using GL_REPEAT wrapping mode so integer part + // is simply ignored, and negative multiplier is here for convenience only + // and does not result e.g. in texture mirroring + glBegin( GL_QUADS ); + glTexCoord2f( 0.F, 0.F ); glVertex2f( -x_offset + coeff, -aCoef * y_offset + coeff ); + glTexCoord2f( texX, 0.F ); glVertex2f( x_offset + coeff, -aCoef * y_offset + coeff ); + glTexCoord2f( texX, aCoef * texY ); glVertex2f( x_offset + coeff, aCoef * y_offset + coeff ); + glTexCoord2f( 0.F, aCoef * texY ); glVertex2f( -x_offset + coeff, aCoef * y_offset + coeff ); + glEnd(); + } + } + + glPopMatrix(); + glMatrixMode( GL_PROJECTION ); + glPopMatrix(); + glMatrixMode( GL_MODELVIEW ); + + glPopAttrib(); + } +} diff --git a/src/VTKViewer/VTKViewer_OpenGLRenderer.h b/src/VTKViewer/VTKViewer_OpenGLRenderer.h new file mode 100644 index 000000000..83bcc5ecc --- /dev/null +++ b/src/VTKViewer/VTKViewer_OpenGLRenderer.h @@ -0,0 +1,70 @@ +// Copyright (C) 2007-2011 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 VTKViewer : build VTK viewer into Salome desktop +// File : +// Author : +// Module : +// $Header$ +// + +#ifndef VTKVIEWER_OPENGLRENDERER_H +#define VTKVIEWER_OPENGLRENDERER_H + +#include "VTKViewer.h" +#include "vtkOpenGLRenderer.h" + +class VTKVIEWER_EXPORT VTKViewer_OpenGLRenderer : public vtkOpenGLRenderer +{ +public: + enum { + HorizontalGradient, + VerticalGradient, + FirstDiagonalGradient, + SecondDiagonalGradient, + FirstCornerGradient, + SecondCornerGradient, + ThirdCornerGradient, + FourthCornerGradient + }; + +public: + static VTKViewer_OpenGLRenderer *New(); + vtkTypeMacro(VTKViewer_OpenGLRenderer,vtkOpenGLRenderer); + + virtual void SetGradientType( const int ); + + virtual void Clear(void); + +protected: + VTKViewer_OpenGLRenderer(); + ~VTKViewer_OpenGLRenderer(); + +private: + int GradientType; + +private: + VTKViewer_OpenGLRenderer(const VTKViewer_OpenGLRenderer&); // Not implemented. + void operator=(const VTKViewer_OpenGLRenderer&); // Not implemented. +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_PolyDataMapper.cxx b/src/VTKViewer/VTKViewer_PolyDataMapper.cxx new file mode 100644 index 000000000..019350a17 --- /dev/null +++ b/src/VTKViewer/VTKViewer_PolyDataMapper.cxx @@ -0,0 +1,585 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "VTKViewer_PolyDataMapper.h" +#include "VTKViewer_MarkerUtils.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WNT +# ifndef GLX_GLXEXT_LEGACY +# define GLX_GLXEXT_LEGACY +# endif +# include +# include +#else +# include +#endif + +#ifndef VTK_IMPLEMENT_MESA_CXX +vtkCxxRevisionMacro(VTKViewer_PolyDataMapper, "Revision$"); +vtkStandardNewMacro(VTKViewer_PolyDataMapper); +#endif + +// some definitions for what the polydata has in it +#define VTK_PDPSM_COLORS 0x0001 +#define VTK_PDPSM_CELL_COLORS 0x0002 +#define VTK_PDPSM_POINT_TYPE_FLOAT 0x0004 +#define VTK_PDPSM_POINT_TYPE_DOUBLE 0x0008 +#define VTK_PDPSM_NORMAL_TYPE_FLOAT 0x0010 +#define VTK_PDPSM_NORMAL_TYPE_DOUBLE 0x0020 +#define VTK_PDPSM_OPAQUE_COLORS 0x0040 + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GL_VERTEX_PROGRAM_POINT_SIZE_ARB +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#endif + +#ifndef GL_ARB_point_sprite +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif + +#ifndef GL_ARB_vertex_buffer_object +typedef ptrdiff_t GLsizeiptrARB; + +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_STATIC_DRAW_ARB 0x88E4 +#endif + +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); + +static PFNGLGENBUFFERSARBPROC vglGenBuffersARB = NULL; +static PFNGLBINDBUFFERARBPROC vglBindBufferARB = NULL; +static PFNGLBUFFERDATAARBPROC vglBufferDataARB = NULL; +static PFNGLDELETEBUFFERSARBPROC vglDeleteBuffersARB = NULL; + +#ifndef WNT +#define GL_GetProcAddress( x ) glXGetProcAddressARB( (const GLubyte*)x ) +#else +#define GL_GetProcAddress( x ) wglGetProcAddress( (const LPCSTR)x ) +#endif + +bool InitializeBufferExtensions() +{ + vglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)GL_GetProcAddress( "glGenBuffersARB" ); + if( !vglGenBuffersARB ) + return false; + + vglBindBufferARB = (PFNGLBINDBUFFERARBPROC)GL_GetProcAddress( "glBindBufferARB" ); + if( !vglBindBufferARB ) + return false; + + vglBufferDataARB = (PFNGLBUFFERDATAARBPROC)GL_GetProcAddress( "glBufferDataARB" ); + if( !vglBufferDataARB ) + return false; + + vglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)GL_GetProcAddress( "glDeleteBuffersARB" ); + if( !vglDeleteBuffersARB ) + return false; + + return true; +}; + +static bool IsBufferExtensionsInitialized = InitializeBufferExtensions(); + +//----------------------------------------------------------------------------- +VTKViewer_PolyDataMapper::VTKViewer_PolyDataMapper() +{ + Q_INIT_RESOURCE( VTKViewer ); + + this->ExtensionsInitialized = ES_None; + + this->PointSpriteTexture = 0; + + this->MarkerEnabled = false; + this->MarkerType = VTK::MT_NONE; + this->MarkerScale = VTK::MS_NONE; + this->MarkerId = 0; +} + +//----------------------------------------------------------------------------- +VTKViewer_PolyDataMapper::~VTKViewer_PolyDataMapper() +{ + if( PointSpriteTexture > 0 ) + glDeleteTextures( 1, &PointSpriteTexture ); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::SetMarkerEnabled( bool theMarkerEnabled ) +{ + if( this->MarkerEnabled == theMarkerEnabled ) + return; + + this->MarkerEnabled = theMarkerEnabled; + this->Modified(); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::SetMarkerStd( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale ) +{ + if( this->MarkerType == theMarkerType && this->MarkerScale == theMarkerScale ) + return; + + this->MarkerType = theMarkerType; + this->MarkerScale = theMarkerScale; + + if( this->MarkerType == VTK::MT_NONE || this->MarkerType == VTK::MT_USER ) { + this->ImageData = NULL; + this->Modified(); + return; + } + + int aMarkerType = (int)this->MarkerType; + int aMarkerScale = (int)this->MarkerScale; + + int anId = (int)VTK::MS_70 * aMarkerType + aMarkerScale; + + if( this->StandardTextures.find( anId ) == this->StandardTextures.end() ) + { + QString aFileName = QString( ":/textures/texture%1.dat" ).arg( aMarkerType ); + VTK::MarkerTexture aMarkerTexture; + if( VTK::LoadTextureData( aFileName, theMarkerScale, aMarkerTexture ) ) + this->StandardTextures[ anId ] = VTK::MakeVTKImage( aMarkerTexture ); + } + + this->ImageData = this->StandardTextures[ anId ]; + this->Modified(); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMarkerTexture ) +{ + if( this->MarkerType == VTK::MT_USER && this->MarkerId == theMarkerId ) + return; + + this->MarkerType = VTK::MT_USER; + this->MarkerId = theMarkerId; + + if( this->CustomTextures.find( theMarkerId ) == this->CustomTextures.end() ) + this->CustomTextures[ theMarkerId ] = VTK::MakeVTKImage( theMarkerTexture ); + + this->ImageData = this->CustomTextures[ theMarkerId ]; + this->Modified(); +} + +//----------------------------------------------------------------------------- +VTK::MarkerType VTKViewer_PolyDataMapper::GetMarkerType() +{ + return this->MarkerType; +} + +//----------------------------------------------------------------------------- +VTK::MarkerScale VTKViewer_PolyDataMapper::GetMarkerScale() +{ + return this->MarkerScale; +} + +//----------------------------------------------------------------------------- +int VTKViewer_PolyDataMapper::GetMarkerTexture() +{ + return this->MarkerId; +} + +//----------------------------------------------------------------------------- +int VTKViewer_PolyDataMapper::InitExtensions() +{ + char* ext = (char*)glGetString( GL_EXTENSIONS ); + if( !IsBufferExtensionsInitialized || + strstr( ext, "GL_ARB_point_sprite" ) == NULL || + strstr( ext, "GL_ARB_vertex_buffer_object" ) == NULL ) + { + MESSAGE("Initializing ARB extensions failed"); + return ES_Error; + } + + return ES_Ok; +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::InitPointSprites() +{ + glEnable( GL_POINT_SPRITE_ARB ); + glEnable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB ); + + glPushAttrib( GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT | GL_LIGHTING_BIT ); + + glDepthFunc( GL_LEQUAL ); + glEnable( GL_DEPTH_TEST ); + + glEnable( GL_ALPHA_TEST ); + glAlphaFunc( GL_GREATER, 0.0 ); + + glDisable( GL_LIGHTING ); + + glDisable( GL_COLOR_MATERIAL ); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::CleanupPointSprites() +{ + glPopAttrib(); + + glDisable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB ); + glDisable( GL_POINT_SPRITE_ARB ); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::InitTextures() +{ + if( !this->ImageData.GetPointer() ) + return; + + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); + + int* aSize = this->ImageData->GetDimensions(); + unsigned char* dataPtr = (unsigned char*)this->ImageData->GetScalarPointer(); + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, aSize[0], aSize[1], 0, + GL_RGBA, GL_UNSIGNED_BYTE, dataPtr ); + + //glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + glEnable( GL_TEXTURE_2D ); + glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE ); + glBindTexture( GL_TEXTURE_2D, this->PointSpriteTexture ); +} + +//----------------------------------------------------------------------------- +void VTKViewer_PolyDataMapper::RenderPiece( vtkRenderer* ren, vtkActor* act ) +{ + bool isUsePointSprites = this->MarkerEnabled && this->MarkerType != VTK::MT_NONE; + if( isUsePointSprites ) + { + if( this->ExtensionsInitialized == ES_None ) + this->ExtensionsInitialized = this->InitExtensions(); + this->InitPointSprites(); + this->InitTextures(); + } + + MAPPER_SUPERCLASS::RenderPiece( ren, act ); + + if( isUsePointSprites ) + this->CleanupPointSprites(); +} + +//----------------------------------------------------------------------------- +// Definition of structures and fuctions used in Draw() method +namespace VTK +{ + //----------------------------------------------------------------------------- + struct TVertex + { + GLfloat r, g, b, a; + GLfloat vx, vy, vz; + }; + + //----------------------------------------------------------------------------- + struct TColorFunctorBase + { + vtkFloatingPointType myAlpha; + + TColorFunctorBase( vtkProperty* theProperty ) + { + myAlpha = theProperty->GetOpacity(); + } + + virtual + void + get( TVertex& theVertex, vtkIdType thePointId, vtkIdType theCellId ) = 0; + }; + + //----------------------------------------------------------------------------- + struct TPropertyColor : TColorFunctorBase + { + vtkFloatingPointType myColor[3]; + + TPropertyColor( vtkProperty* theProperty ): + TColorFunctorBase( theProperty ) + { + theProperty->GetColor( myColor ); + } + + virtual + void + get( TVertex& theVertex, vtkIdType thePointId, vtkIdType theCellId ) + { + theVertex.r = myColor[0]; + theVertex.g = myColor[1]; + theVertex.b = myColor[2]; + theVertex.a = myAlpha; + } + }; + + //----------------------------------------------------------------------------- + struct TColors2Color : TColorFunctorBase + { + vtkUnsignedCharArray* myColors; + + TColors2Color( vtkProperty* theProperty, + vtkUnsignedCharArray* theColors ): + TColorFunctorBase( theProperty ), + myColors( theColors ) + {} + + virtual + void + get( TVertex& theVertex, vtkIdType thePointId, vtkIdType theCellId ) + { + vtkIdType aTupleId = GetTupleId( thePointId, theCellId ); + unsigned char* aColor = myColors->GetPointer( aTupleId << 2 ); + + theVertex.r = int( aColor[0] ) / 255.0; + theVertex.g = int( aColor[1] ) / 255.0; + theVertex.b = int( aColor[2] ) / 255.0; + theVertex.a = myAlpha; + } + + virtual + vtkIdType + GetTupleId( vtkIdType thePointId, vtkIdType theCellId ) = 0; + }; + + //----------------------------------------------------------------------------- + struct TPointColors2Color : TColors2Color + { + TPointColors2Color( vtkProperty* theProperty, + vtkUnsignedCharArray* theColors ): + TColors2Color( theProperty, theColors ) + {} + + virtual + vtkIdType + GetTupleId( vtkIdType thePointId, vtkIdType theCellId ) + { + return thePointId; + } + }; + + //----------------------------------------------------------------------------- + struct TCellColors2Color : TColors2Color + { + TCellColors2Color( vtkProperty* theProperty, + vtkUnsignedCharArray* theColors ): + TColors2Color( theProperty, theColors ) + {} + + virtual + vtkIdType + GetTupleId( vtkIdType thePointId, vtkIdType theCellId ) + { + return theCellId; + } + }; + + //----------------------------------------------------------------------------- + template < class TCoordinates > + void DrawPoints( TCoordinates* theStartPoints, + vtkCellArray* theCells, + TColorFunctorBase* theColorFunctor, + TVertex* theVertexArr, + vtkIdType &theCellId, + vtkIdType &theVertexId ) + { + vtkIdType* ptIds = theCells->GetPointer(); + vtkIdType* endPtIds = ptIds + theCells->GetNumberOfConnectivityEntries(); + + while ( ptIds < endPtIds ) { + vtkIdType nPts = *ptIds; + ++ptIds; + + while ( nPts > 0 ) { + TVertex& aVertex = theVertexArr[ theVertexId ]; + vtkIdType aPointId = *ptIds; + + TCoordinates* anOffsetPoints = theStartPoints + 3 * aPointId; + aVertex.vx = anOffsetPoints[0]; + aVertex.vy = anOffsetPoints[1]; + aVertex.vz = anOffsetPoints[2]; + + theColorFunctor->get( aVertex, aPointId, theCellId ); + + ++theVertexId; + ++ptIds; + --nPts; + } + + ++theCellId; + } + } + + //----------------------------------------------------------------------------- + template < class TCoordinates > + void DrawCellsPoints( vtkPolyData* theInput, + vtkPoints* thePoints, + TColorFunctorBase* theColorFunctor, + TVertex* theVertexArr ) + { + vtkIdType aCellId = 0, aVertexId = 0; + + TCoordinates* aStartPoints = (TCoordinates*)thePoints->GetVoidPointer(0); + + if ( vtkCellArray* aCellArray = theInput->GetVerts() ) + DrawPoints( aStartPoints, aCellArray, theColorFunctor, theVertexArr, aCellId, aVertexId ); + + if ( vtkCellArray* aCellArray = theInput->GetLines() ) + DrawPoints( aStartPoints, aCellArray, theColorFunctor, theVertexArr, aCellId, aVertexId ); + + if ( vtkCellArray* aCellArray = theInput->GetPolys() ) + DrawPoints( aStartPoints, aCellArray, theColorFunctor, theVertexArr, aCellId, aVertexId ); + + if ( vtkCellArray* aCellArray = theInput->GetStrips() ) + DrawPoints( aStartPoints, aCellArray, theColorFunctor, theVertexArr, aCellId, aVertexId ); + } +} // namespace VTK + +//----------------------------------------------------------------------------- +int VTKViewer_PolyDataMapper::Draw( vtkRenderer* ren, vtkActor* act ) +{ + if( !this->MarkerEnabled || this->MarkerType == VTK::MT_NONE || !this->ImageData.GetPointer() ) + return MAPPER_SUPERCLASS::Draw( ren, act ); + + vtkUnsignedCharArray* colors = NULL; + vtkPolyData* input = this->GetInput(); + vtkPoints* points; + int noAbort = 1; + int cellScalars = 0; + vtkProperty* prop = act->GetProperty(); + + points = input->GetPoints(); + + if ( this->Colors ) + { + colors = this->Colors; + if ( (this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_DATA || + this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA || + !input->GetPointData()->GetScalars() ) + && this->ScalarMode != VTK_SCALAR_MODE_USE_POINT_FIELD_DATA) + cellScalars = 1; + } + + { + vtkIdType aTotalConnectivitySize = 0; + + if ( vtkCellArray* aCellArray = input->GetVerts() ) + aTotalConnectivitySize += aCellArray->GetNumberOfConnectivityEntries() - aCellArray->GetNumberOfCells(); + + if ( vtkCellArray* aCellArray = input->GetLines() ) + aTotalConnectivitySize += aCellArray->GetNumberOfConnectivityEntries() - aCellArray->GetNumberOfCells(); + + if ( vtkCellArray* aCellArray = input->GetPolys() ) + aTotalConnectivitySize += aCellArray->GetNumberOfConnectivityEntries() - aCellArray->GetNumberOfCells(); + + if ( vtkCellArray* aCellArray = input->GetStrips() ) + aTotalConnectivitySize += aCellArray->GetNumberOfConnectivityEntries() - aCellArray->GetNumberOfCells(); + + if ( aTotalConnectivitySize > 0 ) { + VTK::TVertex* aVertexArr = new VTK::TVertex[ aTotalConnectivitySize ]; + + int* aSize = this->ImageData->GetDimensions(); + glPointSize( std::max( aSize[0], aSize[1] ) ); + + int aMode = 0; // to remove + { + VTK::TColorFunctorBase* aColorFunctor = NULL; + if( colors && aMode != 1 ) { + if ( cellScalars ) + aColorFunctor = new VTK::TCellColors2Color( prop, colors ); + else + aColorFunctor = new VTK::TPointColors2Color( prop, colors ); + } else { + aColorFunctor = new VTK::TPropertyColor( prop ); + } + if ( points->GetDataType() == VTK_FLOAT ) + VTK::DrawCellsPoints< float >( input, points, aColorFunctor, aVertexArr ); + else + VTK::DrawCellsPoints< double >( input, points, aColorFunctor, aVertexArr ); + + delete aColorFunctor; + } + + if( this->ExtensionsInitialized == ES_Ok ) { + GLuint aBufferObjectID = 0; + vglGenBuffersARB( 1, &aBufferObjectID ); + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); + + int anArrayObjectSize = sizeof( VTK::TVertex ) * aTotalConnectivitySize; + vglBufferDataARB( GL_ARRAY_BUFFER_ARB, anArrayObjectSize, aVertexArr, GL_STATIC_DRAW_ARB ); + + delete [] aVertexArr; + + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 ); + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); + + glColorPointer( 4, GL_FLOAT, sizeof(VTK::TVertex), (void*)0 ); + glVertexPointer( 3, GL_FLOAT, sizeof(VTK::TVertex), (void*)(4*sizeof(GLfloat)) ); + + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_COLOR_ARRAY ); + + glDrawArrays( GL_POINTS, 0, aTotalConnectivitySize ); + + glDisableClientState( GL_COLOR_ARRAY ); + glDisableClientState( GL_VERTEX_ARRAY ); + + vglDeleteBuffersARB( 1, &aBufferObjectID ); + } else { // there are no extensions + glColorPointer( 4, GL_FLOAT, sizeof(VTK::TVertex), aVertexArr ); + glVertexPointer( 3, GL_FLOAT, sizeof(VTK::TVertex), + (void*)((GLfloat*)((void*)(aVertexArr)) + 4)); + + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_COLOR_ARRAY ); + + glDrawArrays( GL_POINTS, 0, aTotalConnectivitySize ); + + glDisableClientState( GL_COLOR_ARRAY ); + glDisableClientState( GL_VERTEX_ARRAY ); + + delete [] aVertexArr; + } + } + } + + this->UpdateProgress(1.0); + return noAbort; +} diff --git a/src/VTKViewer/VTKViewer_PolyDataMapper.h b/src/VTKViewer/VTKViewer_PolyDataMapper.h new file mode 100644 index 000000000..80d04a783 --- /dev/null +++ b/src/VTKViewer/VTKViewer_PolyDataMapper.h @@ -0,0 +1,122 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef VTKViewer_POLYDATAMAPPER_H +#define VTKViewer_POLYDATAMAPPER_H + +#include "VTKViewer.h" +#include "VTKViewer_MarkerDef.h" + +#ifdef WNT +#include +#endif + +#include + +#include + +#include + +class vtkImageData; + +#ifndef VTK_IMPLEMENT_MESA_CXX +#include +#define MAPPER_SUPERCLASS vtkOpenGLPolyDataMapper +#else +#include +#define MAPPER_SUPERCLASS vtkMesaPolyDataMapper +#endif + +//---------------------------------------------------------------------------- +//! OpenGL Point Sprites PolyData Mapper. +/*! + * VTKViewer_PolyDataMapper is a class that maps polygonal data + * (i.e., vtkPolyData) to graphics primitives. It is performing the mapping + * to the rendering/graphics hardware/software. It is now possible to set a + * memory limit for the pipeline in the mapper. If the total estimated memory + * usage of the pipeline is larger than this limit, the mapper will divide + * the data into pieces and render each in a for loop. + */ +class VTKVIEWER_EXPORT VTKViewer_PolyDataMapper : public MAPPER_SUPERCLASS +{ +public: + enum ExtensionsState { ES_None = 0, ES_Error, ES_Ok }; + +public: + static VTKViewer_PolyDataMapper* New(); + vtkTypeRevisionMacro( VTKViewer_PolyDataMapper, MAPPER_SUPERCLASS ); + + //! Set point marker enabled + void SetMarkerEnabled( bool ); + + //! Set standard point marker + void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale ); + + //! Set custom point marker + void SetMarkerTexture( int, VTK::MarkerTexture ); + + //! Get type of the point marker + VTK::MarkerType GetMarkerType(); + + //! Get scale of the point marker + VTK::MarkerScale GetMarkerScale(); + + //! Get texture identifier of the point marker + int GetMarkerTexture(); + + //! Implement superclass render method. + virtual void RenderPiece( vtkRenderer*, vtkActor* ); + + //! Draw method for OpenGL. + virtual int Draw( vtkRenderer*, vtkActor* ); + +protected: + VTKViewer_PolyDataMapper(); + ~VTKViewer_PolyDataMapper(); + + //! Initializing OpenGL extensions. + int InitExtensions(); + + //! Activate Point Sprites. + void InitPointSprites(); + + //! Deactivate Point Sprites. + void CleanupPointSprites(); + + //! Initializing textures for Point Sprites. + void InitTextures(); + +private: + int ExtensionsInitialized; + + GLuint PointSpriteTexture; + + vtkSmartPointer ImageData; + + bool MarkerEnabled; + VTK::MarkerType MarkerType; + VTK::MarkerScale MarkerScale; + int MarkerId; + + typedef std::map< int, vtkSmartPointer > ImageDataMap; + ImageDataMap StandardTextures; + ImageDataMap CustomTextures; +}; + +#endif diff --git a/src/VTKViewer/VTKViewer_Texture.cxx b/src/VTKViewer/VTKViewer_Texture.cxx new file mode 100644 index 000000000..68b98277c --- /dev/null +++ b/src/VTKViewer/VTKViewer_Texture.cxx @@ -0,0 +1,491 @@ +// Copyright (C) 2007-2011 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 "VTKViewer_Texture.h" + +#include "vtkHomogeneousTransform.h" +#include "vtkImageData.h" +#include "vtkLookupTable.h" +#include "vtkObjectFactory.h" +#include "vtkOpenGLRenderer.h" +#include "vtkPointData.h" +#include "vtkRenderWindow.h" +#include "vtkOpenGLExtensionManager.h" +#include "vtkOpenGLRenderWindow.h" +#include "vtkTransform.h" +#include "vtkPixelBufferObject.h" +#include "vtkOpenGL.h" +#include "vtkgl.h" // vtkgl namespace +#include + +vtkStandardNewMacro(VTKViewer_Texture); + + +// ---------------------------------------------------------------------------- +VTKViewer_Texture::VTKViewer_Texture() +{ + myWidth = 0; + myHeight = 0; + myPosition = VTKViewer_Texture::Centered; +} + +// ---------------------------------------------------------------------------- +VTKViewer_Texture::~VTKViewer_Texture() +{ +} + +// ---------------------------------------------------------------------------- +// Implement base class method. +void VTKViewer_Texture::Load(vtkRenderer *ren) +{ + GLenum format = GL_LUMINANCE; + vtkImageData *input = this->GetInput(); + + this->Initialize(ren); + + // Need to reload the texture. + // There used to be a check on the render window's mtime, but + // this is too broad of a check (e.g. it would cause all textures + // to load when only the desired update rate changed). + // If a better check is required, check something more specific, + // like the graphics context. + vtkOpenGLRenderWindow* renWin = + static_cast(ren->GetRenderWindow()); + + if(this->BlendingMode != VTK_TEXTURE_BLENDING_MODE_NONE + && vtkgl::ActiveTexture) + { + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, vtkgl::COMBINE); + + switch(this->BlendingMode) + { + case VTK_TEXTURE_BLENDING_MODE_REPLACE: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, GL_REPLACE); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, GL_REPLACE); + break; + } + case VTK_TEXTURE_BLENDING_MODE_MODULATE: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, GL_MODULATE); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, GL_MODULATE); + break; + } + case VTK_TEXTURE_BLENDING_MODE_ADD: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, GL_ADD); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, GL_ADD); + break; + } + case VTK_TEXTURE_BLENDING_MODE_ADD_SIGNED: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, vtkgl::ADD_SIGNED); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, vtkgl::ADD_SIGNED); + break; + } + case VTK_TEXTURE_BLENDING_MODE_INTERPOLATE: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, vtkgl::INTERPOLATE); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, vtkgl::INTERPOLATE); + break; + } + case VTK_TEXTURE_BLENDING_MODE_SUBTRACT: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, vtkgl::SUBTRACT); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, vtkgl::SUBTRACT); + break; + } + default: + { + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_RGB, GL_ADD); + glTexEnvf (GL_TEXTURE_ENV, vtkgl::COMBINE_ALPHA, GL_ADD); + } + } + } + + if (this->GetMTime() > this->LoadTime.GetMTime() || + input->GetMTime() > this->LoadTime.GetMTime() || + (this->GetLookupTable() && this->GetLookupTable()->GetMTime () > + this->LoadTime.GetMTime()) || + renWin != this->RenderWindow.GetPointer() || + renWin->GetContextCreationTime() > this->LoadTime) + { + int bytesPerPixel; + int size[3]; + vtkDataArray *scalars; + unsigned char *dataPtr; + unsigned char *resultData=NULL; + int xsize, ysize; + unsigned int xs,ys; + GLuint tempIndex=0; + + // Get the scalars the user choose to color with. + scalars = this->GetInputArrayToProcess(0, input); + + // make sure scalars are non null + if (!scalars) + { + vtkErrorMacro(<< "No scalar values found for texture input!"); + return; + } + + // get some info + input->GetDimensions(size); + + if (input->GetNumberOfCells() == scalars->GetNumberOfTuples()) + { + // we are using cell scalars. Adjust image size for cells. + for (int kk=0; kk < 3; kk++) + { + if (size[kk]>1) + { + size[kk]--; + } + } + } + + bytesPerPixel = scalars->GetNumberOfComponents(); + + // make sure using unsigned char data of color scalars type + if (this->MapColorScalarsThroughLookupTable || + scalars->GetDataType() != VTK_UNSIGNED_CHAR ) + { + dataPtr = this->MapScalarsToColors (scalars); + bytesPerPixel = 4; + } + else + { + dataPtr = static_cast(scalars)->GetPointer(0); + } + + // we only support 2d texture maps right now + // so one of the three sizes must be 1, but it + // could be any of them, so lets find it + if (size[0] == 1) + { + xsize = size[1]; ysize = size[2]; + } + else + { + xsize = size[0]; + if (size[1] == 1) + { + ysize = size[2]; + } + else + { + ysize = size[1]; + if (size[2] != 1) + { + vtkErrorMacro(<< "3D texture maps currently are not supported!"); + return; + } + } + } + + + if(!this->CheckedHardwareSupport) + { + vtkOpenGLExtensionManager *m=renWin->GetExtensionManager(); + this->CheckedHardwareSupport=true; + this->SupportsNonPowerOfTwoTextures= + m->ExtensionSupported("GL_VERSION_2_0") + || m->ExtensionSupported("GL_ARB_texture_non_power_of_two"); + this->SupportsPBO=vtkPixelBufferObject::IsSupported(renWin); + } + + // -- decide whether the texture needs to be resampled -- + + GLint maxDimGL; + glGetIntegerv(GL_MAX_TEXTURE_SIZE,&maxDimGL); + // if larger than permitted by the graphics library then must resample + bool resampleNeeded=xsize > maxDimGL || ysize > maxDimGL; + if(resampleNeeded) + { + vtkDebugMacro( "Texture too big for gl, maximum is " << maxDimGL); + } + + if(!resampleNeeded && !this->SupportsNonPowerOfTwoTextures) + { + // xsize and ysize must be a power of 2 in OpenGL + xs = static_cast(xsize); + ys = static_cast(ysize); + while (!(xs & 0x01)) + { + xs = xs >> 1; + } + while (!(ys & 0x01)) + { + ys = ys >> 1; + } + // if not a power of two then resampling is required + resampleNeeded= (xs>1) || (ys>1); + } + + if(resampleNeeded) + { + vtkDebugMacro(<< "Resampling texture to power of two for OpenGL"); + resultData = this->ResampleToPowerOfTwo(xsize, ysize, dataPtr, + bytesPerPixel); + } + + if ( resultData == NULL ) + { + resultData = dataPtr; + } + + // free any old display lists (from the old context) + if (this->RenderWindow) + { + this->ReleaseGraphicsResources(this->RenderWindow); + } + + this->RenderWindow = ren->GetRenderWindow(); + + // make the new context current before we mess with opengl + this->RenderWindow->MakeCurrent(); + + // define a display list for this texture + // get a unique display list id + +#ifdef GL_VERSION_1_1 + glGenTextures(1, &tempIndex); + this->Index = static_cast(tempIndex); + glBindTexture(GL_TEXTURE_2D, this->Index); +#else + this->Index = glGenLists(1); + glDeleteLists (static_cast(this->Index), static_cast(0)); + glNewList (static_cast(this->Index), GL_COMPILE); +#endif + //seg fault protection for those wackos that don't use an + //opengl render window + if(this->RenderWindow->IsA("vtkOpenGLRenderWindow")) + { + static_cast(ren->GetRenderWindow())-> + RegisterTextureResource( this->Index ); + } + + if (this->Interpolate) + { + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + GL_LINEAR); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + GL_LINEAR ); + } + else + { + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); + } + if (this->Repeat) + { + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + } + else + { + vtkOpenGLExtensionManager* manager = renWin->GetExtensionManager(); + if (this->EdgeClamp && + (manager->ExtensionSupported("GL_VERSION_1_2") || + manager->ExtensionSupported("GL_EXT_texture_edge_clamp"))) + { + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, + vtkgl::CLAMP_TO_EDGE ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, + vtkgl::CLAMP_TO_EDGE ); + } + else + { + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); + } + } + int internalFormat = bytesPerPixel; + switch (bytesPerPixel) + { + case 1: format = GL_LUMINANCE; break; + case 2: format = GL_LUMINANCE_ALPHA; break; + case 3: format = GL_RGB; break; + case 4: format = GL_RGBA; break; + } + // if we are using OpenGL 1.1, you can force 32 or16 bit textures +#ifdef GL_VERSION_1_1 + if (this->Quality == VTK_TEXTURE_QUALITY_32BIT) + { + switch (bytesPerPixel) + { + case 1: internalFormat = GL_LUMINANCE8; break; + case 2: internalFormat = GL_LUMINANCE8_ALPHA8; break; + case 3: internalFormat = GL_RGB8; break; + case 4: internalFormat = GL_RGBA8; break; + } + } + else if (this->Quality == VTK_TEXTURE_QUALITY_16BIT) + { + switch (bytesPerPixel) + { + case 1: internalFormat = GL_LUMINANCE4; break; + case 2: internalFormat = GL_LUMINANCE4_ALPHA4; break; + case 3: internalFormat = GL_RGB4; break; + case 4: internalFormat = GL_RGBA4; break; + } + } +#endif + if(this->SupportsPBO) + { + if(this->PBO==0) + { + this->PBO=vtkPixelBufferObject::New(); + this->PBO->SetContext(renWin); + } + unsigned int dims[2]; + vtkIdType increments[2]; + dims[0]=static_cast(xsize); + dims[1]=static_cast(ysize); + increments[0]=0; + increments[1]=0; + this->PBO->Upload2D(VTK_UNSIGNED_CHAR,resultData,dims,bytesPerPixel, + increments); + // non-blocking call + this->PBO->Bind(vtkPixelBufferObject::UNPACKED_BUFFER); + glTexImage2D( GL_TEXTURE_2D, 0 , internalFormat, + xsize, ysize, 0, format, + GL_UNSIGNED_BYTE,0); + myWidth = xsize; + myHeight = ysize; + this->PBO->UnBind(); + } + else + { + // blocking call + glTexImage2D( GL_TEXTURE_2D, 0 , internalFormat, + xsize, ysize, 0, format, + GL_UNSIGNED_BYTE, + static_cast(resultData) ); + myWidth = xsize; + myHeight = ysize; + } +#ifndef GL_VERSION_1_1 + glEndList (); +#endif + // modify the load time to the current time + this->LoadTime.Modified(); + + // free memory + if (resultData != dataPtr) + { + delete [] resultData; + } + } + + // execute the display list that uses creates the texture +#ifdef GL_VERSION_1_1 + glBindTexture(GL_TEXTURE_2D, this->Index); +#else + glCallList(this->Index); +#endif + + // don't accept fragments if they have zero opacity. this will stop the + // zbuffer from be blocked by totally transparent texture fragments. + glAlphaFunc (GL_GREATER, static_cast(0)); + glEnable (GL_ALPHA_TEST); + + if (this->PremultipliedAlpha) + { + // save the blend function. + glPushAttrib(GL_COLOR_BUFFER_BIT); + + // make the blend function correct for textures premultiplied by alpha. + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + } + + // now bind it + glEnable(GL_TEXTURE_2D); + + // clear any texture transform + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + // build transformation + if (this->Transform) + { + double *mat = this->Transform->GetMatrix()->Element[0]; + double mat2[16]; + mat2[0] = mat[0]; + mat2[1] = mat[4]; + mat2[2] = mat[8]; + mat2[3] = mat[12]; + mat2[4] = mat[1]; + mat2[5] = mat[5]; + mat2[6] = mat[9]; + mat2[7] = mat[13]; + mat2[8] = mat[2]; + mat2[9] = mat[6]; + mat2[10] = mat[10]; + mat2[11] = mat[14]; + mat2[12] = mat[3]; + mat2[13] = mat[7]; + mat2[14] = mat[11]; + mat2[15] = mat[15]; + + // insert texture transformation + glMultMatrixd(mat2); + } + glMatrixMode(GL_MODELVIEW); + + GLint uUseTexture=-1; + GLint uTexture=-1; + + vtkOpenGLRenderer *oRenderer=static_cast(ren); + +/* if(oRenderer->GetDepthPeelingHigherLayer()) + { + uUseTexture=oRenderer->GetUseTextureUniformVariable(); + uTexture=oRenderer->GetTextureUniformVariable(); + vtkgl::Uniform1i(uUseTexture,1); + vtkgl::Uniform1i(uTexture,0); // active texture 0 + } + */ +} + +void VTKViewer_Texture::Initialize(vtkRenderer * vtkNotUsed(ren)) +{ +} + +int VTKViewer_Texture::GetWidth() const +{ + return myWidth; +} + +int VTKViewer_Texture::GetHeight() const +{ + return myHeight; +} + +void VTKViewer_Texture::SetPosition(int pos) +{ + myPosition = pos; +} + +int VTKViewer_Texture::GetPosition() const +{ + return myPosition; +} diff --git a/src/VTKViewer/VTKViewer_Texture.h b/src/VTKViewer/VTKViewer_Texture.h new file mode 100644 index 000000000..b17028a34 --- /dev/null +++ b/src/VTKViewer/VTKViewer_Texture.h @@ -0,0 +1,71 @@ +// Copyright (C) 2007-2011 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 VTKViewer : build VTK viewer into Salome desktop +// File : +// Author : +// Module : +// $Header$ +// + +#ifndef VTKVIEWER_TEXTURE_H +#define VTKVIEWER_TEXTURE_H + +#include "VTKViewer.h" +#include + +#ifdef WIN32 +#pragma warning ( disable:4251 ) +#endif + +class vtkRenderer; + +class VTKVIEWER_EXPORT VTKViewer_Texture : public vtkOpenGLTexture +{ +public: + enum { Stretched = 0, Centered, Tiled }; + +public: + static VTKViewer_Texture *New(); + vtkTypeMacro(VTKViewer_Texture,vtkOpenGLTexture); + + virtual void Load(vtkRenderer *ren); + + int GetWidth() const; + int GetHeight() const; + + void SetPosition(int type); + int GetPosition() const; + +protected: + VTKViewer_Texture(); + ~VTKViewer_Texture(); + + int myWidth; + int myHeight; + int myPosition; + +private: + virtual void Initialize(vtkRenderer * ren); +}; + +#endif diff --git a/src/VTKViewer/resources/VTKViewer_msg_fr.ts b/src/VTKViewer/resources/VTKViewer_msg_fr.ts new file mode 100755 index 000000000..d3daa66be --- /dev/null +++ b/src/VTKViewer/resources/VTKViewer_msg_fr.ts @@ -0,0 +1,231 @@ + + + + + @default + + DSC_ANTICLOCKWISE_VIEW + Tourner la vue à gauche + + + DSC_CLOCKWISE_VIEW + Tourner la vue à droite + + + MNU_ANTICLOCKWISE_VIEW + Tourner la vue à gauche + + + MNU_CLOCKWISE_VIEW + Tourner la vue à droite + + + MNU_FRONT_VIEW + Avant + + + ERROR + Erreur + + + MNU_DUMP_VIEW + Enregistrer la vue... + + + DSC_TOP_VIEW + Vue de dessus + + + MNU_PAN_VIEW + Déplacement + + + MNU_TOP_VIEW + Dessus + + + DSC_GLOBALPAN_VIEW + Sélection d'un nouveau centre de vue + + + DSC_ROTATE_VIEW + Tourner le point de vue autour du centre de la scène + + + MNU_ZOOM_VIEW + Zoom + + + DSC_PAN_VIEW + Déplacer la vue + + + DSC_LEFT_VIEW + Vue de gauche + + + DSC_FITALL + Redimensionner la scène pour montrer tous les objets + + + MNU_FITALL + Ajuster tout + + + MNU_ROTATE_VIEW + Rotation + + + DSC_SHOW_TRIHEDRON + Montrer/Cacher le trièdre dans la vue actuelle + + + DSC_FRONT_VIEW + Vue de face + + + MNU_GLOBALPAN_VIEW + Déplacement global + + + INF_APP_DUMP_VIEW + Enregistrer la vue + + + MNU_BACK_VIEW + Arrière + + + MNU_SHOW_TRIHEDRON + Montrer/Cacher le trièdre + + + MNU_BOTTOM_VIEW + Dessous + + + MNU_RESET_VIEW + Restaurer le point de vue + + + MNU_LEFT_VIEW + Gauche + + + DSC_RIGHT_VIEW + Vue de droite + + + DSC_FITRECT + Redimensionner la scène à la zone choisie par l'encadré + + + MNU_FITRECT + Ajuster à la zone + + + DSC_BOTTOM_VIEW + Vue de dessous + + + DSC_DUMP_VIEW + Sauvegarde la scène en cours dans un fichier image + + + DSC_ZOOM_VIEW + Zoom la vue + + + VTK_IMAGE_FILES + Fichiers images (*.bmp *.png *.jpg *.jpeg) + + + DSC_RESET_VIEW + Restaurer le Point de Vue + + + ERR_DOC_CANT_SAVE_FILE + Impossible de sauvegarder le fichier + + + MNU_RIGHT_VIEW + Droite + + + LBL_TOOLBAR_LABEL + Opérations de visualisation + + + DSC_BACK_VIEW + Vue de derrière + + + + VTKViewer_MarkerDlg + + SET_MARKER_TLT + Définir le symbole du point + + + + VTKViewer_MarkerWidget + + STANDARD_MARKER + Standard + + + CUSTOM_MARKER + Personnalisé + + + TYPE + Type: + + + SCALE + Echelle: + + + CUSTOM + Texture: + + + BROWSE + Naviguer... + + + LOAD_TEXTURE_TLT + Charger une texture + + + + VTKViewer_ViewManager + + VTK_VIEW_TITLE + Scène VTK:%M - visualiseur:%V + + + + VTKViewer_Viewer + + MEN_DUMP_VIEW + Enregistrer la vue... + + + MEN_SHOW_TOOLBAR + Afficher la barre d'outils + + + MEN_CHANGE_BACKGROUND + Changer l'arrière-plan... + + + GT_VERTICALGRADIENT + Gradient vertical + + + BG_IMAGE_FILES + Fichiers images (*.png *.jpg *.jpeg *.bmp *.tif *.tiff *.mhd *.mha) + + + diff --git a/src/VTKViewer/resources/marker_1.png b/src/VTKViewer/resources/marker_1.png new file mode 100755 index 0000000000000000000000000000000000000000..8bbaa854e234d7a1d13ac8dc60d02098178db461 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hUudb&7bP0l+XkKJNr5W literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/marker_2.png b/src/VTKViewer/resources/marker_2.png new file mode 100755 index 0000000000000000000000000000000000000000..f0d21091d88a83773e7979511c1ff6200b48b3d4 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTzd%8G=RNPAX^Z&m+vnqo^!;BA}r%q@InaBc}5*jQFj4m4)F^D4^U2aKE(y}&{ zHS+~sm{|mvPcXzpM7ce*x2qIj<51|@%OKz&B8^G(OnK(kz_92BD+41NgMzQk)H8b{ RPXe96;OXk;vd$@?2>?nQL0td< literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/marker_3.png b/src/VTKViewer/resources/marker_3.png new file mode 100755 index 0000000000000000000000000000000000000000..345d8abc1696d7d04621512e5b0ad84df816da0f GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTr@N{tuskoK&=l_3uW>p4-h8Z6`Po2;bGLZ!`B{WzV7>~Gg_1<{G$kf3o!geAe z%I%@OqL~pJhXPwplfls!CT2VW4m~@P7;oS?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hU8c)B=-RNPAX^Z&m+vnqo^L&OHoQzx{NX8d~cvDPgoi;<~=b+%hhSK&!U76IlH z+zL9ni$BO8JJx>jDo{X}xfQ6zW0UM`Z3d=}Byk27fun4w#6=DP2a(-CRT2|FGg)d1 v0vQ`q)q*}TIWQOo&5{P1|Hy!W!+?SN`^u?H9{2D7-NfMO>gTe~DWM4f^qWmT literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/marker_5.png b/src/VTKViewer/resources/marker_5.png new file mode 100755 index 0000000000000000000000000000000000000000..a994c1100412a856d0609296d30fa92a841f1fa2 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTTc)B=-RNPAX^Z&m+vnqo^!wd-x76wKZa|gGui5klntY+p=V4EPG5E13}(B4R1 zHhD5Thr%L}hr%E#=g@Pb1_q@UF;4fGfXagY_Vh6_btH*1um~JYWDsx=InLz35IBdA zfvIB&!{KFo3JnsPXMGqLT?*5H>brOuI1CuLgpN0+)LE$j-NNAM>gTe~DWM4fhCxL{ literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/marker_6.png b/src/VTKViewer/resources/marker_6.png new file mode 100755 index 0000000000000000000000000000000000000000..967b93ecc25181d1b2fea151d283eed958c8eedc GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTr^mK6yskoK&=l_3uW>p4-hKLQEr%q@k&G_}?W35|G79&#!>uk52uELXyECS3Y zxD|AC7k`jHcC7v4RiJ<{b1P7b$0pg?+6+t`N#YDF0&&b6j?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTr@N{tuskoK&?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hU0^K@|xskoK&=l_3uW>p4-hKLQEr%q@k&G_}?W35|G79&#!;}a%{Y10CK@Ez_VQG^To`ZIA#t7wU~3QJ6V>W z4PXGO-=UH)>q90RV*|sXOomO|A0$D7ElfP|2bvfh7#{Li#N>QoU?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hTL@^op4-h6sn2o;8pDtM|V*KE&c!Q_}k4lYyNBgJDAq!=Xz? zT>mF#mh^bbDKu=*I@G%HBr}V^Q9T9@g*9rE53zG7sO2bfb16hPEMhmX0*b1|2pKqk z$Yf(|U^tY?;A6Z^!K*2>8Vhl_jk4hK>97J{l?Urz4QLSVI(wb*` hf$EMpC^B#uFx+uYQBZVc>j1iz!PC{xWt~$(6999WRk;8F literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_anticlockwise.png b/src/VTKViewer/resources/vtk_view_anticlockwise.png new file mode 100644 index 0000000000000000000000000000000000000000..991586fe6d877a528f2afa6647ccfcc5d92bd742 GIT binary patch literal 936 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 EKlOk)s{jB1 literal 0 HcmV?d00001 diff --git a/doc/salome/tui/images/head.png b/doc/salome/tui/images/head.png new file mode 100755 index 0000000000000000000000000000000000000000..307d9ef9a4c07f8fba2c8721309a978433bcf63c GIT binary patch literal 78545 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 D4zrO! literal 0 HcmV?d00001 diff --git a/doc/salome/tui/static/header.html.in b/doc/salome/tui/static/header.html.in new file mode 100755 index 000000000..4571b4363 --- /dev/null +++ b/doc/salome/tui/static/header.html.in @@ -0,0 +1,20 @@ + + + + + +$title + +$treeview +$search +$mathjax + + + + +

      T_)p`_q4r?M-f(EQU+(mNbQ6^3T8J(1CT%(SN7h4M210s)FBC7+ zsjU&v1ONR6u2ILwU%YCU7j+QP z{Bsr$aO)KP4-tTDOQsB~ajElVHVx#KyTXTsW}+6qdG3u};R*Y&a2{7FTyaT4U0bd)iqgawDvnye`Jv zNO8c=F0O|7uf0~WJCj5R+um@axhmu9Yh3vD?-JOMNZbpGw- z=0veqPqb(A)j^kG1rcIzcdl8Me$2lLu-8E_G1}RNopFY}_xsQ);I{?xu<6bMzRc2yJ6lIJ3`!W8SfF4MK+Lc!6 zp(o7aC>!%Bsf$O2{~>!x^5jv87E6VuXesY zsnn2E!!-q`1`&!8#+!32k!RZG|W6d00z0^{o%(rN^8^=k6s;Zl1koxFW9#zz8xm7BSb2ekDpHQZ}RYK-km340=flCaoRB z7LyasR?acoh=@onttyK<^&67?A1>Hi4)GXW^>9yT}go@H(RHL+>X z)Bo*-@H_RHti(v7zlY@!zsows665(Bj_K=jJW%Eoa~xp+G5$`Z!3aD!hC`=nZ+Pd} z|J;!`_VYwgq$C3pZ&8BkRqoRw43LJd83Fu(eTewtG%CmqhFXpR{opP32?>QnO1iF3 zwW&WzUy$|$$}MuRP^h1l*?-ia7r56hvbQB}zXPLJk9n8!dC3wOILV+1NH?ze{?U^< z_4=IUS~o9dceN>B=jOOb`A}lT;d4a59nM;%>LFi$|6){Bx#O`xlJX<@>R`4%ce-D< zn~5&bKM*2JEI7{kBT}9#ZjTS@$f8;Z?-xPZaXHi0+(xb1X7cXLA5D`i5(6SB4u9qJ ze;OI{^3r=W--}W9K5&aiuGa2u8wLm7U&bk|&#=j{ND=$~26o1B@cj|ev=`ZeCVv#b zd;KmE^Lgjao!U3L(o##^a)aXU_4ch51zK-Sr??QqSPmUVyXK(J{HM+AeN(Ja2xPvY z$6(%^dJ|eYG1~gKV+AqOFRw{xvttmmyS$FGy5Ho~(X(BPi-d{-jrm=)U0nWA$B+bp zQk)C-jd^><0~*eg(3uid=(VO~BN%Sp@%E+_6B4Ld&<@p!s)-b8(-3umB>H?4 zENayZY|h>5vKNyMc6o}mJqiy$SM<>fmHFerGU*z@qR1Z9TZV_ESC6hPG!;;|7chE# z^6BCH(VWJqm1RlfoIwHkQL&Rs}7(z+iD_xB5}z3tMgOTi!& zP&#%nWz!!K7KfZP-=J)%H1lOgWQ>1AyL6E$&*Hi;JwX5nxkJL{n+%PYuQ6;=O$-5h zK!}eKsdKx*?9i0@*521Ei&thgw_^plzXj>qP%zNq5q|zWDZPN+?=GMwgJw#|uw~#3 zl-@;wGu+Zu6NPhyuww;hXHiHDO<<>NwBli%T+{JRr|m)dL0XORL}04FAO`iuS)mmY z`J5ZoVOi6#i>QPQetvxkn&1J{8zKIKY01O39yRN@$y8z>VfJSedJ0J!+NQHlMXbg= zBs!W?GFC2&wLuG=`@X(|LHM==Q^!rLLcAiD?N8u?Cfj9&ww{xhHxPOqiCzL%V-z-j zVy6pa3_d24BU)J4AAD79HJ}`17+9Trrai1vDttE}V3Jvai|a3X(Ue1nce=`3z%%(Z zqN+~?vP6ULsBS6%xN6=-{iMnmBJDEZX?RrzV)m)2Df>(BA)kE_dPSR{?TGSN zI6y*NDZwrPED~sAOoeFEys0bqJ#{yVQBGtfL!Utlkw=BOhAnZP?6Qi8#k)Fv08&i! z7U+t8O-xi|dR7ad0bvlaWFd^a2}TG+x#Q)-BR@`+Wq}fLc^s^!J)Sqmh7a0<4)Dt} zksxNP4|QSzx%=IfA6nc~3XNq&EP3@D_5EvNf`aMg<054qDT@p9^J1ZPrNrpEQmg!R z|BIMj!+VyZ+Rp6_l$cD$4o%Z1=@@>*ROx1K>!eb2{5K}APvDm;phzbSXT0=?jSRgt zBGT>%8h~)y*o}=q1Sie_IT}dPe&mt_0iJ~82%(h)xS5LhL0Ec}0!T)$+XJM#x(@>S zO+|e0Z+b6CbI3em_(}oL-gejFWLTs;Ku&ay_TroU?qTVycspih!i^kc8TcFo;GVkdiNhZ_ypu*@*pQhL$Q%Tk;_kc8=IDB6I3fZpH-DYu5?R}0X^QnYKN45 zz!gM(ECe}#`(WZhpxD5!Fl^QhUY58PmU9{!`K#KvfvqSsd4DVu(lsVw^YYIjJa}a^ zM(Mb;va+(1%Mt@4a_0;F)GOb8)5eH!VZ=aV2Xf4x#T42kw4Wx-<8;EppRGpJn{%=< z*vArTO+?piqGs{YV<0qDekHfSV#B{P!>ob3={fTi2;hixVe@7_!hxIsX7`STAFcBQ ze_Qp`_=l1s4loyH!Yvu5w5;Ox&w)6zAU2sW*Z@|DdvtIl`&MJWe=a=pkhLzR=5ADy zspvE;LP?N`#F8{v6GJF+(S(ZC{I6YO0v;;b4%}`5T+I!t)PN%d!0q-$w{y2Yebo*0 zurct&b>PuE4xsh!_xJ5B-V5w`104%2{DN19=>qpg&wU+pdL^)P2^?8o4qQSAs=UC|wC;(RTT?*ycOH zkq2P6a%au`e#_qlz?3xOY+il68Yqz}`1h3m{`$K8YSvTWR*0i%n^W&zS)LaQyk%l` z_MYGiH(mgfQ;)Q{-uaEmj==PqgfS^+eBBLL*gSp~ou}9SVV%xmx4tA`>AW*efBiq} z(oZ75vD7EsbK^xaW8=j3Y+{&v^9b-v94~7h_3~f&S55@#)RZnfp0wlAj&JU+)&F;D zz52b@=E?PXpv#JKS8^mT*LJK+UcQvwH)LI0_v6C*A0CHGYk!kGw=MUU*e+jSzssm& z$rE7gwSGMh>@I&^dwav~a$ev?uFosVj%)^&S{o7`HWgW4j-6vX=X%#Bo5PVY@AlmX zHf~(Bnl{O8-qH7Z{ggk)VnwYU-q~F4zwma9CUb=Uk(Yk|bN-i9&jYT1ecbzVU2!Nd zflk}M{m#xcz(uS(g@pXd@8<&@s3htb*&i8m{A>8_ij_|4bHatc#-G%9c;^1p3E&Pw zj3;Uf`OptePzxEj-WO;;q_I1tV45IMlf`={n_@Rm3mdX96{UR)ZkNMb(~rvzNm`m- zYEF##3u*mJenqs#^ZxRI*U$iG%M*+K@ht}~jRhU%0W6mZEsfoDcj-3Z{HKm>#jZU` zU@d|ZwIiOs+PX>i`LD<+bEHAdZy*q9H-2a%_uaP=T*3jvAYAe?ut!x{^eO4@k7W=w gQ)ZQ?@tOXuXJfM1DJ!NufdL3SUHx3vIVCg!06(oZng9R* literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/pref_salome_objbrowser.png b/doc/salome/gui/images/pref_salome_objbrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..9242935e8f27af06e169e8e1aa464ffe82accefd GIT binary patch literal 40011 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/pref_salome_occviewer.png b/doc/salome/gui/images/pref_salome_occviewer.png new file mode 100644 index 0000000000000000000000000000000000000000..953d07211d5d13f551845ab5aee5586292e2f05b GIT binary patch literal 61017 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 KR*vsv9#r+39GBN&UW}h*oI1J6Uze5XF}* zHh^+eQGF;fyOV!hF1xdU!1R|~1LowkURSA1hqdlmfh z22@=_C9fA9raMDNRTB->xGjx^6f&#>Hxx|ItPx<8Bn_5H8N%yU&}(IR+5^K3`Hi`b z$CoFI4azON+z+#}&)J0jG1tg(iMc6J#aFe(eH(FdQGu2ybf&(frVF#~Q&Ok&ui(S= zjmg>Q4=6~6_@qGzKJGm-JJuu)YaLcB1uzy>invjAFxYV#HEaL`C?BBE=_R*b@~62{ zOHw}5Q1Mk@E?vz^gBq~chbsWJC3ZO;ets3N=)~8*we7vfx(&6b?>%-`vrZ#q`hv3e z2SGjYx9Grf3Htq+&kn5@DSwQS(u*G;t5P#}1;fBNgbozX6-|_7wO(QY@jOt5N>Ob9 zX`gWXZ;HHXLekOOD+`RH=pv|PWhKrxRngA1|*s-==rWOQD2rO6bCGDG%q``*TvwzLA0 z^%JcY1JjOlojDU-%b_U?UP(zwtD>2f`92FTKNx6~VI)RzMJn6dw? z^4#aYqdm|WEupPQib{{>MuyEshfaq|N;+yeM2K4E;1>S@U`P%XA{U;tPGTfA7Z*Vs zelFQ%ts}N}tj1PbyZ+)eU+enZJ@Ky3F{ zp|g@(I!m0Z0}(bSKhs8*n%Jn=L=4*-jmhKHnaNGP%j1I;u(o4LigeT^%)Jolk~>Xz z0}YP?+@5=39>PBtaQ&L9)Qsja+VT|Wpy6g%TCu6D%zO(AllE|R$6EjM$Dr7wCM^R$ zL;q_&@?L$2g4(u%jfuFf;8t@H@G<%37wG`E>X`9#CyWf{c zwH@H*^bO&AX+s_MJZ4xGq|xgy-s96?s1UN@8F{9}z?2q|Ow>`I2U|67uiZrCP1qs@ zCTZ#3*~P(>#fss@SnQ4EaN%LcC^`_vcQ=wM?mfuX2wD+tlD0FQP0Q~~RVqMWya{o< z6gBigtpp{8_ZZEhk+>Ad(?>`tgLTdesHDv5M!>n;#InNyUVNAIMo{ zI5Q+m+JRrawt_jzp|@}oW+N$NaGsQ^8Ghj@>@9hfF^kU&S+l>TNr=Ti`ePiY|A zfE>L6cCLQXIy3jNZYXLyYLA8#8Eh;vHjA(=-))>tga5n&YAV9W+Lr3jTG2UC$cB;m zj%*s%(DGN3cgrv|jk7AsKUbJ_grE8~!M0YkRdZefG$?`1GRxmzguEGJVzC<@Ahwp~ z>g13WCtOn(O@8gUQGaaeEURrlL$LHpQ9zF`!AL+{P;b5OioUU4tAUe8zf6$9S3^a1 zTO$$aTw9a}@io-0y78T|R?OJ zEcfA#yhHC>?%Jy}4{{7CEW+NJd$UaTIygbfeP*#SR4}gM!>u(Nt~T~7xfvHtuzH%p zD6-5_rew^*qRD9WM|+{hLis7))}ssYK?G((&Yo#v@zkXl8Cg#&`wRETMO*9B&1TzP z(UDEzP>IzJlkxJz4#|m2dfPhDV>}9hyNg=c-s9?tYb`6{gws!=O8Bt+npvOWV)1F1 z^n3R899|Uj6JB(GoBMr+K|MLR?ns{>{uQ1bHayb*P?lKLXRiL@*33>d9PNpq>FECU2cDRY?&lvr zAM+o6;D70p{o_^t3*Onk=*fN_@PF={{o|eetDfxV=lXx}Y5u$K>|gX`|9E@<#n%w; zs{iao{rA%#Ug}j#N4LpaN$!N^-|m}#!6*MOI=?>;;_pZD&+q;pFE~n`?If>7TODho z9CI3L!z)wS;g65Fv}`!Y!_TxI;6#pI+)F<2Vkxmy)H|cMXa_w`?xn?6F%UN zERe(Boamt7DAMyBH#;iGU$Lksew1=tI@L1=2R6ALX%9olqiuoM zX?K=m4>W|NKjZqsYY>mSDPd1uQo#N(gmr5JEo{ZDYe9#l&R+gYK~( z9~cFHI5Eb-x{ZM$!>l3pJUrYo@pnsYdx_}YnV5_%WpRO0%$wj;r^&nH9-HHNeVOlz z&OyqMz=}(D2FtaH`1_>gK zVJ#XkKIjmL4&(?R78bxd{(!AmiKh(?wCricOTg{d2VKk_XbX#d+Gdl-4qjBbzq`Kn z6fN+a-iXfPk?avT#xD2Yjs7sy6A+-t;U>b#2|w_rU5*v6h)9Q6G_YYgX6y)@S0zZc z`-}MR!*zf+Ke|;aKeFjCG~T<2inP7HJ^+bbaw^n_Ty#gV5YbV>_!p`l3(Xh+o-&>_ zhGQwlQU)K6cGb1da=%Xv6&(L+D+rYI1-Jy@qJ7xny0Ql+SZAcJq_HA{I{&h8vWn2d zUPbLC*c-+0W6;|x0N!#^P#v1T{&Km&Hn(VRR*~F;VcObbdhD%E9bn2H@e7v@(@EZMZ-AF-?k4B4%6Rn(YU&;0Ksa7{b%}5!h-l!+JzJ>sjM@ z#Sv+_;&;0QQ%lE!FY!|++!Q_sS=oI{4b1>CA(ytY#6=5To|ZHHsU`VXztR> zg6d;)(Irduf>a8{)`3Q`015u|1F-$*Us2uX82*bOKSG0teoXRVE-vMdBcce&#(&OPk0O zGD%d^2(Og|1|_+r!r60xi;y-S$f(jbd(aMjK?E@MM|c__V}y|gC0}c%Z5DbW8Sy%) zxzEpVCle=!TT1#M4AAmB>+eOjU&48Jx>S}uWsW5X?qa3$aK*japRTY%qtjMbf4Q@> z7QF+6h+7GGZl6;2ntA$`!$tb-C0v}F&1{at#9Pc$==*^NWiIF9+(fkJIM7oj zxI9~VXRV=YV;WqdxYX0C<+N(6Q^HlX#Cn$PyOOl(yyu?idgNIXY-ZpDewZJW30ANM z6?;K9VBCF<*cX6qmnn;PK{z@Wh+(iIMj;kml7|d(APjmYXsAFy2B0%;XMpRHl^@vr zis-wm^ut2;DTPijnk=4|`#^N1kmvhD;xDb9tSLd)I=iT4pJ)9cdt^SxO9F=ZtPbGD zz#&rs>pHKyc&a@MahfnutUxr>Zs5%Ub3I-%RO;ZE!{_30fRnt}lVYi1aLM4)%jR2| z3@P~lLy%a=HYjIOEt(c``fQtFNZ>IpCzm&{Ps!Z9*wPCwkK+JJC<7^%^yqGS7#H{8 zSIp3Q7cPw#*p6mYXiEx^%%!#3-KR`tmM#R_eU(bkHW#LY5e0FOlol7^h|7Kpkgnx=n$>R=7tFz?h+zK*g|@M0>5cU{ueIc;OxREFM_A%;P3vMkNL2 z4m+?)LUlQiQkR4GUXJU8Q6ur}ef$#SX8s^IA5)QT+{%KOnGAuO z>^;FuAa{ZoK@WlDyNt1|KbEc0povsDIm|7r3s%3@>{N!IJ8^v>2X#kM#EsLeHg8uE zJ1lX2njwA%un_!GPb+XNmoS<1>9i_H`#fuIN5yMi?=CzF2aM1aMv;3Qp3VfoK~1)i z`+#UgCb$Xt`SR!U47a4QfOBNqAkS3hRI=1{BkKq#S8<@;HDH@HLmdEDtNm1GtRAqL z<$;YE3l5oR|F!1FwXr7jVLb@gz@NJZBgH;=P5Oje>UopvvhL=Pt?Vf|kY23c=%Qnp7@K8y`)-)|Dvbd?@I|DL#Az$QkedS;3WsEWWM z^qsmK@F5qD-SZC<4@C769L}XB8r^~DX2R*IbiqW6xU5x(>6Ysj)}6FA)(qROu%S-D zgE@_bc~iaLxi&j}(=r73My&6;8YQK-N^?hFSNCSg6l=#-@J@dDb&En|s)V4;m$%l+ z)CjMFLH*P*6s9i%7KUHe=5X_+Fs>83wv(h&$abdZ*@XfbB`H7+q>H8i8{En^Oe#00 z=Pw?U>}x-r6UkdSD(Qidbl}KZeI}G`zU#cEzOXOJbqzdobD|1K^$_K%dDNQOr)Qre z>$0i$L@a%iX1r8j0=h(}L+m^q<8w zxq4`VKo#DKU#Tbw3QO3Bo}qc?&lck!eMYmcv1ivDfz6c0ilz{cwz9n(WDi_McnqDAyo%h* Ilb3J(KU0m@Pyhe` literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/pref_salome_plot2dviewer.png b/doc/salome/gui/images/pref_salome_plot2dviewer.png new file mode 100644 index 0000000000000000000000000000000000000000..f427aee9d259f95a88e5c32d0c7861b8c695f6df GIT binary patch literal 52728 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