From aa05f2a1b23a54321ea7248ae9ac3463652c734e Mon Sep 17 00:00:00 2001 From: jfa Date: Sat, 6 May 2006 08:40:48 +0000 Subject: [PATCH] Join modifications from branch OCC_debug_for_3_2_0b1 --- INSTALL | 4 +- Makefile.in | 42 +- adm_local/Makefile.in | 18 + adm_local/unix/config_files/check_GUI.m4 | 52 +- .../unix/config_files/check_corba_in_GUI.m4 | 51 +- adm_local/unix/config_files/check_opengl.m4 | 198 ++- adm_local/unix/config_files/check_pyqt.m4 | 35 +- adm_local/unix/config_files/check_qt.m4 | 17 +- adm_local/unix/config_files/check_qwt.m4 | 5 +- adm_local/unix/config_files/check_sip.m4 | 37 +- adm_local/unix/config_files/check_vtk.m4 | 31 +- adm_local/unix/make_commence.in | 43 +- adm_local/unix/make_conclude.in | 24 +- bin/VERSION | 2 +- bin/runLightSalome.sh | 18 + build_configure | 6 +- configure.in.base | 4 +- doc/Makefile.in | 18 + doc/salome/Makefile.in | 18 + doc/salome/gui/KERNEL/dump_study.htm | 167 ++ doc/salome/gui/KERNEL/geom_preferences.htm | 26 +- doc/salome/gui/KERNEL/image77.gif | Bin 1022 -> 0 bytes doc/salome/gui/KERNEL/image78.gif | Bin 1011 -> 0 bytes doc/salome/gui/KERNEL/image79.gif | Bin 1042 -> 0 bytes doc/salome/gui/KERNEL/image81.gif | Bin 988 -> 0 bytes doc/salome/gui/KERNEL/image82.gif | Bin 983 -> 0 bytes doc/salome/gui/KERNEL/image83.gif | Bin 1050 -> 0 bytes doc/salome/gui/KERNEL/image84.gif | Bin 1042 -> 0 bytes doc/salome/gui/KERNEL/image86.gif | Bin 1017 -> 0 bytes doc/salome/gui/KERNEL/image88.gif | Bin 1000 -> 0 bytes doc/salome/gui/KERNEL/image89.gif | Bin 1020 -> 0 bytes doc/salome/gui/KERNEL/image90.gif | Bin 1033 -> 0 bytes doc/salome/gui/KERNEL/image91.gif | Bin 1010 -> 0 bytes doc/salome/gui/KERNEL/image92.gif | Bin 1025 -> 0 bytes .../gui/KERNEL/{image80.gif => image94.gif} | Bin 960 -> 910 bytes ...on_to_iapp.htm => introduction_to_gui.htm} | 110 +- doc/salome/gui/KERNEL/kernel.log | 56 +- .../kernel/about_salome_pro_architecture.htm | 23 +- .../kernel/about_salome_pro_help_system.htm | 4 +- .../KERNEL/kernel/creating_a_new_study.htm | 14 +- .../kernel/displaying_hiding_toolbars.htm | 133 -- .../gui/KERNEL/kernel/displaying_studies.htm | 64 +- .../gui/KERNEL/kernel/editing_studies.htm | 6 +- .../getting_properties_of_the_study.htm | 10 +- .../gui/KERNEL/kernel/getting_started2.htm | 8 +- doc/salome/gui/KERNEL/kernel/introduction.htm | 6 +- .../kernel/introduction_to_salome_pro.htm | 21 +- .../gui/KERNEL/kernel/opening_studies.htm | 6 +- .../gui/KERNEL/kernel/running_salome_pro.htm | 12 +- .../gui/KERNEL/kernel/salome_pro_desktop.htm | 49 +- .../gui/KERNEL/kernel/saving_a_study.htm | 70 +- .../gui/KERNEL/kernel/setting_preferences.htm | 248 +-- .../KERNEL/kernel/using_catalog_generator.htm | 6 +- .../KERNEL/kernel/using_object_browser.htm | 17 +- .../gui/KERNEL/kernel/using_registry.htm | 17 +- doc/salome/gui/KERNEL/mesh_preferences.htm | 180 +- doc/salome/gui/KERNEL/pics/dumpstudy.png | Bin 0 -> 22049 bytes doc/salome/gui/KERNEL/pics/loadscript.png | Bin 0 -> 19952 bytes .../gui/KERNEL/pics/meshpreferences.png | Bin 23138 -> 0 bytes doc/salome/gui/KERNEL/pics/multidesktop.png | Bin 38343 -> 0 bytes doc/salome/gui/KERNEL/pics/neo-view1.png | Bin 71628 -> 0 bytes doc/salome/gui/KERNEL/pics/plot1.png | Bin 22170 -> 0 bytes doc/salome/gui/KERNEL/pics/pref1.png | Bin 22045 -> 0 bytes doc/salome/gui/KERNEL/pics/pref2.png | Bin 18125 -> 0 bytes doc/salome/gui/KERNEL/pics/pref4.png | Bin 15601 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies10.png | Bin 29048 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies11.png | Bin 27272 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies5.png | Bin 16850 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies7.png | Bin 18007 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies8.png | Bin 19542 -> 0 bytes doc/salome/gui/KERNEL/pics/preferencies9.png | Bin 28689 -> 0 bytes doc/salome/gui/KERNEL/pics/propm1.png | Bin 0 -> 26608 bytes doc/salome/gui/KERNEL/pics/propm2.png | Bin 0 -> 19879 bytes doc/salome/gui/KERNEL/pics/propm3.png | Bin 0 -> 21023 bytes doc/salome/gui/KERNEL/pics/propm4.png | Bin 0 -> 30478 bytes doc/salome/gui/KERNEL/pics/propp1.png | Bin 0 -> 42244 bytes doc/salome/gui/KERNEL/pics/propp2.png | Bin 0 -> 31644 bytes doc/salome/gui/KERNEL/pics/propp3.png | Bin 0 -> 48136 bytes doc/salome/gui/KERNEL/pics/propp6.png | Bin 0 -> 33571 bytes doc/salome/gui/KERNEL/pics/propp7.png | Bin 0 -> 31974 bytes doc/salome/gui/KERNEL/pics/propp8.png | Bin 0 -> 21619 bytes doc/salome/gui/KERNEL/pics/props1.png | Bin 0 -> 27250 bytes doc/salome/gui/KERNEL/pics/props2.png | Bin 0 -> 36854 bytes doc/salome/gui/KERNEL/pics/props3.png | Bin 0 -> 18950 bytes doc/salome/gui/KERNEL/pics/props4.png | Bin 0 -> 20723 bytes doc/salome/gui/KERNEL/pics/props5.png | Bin 0 -> 18762 bytes .../gui/KERNEL/pics/viewerspreferences.png | Bin 32191 -> 0 bytes .../gui/KERNEL/post-pro_preferences.htm | 541 +++++- .../gui/KERNEL/select_color_and_font.htm | 124 ++ doc/salome/gui/KERNEL/setting_preferences.htm | 52 +- .../gui/KERNEL/supervisor_preferences.htm | 73 - doc/salome/gui/KERNEL/viewers.htm | 212 --- doc/salome/gui/KERNEL/whdata/whftdata0.htm | 7 +- doc/salome/gui/KERNEL/whdata/whfts.htm | 4 +- doc/salome/gui/KERNEL/whdata/whfwdata0.htm | 1512 +++++++++-------- doc/salome/gui/KERNEL/whdata/whtdata0.htm | 16 +- doc/salome/gui/KERNEL/whgdata/whlstf0.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstf1.htm | 4 +- doc/salome/gui/KERNEL/whgdata/whlstf10.htm | 9 +- doc/salome/gui/KERNEL/whgdata/whlstf11.htm | 48 + doc/salome/gui/KERNEL/whgdata/whlstf2.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstf3.htm | 10 +- doc/salome/gui/KERNEL/whgdata/whlstf4.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstf5.htm | 12 +- doc/salome/gui/KERNEL/whgdata/whlstf6.htm | 6 +- doc/salome/gui/KERNEL/whgdata/whlstf7.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstf8.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstf9.htm | 8 +- doc/salome/gui/KERNEL/whgdata/whlstfl0.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl1.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl10.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl11.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl12.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl13.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl14.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl15.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl16.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl17.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl18.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl19.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl2.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl20.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl21.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl22.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl23.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl24.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl25.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl3.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl5.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl6.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl7.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl8.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstfl9.htm | 2 +- doc/salome/gui/KERNEL/whgdata/whlstt3.htm | 4 +- doc/salome/gui/KERNEL/whgdata/whlstt4.htm | 7 +- doc/salome/gui/KERNEL/whgdata/whlstt5.htm | 9 +- doc/salome/gui/KERNEL/whgdata/whnvl32.htm | 2 +- doc/salome/gui/KERNEL/whskin_info.htm | 2 +- doc/salome/gui/KERNEL/whxdata/whftdata0.xml | 7 +- doc/salome/gui/KERNEL/whxdata/whfts.xml | 4 +- doc/salome/gui/KERNEL/whxdata/whfwdata0.xml | 1512 +++++++++-------- doc/salome/gui/KERNEL/whxdata/whtdata0.xml | 12 +- doc/salome/gui/Makefile.in | 4 +- doc/salome/tui/Makefile.in | 17 + doc/salome/tui/SUIT/doxyfile | 48 +- doc/salome/tui/SUIT/sources/doxygen.css | 149 ++ doc/salome/tui/SUIT/sources/footer.html | 5 + doc/salome/tui/SUIT/sources/myheader.html | 12 - idl/Makefile.in | 67 - idl/SALOME_Session.idl | 113 -- src/CAF/CAF_Application.cxx | 35 +- src/CAF/CAF_Application.h | 6 + src/CAF/CAF_Operation.cxx | 13 +- src/CAF/CAF_Operation.h | 6 + src/CAF/CAF_Study.cxx | 78 +- src/CAF/CAF_Study.h | 6 + src/CAF/CAF_Tools.cxx | 6 + src/CAF/CAF_Tools.h | 4 + src/CAF/Makefile.in | 18 + src/CAF/resources/CAF_images.po | 18 + src/CAF/resources/CAF_msg_en.po | 18 + src/CAM/CAM_Application.cxx | 7 +- src/CAM/CAM_Application.h | 7 + src/CAM/CAM_DataModel.cxx | 6 +- src/CAM/CAM_DataModel.h | 5 + src/CAM/CAM_DataObject.h | 4 + src/CAM/CAM_Module.cxx | 6 +- src/CAM/CAM_Study.h | 6 + src/CAM/Makefile.in | 18 + src/CAM/resources/CAM_msg_en.po | 21 +- src/DDS/DDS.h | 18 + src/DDS/DDS_DicGroup.cxx | 18 + src/DDS/DDS_DicGroup.h | 18 + src/DDS/DDS_DicItem.cxx | 18 + src/DDS/DDS_DicItem.h | 18 + src/DDS/DDS_Dictionary.cxx | 18 + src/DDS/DDS_Dictionary.h | 18 + src/DDS/DDS_KeyWords.cxx | 18 + src/DDS/DDS_KeyWords.h | 18 + src/DDS/Makefile.in | 18 + src/Event/Makefile.in | 2 +- src/Event/SALOME_Event.cxx | 34 +- src/Event/SALOME_Event.hxx | 69 +- src/GLViewer/GLViewer_AspectLine.cxx | 77 +- src/GLViewer/GLViewer_AspectLine.h | 6 +- src/GLViewer/GLViewer_BaseDrawers.cxx | 63 +- src/GLViewer/GLViewer_BaseDrawers.h | 17 +- src/GLViewer/GLViewer_BaseObjects.cxx | 363 +++- src/GLViewer/GLViewer_BaseObjects.h | 23 +- src/GLViewer/GLViewer_Compass.cxx | 99 +- src/GLViewer/GLViewer_Compass.h | 5 +- src/GLViewer/GLViewer_Context.cxx | 198 ++- src/GLViewer/GLViewer_Context.h | 17 +- src/GLViewer/GLViewer_CoordSystem.cxx | 106 +- src/GLViewer/GLViewer_CoordSystem.h | 4 + src/GLViewer/GLViewer_Drawer.cxx | 341 ++-- src/GLViewer/GLViewer_Drawer.h | 28 +- src/GLViewer/GLViewer_Geom.cxx | 86 +- src/GLViewer/GLViewer_Grid.cxx | 71 + src/GLViewer/GLViewer_Group.cxx | 74 +- src/GLViewer/GLViewer_MimeSource.cxx | 35 +- src/GLViewer/GLViewer_MimeSource.h | 6 +- src/GLViewer/GLViewer_Object.cxx | 43 +- src/GLViewer/GLViewer_Object.h | 8 +- src/GLViewer/GLViewer_Selector.cxx | 7 - src/GLViewer/GLViewer_Selector.h | 12 +- src/GLViewer/GLViewer_Selector2d.cxx | 49 +- src/GLViewer/GLViewer_Selector2d.h | 11 +- src/GLViewer/GLViewer_Text.cxx | 30 +- src/GLViewer/GLViewer_Text.h | 7 +- src/GLViewer/GLViewer_ToolTip.cxx | 42 +- src/GLViewer/GLViewer_ToolTip.h | 10 +- src/GLViewer/GLViewer_Tools.cxx | 169 +- src/GLViewer/GLViewer_Tools.h | 23 +- src/GLViewer/GLViewer_ViewFrame.cxx | 83 +- src/GLViewer/GLViewer_ViewFrame.h | 11 +- src/GLViewer/GLViewer_ViewManager.cxx | 8 +- src/GLViewer/GLViewer_ViewPort.cxx | 21 +- src/GLViewer/GLViewer_ViewPort.h | 13 +- src/GLViewer/GLViewer_ViewPort2d.cxx | 129 ++ src/GLViewer/GLViewer_ViewPort2d.h | 2 +- src/GLViewer/GLViewer_Viewer.cxx | 30 +- src/GLViewer/GLViewer_Viewer.h | 14 +- src/GLViewer/GLViewer_Viewer2d.cxx | 212 ++- src/GLViewer/GLViewer_Viewer2d.h | 19 +- src/GLViewer/GLViewer_Widget.cxx | 245 +-- src/GLViewer/GLViewer_Widget.h | 7 +- src/GLViewer/Makefile.in | 20 +- src/GLViewer/resources/GLViewer_msg_en.po | 3 - src/LightApp/LightApp_AboutDlg.h | 8 +- src/LightApp/LightApp_Application.cxx | 522 ++++-- src/LightApp/LightApp_Application.h | 7 + src/LightApp/LightApp_DataModel.cxx | 110 +- src/LightApp/LightApp_DataModel.h | 3 +- src/LightApp/LightApp_DataObject.cxx | 9 +- src/LightApp/LightApp_Dialog.cxx | 470 ++--- src/LightApp/LightApp_Dialog.h | 10 +- src/LightApp/LightApp_Displayer.cxx | 63 +- src/LightApp/LightApp_Displayer.h | 5 + src/LightApp/LightApp_Driver.cxx | 89 +- src/LightApp/LightApp_GLSelector.cxx | 14 + src/LightApp/LightApp_GLSelector.h | 4 + src/LightApp/LightApp_HDFDriver.cxx | 14 +- src/LightApp/LightApp_HDFDriver.h | 18 + src/LightApp/LightApp_Module.cxx | 19 +- src/LightApp/LightApp_Module.h | 6 +- src/LightApp/LightApp_ModuleDlg.h | 5 + src/LightApp/LightApp_NameDlg.cxx | 3 + src/LightApp/LightApp_NameDlg.h | 8 +- src/LightApp/LightApp_OBFilter.h | 4 + src/LightApp/LightApp_OBSelector.cxx | 1 + src/LightApp/LightApp_OBSelector.h | 4 + src/LightApp/LightApp_OCCSelector.h | 4 + src/LightApp/LightApp_Operation.cxx | 4 - src/LightApp/LightApp_Operation.h | 11 +- src/LightApp/LightApp_Preferences.cxx | 2 +- src/LightApp/LightApp_Preferences.h | 5 + src/LightApp/LightApp_PreferencesDlg.cxx | 28 +- src/LightApp/LightApp_PreferencesDlg.h | 5 + src/LightApp/LightApp_Selection.cxx | 6 +- src/LightApp/LightApp_Selection.h | 8 +- src/LightApp/LightApp_SelectionMgr.h | 4 + src/LightApp/LightApp_ShowHideOp.cxx | 9 + src/LightApp/LightApp_ShowHideOp.h | 6 + src/LightApp/LightApp_Study.cxx | 159 +- src/LightApp/LightApp_Study.h | 5 + src/LightApp/LightApp_SwitchOp.cxx | 11 - src/LightApp/LightApp_SwitchOp.h | 13 - src/LightApp/LightApp_UpdateFlags.h | 10 +- src/LightApp/LightApp_VTKSelector.cxx | 96 +- src/LightApp/LightApp_VTKSelector.h | 29 +- src/LightApp/Makefile.in | 22 +- src/LightApp/resources/LightApp.xml | 80 +- src/LightApp/resources/LightApp_msg_en.po | 34 +- src/LogWindow/LogWindow.cxx | 57 +- src/LogWindow/LogWindow.h | 4 + src/LogWindow/Makefile.in | 18 + src/OBJECT/Handle_SALOME_AISObject.hxx | 8 + src/OBJECT/Handle_SALOME_AISShape.hxx | 8 + src/OBJECT/Handle_SALOME_Filter.hxx | 8 + .../Handle_SALOME_InteractiveObject.hxx | 8 + src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx | 8 + src/OBJECT/Handle_SALOME_TypeFilter.hxx | 8 + src/OBJECT/Makefile.in | 18 + src/OBJECT/SALOME_AISShape.cxx | 8 +- ...DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx | 25 +- src/OBJECT/SALOME_InteractiveObject.cxx | 51 + src/OBJECT/SALOME_ListIO.hxx | 4 + src/OBJECT/SALOME_ListNodeOfListIO.hxx | 5 +- src/OBJECT/SALOME_ListNodeOfListIO_0.cxx | 26 +- src/OBJECT/SALOME_TypeFilter.cxx | 8 + src/OCCViewer/Makefile.in | 18 + src/OCCViewer/OCCViewer_ClippingDlg.cxx | 182 +- src/OCCViewer/OCCViewer_ClippingDlg.h | 34 +- .../OCCViewer_CreateRestoreViewDlg.cxx | 32 + src/OCCViewer/OCCViewer_VService.cxx | 22 - src/OCCViewer/OCCViewer_ViewManager.cxx | 18 +- src/OCCViewer/OCCViewer_ViewModel.cxx | 179 +- src/OCCViewer/OCCViewer_ViewPort.cxx | 13 +- src/OCCViewer/OCCViewer_ViewPort.h | 4 + src/OCCViewer/OCCViewer_ViewPort3d.cxx | 13 +- src/OCCViewer/OCCViewer_ViewWindow.cxx | 232 ++- src/OCCViewer/OCCViewer_ViewWindow.h | 3 + src/OCCViewer/resources/OCCViewer_msg_en.po | 4 - src/ObjBrowser/Makefile.in | 18 + src/ObjBrowser/OB_Browser.cxx | 420 ++++- src/ObjBrowser/OB_Browser.h | 7 + src/ObjBrowser/OB_Filter.cxx | 6 + src/ObjBrowser/OB_Filter.h | 5 + src/ObjBrowser/OB_ListItem.cxx | 109 +- src/ObjBrowser/OB_ListItem.h | 18 +- src/ObjBrowser/OB_ListView.cxx | 74 + src/ObjBrowser/OB_ListView.h | 5 + src/ObjBrowser/resources/OB_msg_en.po | 18 + src/Plot2d/Makefile.in | 18 + src/Plot2d/Plot2d_Curve.cxx | 3 + src/Plot2d/Plot2d_Prs.cxx | 60 +- src/Plot2d/Plot2d_SetupCurveDlg.h | 8 +- src/Plot2d/Plot2d_ViewFrame.cxx | 38 +- src/Plot2d/Plot2d_ViewManager.cxx | 23 + src/Plot2d/Plot2d_ViewModel.cxx | 59 +- src/Plot2d/Plot2d_ViewWindow.cxx | 111 +- src/Plot2d/resources/Plot2d_images.po | 18 + src/Plot2d/resources/Plot2d_msg_en.po | 21 +- src/Prs/Makefile.in | 18 + src/Prs/SALOME_Prs.cxx | 240 +-- src/Prs/SALOME_Prs.h | 76 +- src/PyInterp/PyInterp_Dispatcher.cxx | 12 - src/PyInterp/PyInterp_Dispatcher.h | 9 - src/PyInterp/PyInterp_base.cxx | 2 +- src/PythonConsole/Makefile.in | 18 + src/PythonConsole/PythonConsole_PyConsole.cxx | 22 +- src/PythonConsole/PythonConsole_PyEditor.cxx | 7 +- src/PythonConsole/PythonConsole_PyInterp.cxx | 14 +- src/QDS/Makefile.in | 18 + src/QDS/QDS.cxx | 18 + src/QDS/QDS.h | 18 + src/QDS/QDS_CheckBox.cxx | 18 + src/QDS/QDS_CheckBox.h | 18 + src/QDS/QDS_ComboBox.cxx | 18 + src/QDS/QDS_ComboBox.h | 18 + src/QDS/QDS_Datum.cxx | 18 + src/QDS/QDS_Datum.h | 18 + src/QDS/QDS_LineEdit.cxx | 18 + src/QDS/QDS_LineEdit.h | 18 + src/QDS/QDS_RadioBox.cxx | 18 + src/QDS/QDS_RadioBox.h | 18 + src/QDS/QDS_SpinBox.cxx | 18 + src/QDS/QDS_SpinBox.h | 18 + src/QDS/QDS_SpinBoxDbl.cxx | 18 + src/QDS/QDS_SpinBoxDbl.h | 18 + src/QDS/QDS_TextEdit.cxx | 18 + src/QDS/QDS_TextEdit.h | 18 + src/QDS/QDS_Validator.cxx | 18 + src/QDS/QDS_Validator.h | 18 + src/QDS/resources/QDS_msg_en.po | 18 + src/Qtx/Makefile.in | 27 +- src/Qtx/Qtx.h | 4 + src/Qtx/QtxAction.cxx | 241 ++- src/Qtx/QtxAction.h | 7 +- src/Qtx/QtxActionMenuMgr.cxx | 499 +++++- src/Qtx/QtxActionMenuMgr.h | 21 + src/Qtx/QtxActionMgr.cxx | 156 +- src/Qtx/QtxActionMgr.h | 20 + src/Qtx/QtxActionToolMgr.cxx | 193 ++- src/Qtx/QtxActionToolMgr.h | 16 + src/Qtx/QtxColorScale.cxx | 526 +++--- src/Qtx/QtxColorScale.h | 4 + src/Qtx/QtxComboBox.cxx | 53 +- src/Qtx/QtxDblSpinBox.cxx | 144 +- src/Qtx/QtxDblSpinBox.h | 4 + src/Qtx/QtxDblValidator.cxx | 15 + src/Qtx/QtxDialog.cxx | 88 +- src/Qtx/QtxDockAction.cxx | 12 + src/Qtx/QtxDockWindow.cxx | 77 +- src/Qtx/QtxGroupBox.cxx | 85 + src/Qtx/QtxIntSpinBox.cxx | 38 + src/Qtx/QtxListAction.cxx | 85 +- src/Qtx/QtxListAction.h | 8 +- src/Qtx/QtxListBox.cxx | 119 ++ src/Qtx/QtxListOfOperations.cxx | 134 +- src/Qtx/QtxListOfOperations.h | 13 +- src/Qtx/QtxListResourceEdit.cxx | 455 ++++- src/Qtx/QtxListResourceEdit.h | 116 +- src/Qtx/QtxListView.cxx | 92 + src/Qtx/QtxLogoMgr.cxx | 13 + src/Qtx/QtxMainWindow.cxx | 74 +- src/Qtx/QtxMenuButton.cxx | 103 +- src/Qtx/QtxOperations.cxx | 21 +- src/Qtx/QtxOperations.h | 4 - src/Qtx/QtxParser.cxx | 222 +-- src/Qtx/QtxParser.h | 58 +- src/Qtx/QtxPathDialog.cxx | 242 ++- src/Qtx/QtxPopupMenu.cxx | 78 +- src/Qtx/QtxPopupMgr.cxx | 326 ++-- src/Qtx/QtxPopupMgr.h | 4 - src/Qtx/QtxResourceEdit.cxx | 255 ++- src/Qtx/QtxResourceEdit.h | 10 +- src/Qtx/QtxResourceMgr.cxx | 319 +++- src/Qtx/QtxResourceMgr.h | 3 +- src/Qtx/QtxSplash.cxx | 507 ++++++ src/Qtx/QtxSplash.h | 114 ++ src/Qtx/QtxStdOperations.cxx | 299 ++-- src/Qtx/QtxStdOperations.h | 49 +- src/Qtx/QtxTable.cxx | 85 + src/Qtx/QtxToolBar.cxx | 72 +- src/Qtx/QtxToolTip.cxx | 55 + src/Qtx/QtxWorkspaceAction.cxx | 111 ++ src/Qtx/QtxWorkstack.cxx | 417 ++++- src/Qtx/QtxWorkstackAction.cxx | 99 ++ src/RegistryDisplay/HelpWindow.cxx | 3 + src/RegistryDisplay/IntervalWindow.cxx | 16 +- src/RegistryDisplay/Makefile.in | 4 +- src/RegistryDisplay/RegWidget.cxx | 27 +- src/ResExporter/Makefile.in | 18 + src/ResExporter/ResourceExporter.cxx | 80 +- src/SALOME_PY/Makefile.in | 2 +- src/SALOME_PY/SalomePy.cxx | 18 +- src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in | 2 +- .../SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx | 504 ++++-- .../SALOME_PYQT_GUI/SALOME_PYQT_Module.h | 12 +- .../SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h | 8 - src/SALOME_PYQT/SalomePyQt/Makefile.in | 2 +- src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx | 140 +- src/SALOME_PYQT/SalomePyQt/SalomePyQt.h | 8 - src/SALOME_SWIG/Help.py | 141 -- src/SALOME_SWIG/Makefile.in | 4 +- src/SALOME_SWIG/PyInterp.py | 102 -- src/SALOME_SWIG/SALOMEGUI_Swig.cxx | 115 +- src/SALOME_SWIG/SALOMEGUI_shared_modules.py | 18 + src/SALOME_SWIG/salome.py | 157 -- src/SALOME_SWIG/salome_test.py | 486 ------ src/SALOME_SWIG/supervisionexample.py | 18 + src/SALOME_SWIG/supervisiongeomexample.py | 18 + src/SOCC/Makefile.in | 18 + src/SOCC/SOCC_Prs.cxx | 51 +- src/SOCC/SOCC_ViewModel.cxx | 1323 ++++++++------- src/SOCC/SOCC_ViewWindow.cxx | 18 +- src/SOCC/SOCC_ViewWindow.h | 2 +- src/SPlot2d/Makefile.in | 30 +- src/SPlot2d/SPlot2d_Curve.cxx | 23 + src/SPlot2d/SPlot2d_Prs.cxx | 24 +- src/SPlot2d/SPlot2d_ViewModel.cxx | 59 +- src/SPlot2d/SPlot2d_msg_en.po | 18 + src/STD/Makefile.in | 18 + src/STD/STD_Application.cxx | 26 +- src/STD/STD_CloseDlg.cxx | 3 - src/STD/resources/STD_images.po | 18 + src/STD/resources/STD_msg_en.po | 36 +- src/SUIT/Makefile.in | 18 + src/SUIT/SUIT_Accel.cxx | 8 +- src/SUIT/SUIT_Accel.h | 6 +- src/SUIT/SUIT_Application.cxx | 225 +++ src/SUIT/SUIT_Convertor.h | 1 - src/SUIT/SUIT_DataObject.cxx | 6 + src/SUIT/SUIT_DataObject.h | 11 +- src/SUIT/SUIT_DataObjectIterator.h | 10 +- src/SUIT/SUIT_DataOwner.cxx | 76 +- src/SUIT/SUIT_DataOwner.h | 6 + src/SUIT/SUIT_Desktop.h | 5 + src/SUIT/SUIT_FileDlg.cxx | 90 +- src/SUIT/SUIT_FileValidator.h | 4 + src/SUIT/SUIT_MessageBox.cxx | 13 +- src/SUIT/SUIT_MessageBox.h | 11 +- src/SUIT/SUIT_Operation.cxx | 33 +- src/SUIT/SUIT_Operation.h | 12 +- src/SUIT/SUIT_ResourceMgr.cxx | 49 +- src/SUIT/SUIT_ResourceMgr.h | 4 +- src/SUIT/SUIT_Selector.h | 7 + src/SUIT/SUIT_Session.cxx | 4 +- src/SUIT/SUIT_Study.cxx | 7 +- src/SUIT/SUIT_Tools.h | 4 + src/SUIT/SUIT_TreeSync.h | 111 +- src/SUIT/SUIT_ViewManager.cxx | 2 +- src/SUIT/SUIT_ViewModel.cxx | 1 - src/SUIT/SUIT_ViewWindow.cxx | 35 +- src/SUIT/SUIT_ViewWindow.h | 5 +- src/SUIT/resources/SUIT_images.po | 18 + src/SUIT/resources/SUIT_msg_en.po | 27 +- src/SUIT/utilities.h | 8 +- src/SUITApp/Makefile.in | 18 + src/SUITApp/SUITApp.cxx | 63 +- src/SUITApp/SUITApp_Application.cxx | 19 + src/SUITApp/resources/SUITApp_msg_en.po | 18 + src/SUPERVGraph/Makefile.in | 20 +- src/SUPERVGraph/SUPERVGraph.cxx | 6 + src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx | 59 +- src/SUPERVGraph/SUPERVGraph_ViewManager.cxx | 14 + src/SUPERVGraph/SUPERVGraph_ViewModel.cxx | 10 + src/SVTK/Makefile.in | 29 +- src/SVTK/SALOME_Actor.cxx | 173 +- src/SVTK/SALOME_Actor.h | 6 +- src/SVTK/SVTK.h | 35 +- src/SVTK/SVTK_Actor.cxx | 25 +- src/SVTK/SVTK_CubeAxesActor2D.cxx | 57 +- src/SVTK/SVTK_CubeAxesActor2D.h | 3 +- src/SVTK/SVTK_CubeAxesDlg.cxx | 140 +- src/SVTK/SVTK_CubeAxesDlg.h | 14 +- src/SVTK/SVTK_DeviceActor.cxx | 137 +- src/SVTK/SVTK_DeviceActor.h | 27 +- src/SVTK/SVTK_DialogBase.cxx | 84 + src/SVTK/SVTK_DialogBase.h | 60 + src/SVTK/SVTK_FontWidget.cxx | 34 +- .../SVTK_GenericRenderWindowInteractor.cxx | 38 +- src/SVTK/SVTK_GenericRenderWindowInteractor.h | 8 +- src/SVTK/SVTK_InteractorStyle.cxx | 281 +-- src/SVTK/SVTK_InteractorStyle.h | 5 +- src/SVTK/SVTK_MainWindow.cxx | 242 ++- src/SVTK/SVTK_MainWindow.h | 31 +- src/SVTK/SVTK_NonIsometricDlg.cxx | 92 +- src/SVTK/SVTK_NonIsometricDlg.h | 13 +- src/SVTK/SVTK_Prs.cxx | 43 +- src/SVTK/SVTK_RectPicker.cxx | 71 +- src/SVTK/SVTK_RectPicker.h | 30 +- src/SVTK/SVTK_RenderWindowInteractor.cxx | 204 ++- src/SVTK/SVTK_RenderWindowInteractor.h | 6 +- src/SVTK/SVTK_Renderer.cxx | 143 +- src/SVTK/SVTK_Renderer.h | 21 +- src/SVTK/SVTK_Selector.cxx | 128 +- src/SVTK/SVTK_Selector.h | 4 +- src/SVTK/SVTK_SpaceMouse.cxx | 26 +- src/SVTK/SVTK_Trihedron.cxx | 10 +- src/SVTK/SVTK_UpdateRateDlg.cxx | 380 +++++ src/SVTK/SVTK_UpdateRateDlg.h | 93 + src/SVTK/SVTK_View.cxx | 189 ++- src/SVTK/SVTK_View.h | 22 +- src/SVTK/SVTK_ViewManager.cxx | 20 +- src/SVTK/SVTK_ViewManager.h | 2 + src/SVTK/SVTK_ViewModel.cxx | 112 +- src/SVTK/SVTK_ViewModelBase.h | 18 + src/SVTK/SVTK_ViewWindow.cxx | 439 ++++- src/SVTK/SVTK_ViewWindow.h | 4 +- .../resources/SVTK_images.po} | 3 + src/SVTK/resources/SVTK_msg_en.po | 130 +- src/SalomeApp/Makefile.in | 22 +- src/SalomeApp/SalomeApp_Application.cxx | 97 +- src/SalomeApp/SalomeApp_Application.h | 10 +- src/SalomeApp/SalomeApp_DataModel.cxx | 150 +- src/SalomeApp/SalomeApp_DataObject.cxx | 19 +- src/SalomeApp/SalomeApp_Displayer.cxx | 47 + src/SalomeApp/SalomeApp_EventFilter.cxx | 3 + src/SalomeApp/SalomeApp_ExceptionHandler.cxx | 14 +- src/SalomeApp/SalomeApp_ListView.cxx | 701 ++++---- src/SalomeApp/SalomeApp_ListView.h | 8 +- src/SalomeApp/SalomeApp_Module.cxx | 8 +- src/SalomeApp/SalomeApp_PyInterp.cxx | 8 +- src/SalomeApp/SalomeApp_Study.cxx | 232 ++- src/SalomeApp/SalomeApp_VisualState.cxx | 152 +- src/SalomeApp/Test/Makefile.in | 4 +- src/SalomeApp/Test/TestSalomeApp.py | 18 + src/SalomeApp/resources/SalomeApp.xml | 288 +--- src/SalomeApp/resources/SalomeApp_msg_en.po | 8 +- src/Session/InquireServersQThread.cxx | 40 +- src/Session/InquireServersQThread.h | 9 +- src/Session/Makefile.in | 9 +- src/Session/SALOME_Session_Server.cxx | 246 ++- src/Session/SalomeApp_Engine_i.cxx | 9 + src/Session/Session_ServerCheck.cxx | 509 ++++++ src/Session/Session_ServerCheck.hxx | 62 + src/Session/Session_ServerLauncher.cxx | 74 +- src/Session/Session_ServerLauncher.hxx | 16 +- src/Session/Session_ServerThread.cxx | 85 +- src/Session/Session_ServerThread.hxx | 5 +- src/Session/Session_Session_i.cxx | 74 +- src/Style/Makefile.in | 20 +- src/Style/SalomeStyle.cxx | 106 +- src/TOOLSGUI/Makefile.in | 6 +- src/TOOLSGUI/ToolsGUI.cxx | 23 +- src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx | 106 +- src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h | 4 - src/TOOLSGUI/ToolsGUI_HelpWindow.cxx | 3 + src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx | 24 +- src/TOOLSGUI/ToolsGUI_RegWidget.cxx | 29 +- src/VTKViewer/Makefile.in | 88 +- src/VTKViewer/VTKViewer.h | 23 +- src/VTKViewer/VTKViewer_Actor.cxx | 238 ++- src/VTKViewer/VTKViewer_Actor.h | 36 +- src/VTKViewer/VTKViewer_AppendFilter.cxx | 9 - src/VTKViewer/VTKViewer_AppendFilter.h | 18 + .../VTKViewer_CellLocationsArray.cxx | 33 + src/VTKViewer/VTKViewer_CellLocationsArray.h | 42 + src/VTKViewer/VTKViewer_ConvexTool.cxx | 1293 ++++++-------- src/VTKViewer/VTKViewer_ConvexTool.h | 193 ++- .../VTKViewer_ExtractUnstructuredGrid.cxx | 7 +- src/VTKViewer/VTKViewer_GeometryFilter.cxx | 353 +--- src/VTKViewer/VTKViewer_InteractorStyle.cxx | 82 +- src/VTKViewer/VTKViewer_InteractorStyle.h | 6 +- src/VTKViewer/VTKViewer_RectPicker.cxx | 10 +- src/VTKViewer/VTKViewer_RenderWindow.cxx | 2 +- .../VTKViewer_RenderWindowInteractor.cxx | 43 +- src/VTKViewer/VTKViewer_ShrinkFilter.cxx | 4 +- src/VTKViewer/VTKViewer_Trihedron.cxx | 74 +- src/VTKViewer/VTKViewer_Trihedron.h | 18 +- src/VTKViewer/VTKViewer_Utilities.cxx | 135 +- src/VTKViewer/VTKViewer_Utilities.h | 34 +- src/VTKViewer/VTKViewer_VectorText.cxx | 5 + src/VTKViewer/VTKViewer_ViewWindow.cxx | 18 +- src/VTKViewer/resources/VTKViewerM_msg_en.po | 108 -- src/VTKViewer/resources/VTKViewer_msg_en.po | 3 - src/VTKViewer/resources/view_update_rate.png | Bin 0 -> 972 bytes 600 files changed, 23296 insertions(+), 12689 deletions(-) create mode 100755 doc/salome/gui/KERNEL/dump_study.htm delete mode 100755 doc/salome/gui/KERNEL/image77.gif delete mode 100755 doc/salome/gui/KERNEL/image78.gif delete mode 100755 doc/salome/gui/KERNEL/image79.gif delete mode 100755 doc/salome/gui/KERNEL/image81.gif delete mode 100755 doc/salome/gui/KERNEL/image82.gif delete mode 100755 doc/salome/gui/KERNEL/image83.gif delete mode 100755 doc/salome/gui/KERNEL/image84.gif delete mode 100755 doc/salome/gui/KERNEL/image86.gif delete mode 100755 doc/salome/gui/KERNEL/image88.gif delete mode 100755 doc/salome/gui/KERNEL/image89.gif delete mode 100755 doc/salome/gui/KERNEL/image90.gif delete mode 100755 doc/salome/gui/KERNEL/image91.gif delete mode 100755 doc/salome/gui/KERNEL/image92.gif rename doc/salome/gui/KERNEL/{image80.gif => image94.gif} (73%) rename doc/salome/gui/KERNEL/{kernel/introduction_to_iapp.htm => introduction_to_gui.htm} (53%) delete mode 100755 doc/salome/gui/KERNEL/kernel/displaying_hiding_toolbars.htm create mode 100755 doc/salome/gui/KERNEL/pics/dumpstudy.png create mode 100755 doc/salome/gui/KERNEL/pics/loadscript.png delete mode 100755 doc/salome/gui/KERNEL/pics/meshpreferences.png delete mode 100755 doc/salome/gui/KERNEL/pics/multidesktop.png delete mode 100755 doc/salome/gui/KERNEL/pics/neo-view1.png delete mode 100755 doc/salome/gui/KERNEL/pics/plot1.png delete mode 100755 doc/salome/gui/KERNEL/pics/pref1.png delete mode 100755 doc/salome/gui/KERNEL/pics/pref2.png delete mode 100755 doc/salome/gui/KERNEL/pics/pref4.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies10.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies11.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies5.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies7.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies8.png delete mode 100755 doc/salome/gui/KERNEL/pics/preferencies9.png create mode 100755 doc/salome/gui/KERNEL/pics/propm1.png create mode 100755 doc/salome/gui/KERNEL/pics/propm2.png create mode 100755 doc/salome/gui/KERNEL/pics/propm3.png create mode 100755 doc/salome/gui/KERNEL/pics/propm4.png create mode 100755 doc/salome/gui/KERNEL/pics/propp1.png create mode 100755 doc/salome/gui/KERNEL/pics/propp2.png create mode 100755 doc/salome/gui/KERNEL/pics/propp3.png create mode 100755 doc/salome/gui/KERNEL/pics/propp6.png create mode 100755 doc/salome/gui/KERNEL/pics/propp7.png create mode 100755 doc/salome/gui/KERNEL/pics/propp8.png create mode 100755 doc/salome/gui/KERNEL/pics/props1.png create mode 100755 doc/salome/gui/KERNEL/pics/props2.png create mode 100755 doc/salome/gui/KERNEL/pics/props3.png create mode 100755 doc/salome/gui/KERNEL/pics/props4.png create mode 100755 doc/salome/gui/KERNEL/pics/props5.png delete mode 100755 doc/salome/gui/KERNEL/pics/viewerspreferences.png create mode 100755 doc/salome/gui/KERNEL/select_color_and_font.htm delete mode 100755 doc/salome/gui/KERNEL/supervisor_preferences.htm delete mode 100755 doc/salome/gui/KERNEL/viewers.htm create mode 100755 doc/salome/gui/KERNEL/whgdata/whlstf11.htm create mode 100755 doc/salome/tui/SUIT/sources/doxygen.css create mode 100755 doc/salome/tui/SUIT/sources/footer.html delete mode 100644 idl/Makefile.in delete mode 100644 idl/SALOME_Session.idl create mode 100644 src/Qtx/QtxSplash.cxx create mode 100644 src/Qtx/QtxSplash.h delete mode 100755 src/SALOME_SWIG/Help.py delete mode 100755 src/SALOME_SWIG/PyInterp.py delete mode 100755 src/SALOME_SWIG/salome.py delete mode 100755 src/SALOME_SWIG/salome_test.py create mode 100644 src/SVTK/SVTK_DialogBase.cxx create mode 100644 src/SVTK/SVTK_DialogBase.h create mode 100644 src/SVTK/SVTK_UpdateRateDlg.cxx create mode 100644 src/SVTK/SVTK_UpdateRateDlg.h rename src/{VTKViewer/resources/VTKViewerM_images.po => SVTK/resources/SVTK_images.po} (96%) create mode 100644 src/Session/Session_ServerCheck.cxx create mode 100644 src/Session/Session_ServerCheck.hxx create mode 100644 src/VTKViewer/VTKViewer_CellLocationsArray.cxx create mode 100644 src/VTKViewer/VTKViewer_CellLocationsArray.h delete mode 100644 src/VTKViewer/resources/VTKViewerM_msg_en.po create mode 100755 src/VTKViewer/resources/view_update_rate.png diff --git a/INSTALL b/INSTALL index b1e195f37..537aa3872 100644 --- a/INSTALL +++ b/INSTALL @@ -1,3 +1,3 @@ -This is the version 3.2.0a2 of SALOMEGUI +This is the version 3.2.0b1 of SALOMEGUI Compatible with : - - KERNEL 3.2.0a2 + - KERNEL 3.2.0b1 diff --git a/Makefile.in b/Makefile.in index c1bc6bff4..29e946483 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # # Author : Patrick GOLDBRONN (CEA) @@ -14,13 +32,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top @COMMENCE@ -SUBDIRS = src - -ifeq ($(GUI_DISABLE_CORBA),no) - SUBDIRS+= idl -endif - -SUBDIRS+= doc adm_local +SUBDIRS = src doc adm_local RESOURCES_FILES = \ back.xpm \ @@ -124,10 +136,10 @@ include/salome/sstream: salome_adm/unix/sstream -$(RM) $@ $(LN_S) ../../$< $@ -depend: depend_idl - -depend_idl: - (cd idl ; $(MAKE) $@) || exit 1 +depend: +#depend: depend_idl +#depend_idl: +# (cd idl ; $(MAKE) $@) || exit 1 # doc is already build : if you want to had documents, go manually to doc and run 'make doc' #doc: @@ -156,10 +168,10 @@ install-bin: $(BIN_SCRIPT) $(INSTALL) -d $(bindir) $(INSTALL_PROGRAM) $^ $(bindir) -uninstall: uninstall-idl - -uninstall-idl: - $(RM) $(idldir)/*.idl +uninstall: +#uninstall: uninstall-idl +#uninstall-idl: +# $(RM) $(idldir)/*.idl distclean: distclean-other diff --git a/adm_local/Makefile.in b/adm_local/Makefile.in index 0c4f46081..50fe36d5e 100644 --- a/adm_local/Makefile.in +++ b/adm_local/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=.. diff --git a/adm_local/unix/config_files/check_GUI.m4 b/adm_local/unix/config_files/check_GUI.m4 index ad022e400..ff090e7b9 100755 --- a/adm_local/unix/config_files/check_GUI.m4 +++ b/adm_local/unix/config_files/check_GUI.m4 @@ -3,51 +3,61 @@ # Author : Marc Tajchman (CEA, 2002) #------------------------------------------------------------ -AC_DEFUN([CHECK_SALOME_GUI],[ +AC_DEFUN([CHECK_GUI],[ +AC_REQUIRE([AC_LINKER_OPTIONS])dnl -AC_CHECKING(for SalomeGUI) +AC_CHECKING(for $2 $1 ) SalomeGUI_ok=no +GUI_LDFLAGS="" +GUI_CXXFLAGS="" + AC_ARG_WITH(gui, --with-salome_gui=DIR root directory path of SALOME GUI installation, SALOME_GUI_DIR="$withval",SALOME_GUI_DIR="") -if test "x$SALOME_GUI_DIR" = "x" ; then - -# no --with-gui-dir option used - - if test "x$GUI_ROOT_DIR" != "x" ; then - +if test "x${SALOME_GUI_DIR}" = "x" ; then + # no --with-gui-dir option used + AC_MSG_RESULT(try \${GUI_ROOT_DIR}: ${GUI_ROOT_DIR}) + if test "x${GUI_ROOT_DIR}" != "x" ; then # SALOME_ROOT_DIR environment variable defined - SALOME_GUI_DIR=$GUI_ROOT_DIR - + SALOME_GUI_DIR=${GUI_ROOT_DIR} else - # search Salome binaries in PATH variable - AC_PATH_PROG(TEMP, libLightApp.so) - if test "x$TEMP" != "x" ; then - SALOME_BIN_DIR=`dirname $TEMP` - SALOME_GUI_DIR=`dirname $SALOME_BIN_DIR` + AC_PATH_PROG(TEMP, $1) + if test "x${TEMP}" != "x" ; then + AC_MSG_RESULT(libLightApp.so was found at : ${TEMP}) + SALOME_BIN_DIR=`dirname ${TEMP}` + SALOME_GUI_DIR=`cd ${SALOME_BIN_DIR}/../..; pwd` fi - fi -# fi -if test -f ${SALOME_GUI_DIR}/lib/salome/libLightApp.so ; then +if test -f ${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome/$1 ; then SalomeGUI_ok=yes AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR}) - if test "x$GUI_ROOT_DIR" == "x" ; then + if test "x${GUI_ROOT_DIR}" == "x" ; then GUI_ROOT_DIR=${SALOME_GUI_DIR} fi + AC_SUBST(GUI_ROOT_DIR) + + GUI_LDFLAGS=-L${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome + GUI_CXXFLAGS=-I${SALOME_GUI_DIR}/include/salome + + AC_SUBST(GUI_LDFLAGS) + AC_SUBST(GUI_CXXFLAGS) else AC_MSG_WARN("Cannot find compiled SALOME GUI distribution") fi -AC_MSG_RESULT(for SALOME GUI: $SalomeGUI_ok) +AC_MSG_RESULT(for $2: ${SalomeGUI_ok}) ])dnl - + +AC_DEFUN([CHECK_SALOME_GUI],[ + CHECK_GUI([libLightApp.so], + [SALOME GUI]) +])dnl \ No newline at end of file diff --git a/adm_local/unix/config_files/check_corba_in_GUI.m4 b/adm_local/unix/config_files/check_corba_in_GUI.m4 index 007dfc6c5..20be4514f 100755 --- a/adm_local/unix/config_files/check_corba_in_GUI.m4 +++ b/adm_local/unix/config_files/check_corba_in_GUI.m4 @@ -4,52 +4,9 @@ #------------------------------------------------------------ AC_DEFUN([CHECK_CORBA_IN_GUI],[ - -AC_CHECKING(for full SalomeGUI) - -SalomeGUI_ok=no -CORBA_IN_GUI="no" - -AC_ARG_WITH(gui, - --with-salome_gui=DIR root directory path of full SALOME GUI installation, - SALOME_GUI_DIR="$withval",SALOME_GUI_DIR="") - -if test "x$SALOME_GUI_DIR" = "x" ; then - -# no --with-gui-dir option used - - if test "x$GUI_ROOT_DIR" != "x" ; then - - # SALOME_ROOT_DIR environment variable defined - SALOME_GUI_DIR=$GUI_ROOT_DIR - - else - - # search Salome binaries in PATH variable - AC_PATH_PROG(TEMP, libSalomeApp.so) - if test "x$TEMP" != "x" ; then - SALOME_BIN_DIR=`dirname $TEMP` - SALOME_GUI_DIR=`dirname $SALOME_BIN_DIR` - fi - - fi -# -fi - -if test -f ${SALOME_GUI_DIR}/lib/salome/libSalomeApp.so ; then - SalomeGUI_ok=yes - CORBA_IN_GUI=yes - AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR}) - - if test "x$GUI_ROOT_DIR" == "x" ; then - GUI_ROOT_DIR=${SALOME_GUI_DIR} - fi -else - AC_MSG_WARN("Cannot find compiled full SALOME GUI distribution") -fi -AC_SUBST(CORBA_IN_GUI) - -AC_MSG_RESULT(for full SALOME GUI: $SalomeGUI_ok) - + CHECK_GUI([libSalomeApp.so], + [CORBA SALOME GUI]) + CORBA_IN_GUI=${SalomeGUI_ok} + AC_SUBST(CORBA_IN_GUI) ])dnl diff --git a/adm_local/unix/config_files/check_opengl.m4 b/adm_local/unix/config_files/check_opengl.m4 index dd43d25a0..8a56e0f54 100644 --- a/adm_local/unix/config_files/check_opengl.m4 +++ b/adm_local/unix/config_files/check_opengl.m4 @@ -22,122 +22,174 @@ dnl AC_DEFUN([CHECK_OPENGL],[ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CPP])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + AC_ARG_WITH(opengl, - [ --with-opengl=DIR root directory path of OpenGL installation ], - [ - opengl_dir="$withval" - local_opengl=yes - ], [ - dirs="/usr/lib /usr/local/lib /opt/graphics/OpenGL/lib /usr/openwin/lib /usr/X11R6/lib" - ])dnl + [AC_HELP_STRING([--with-opengl=DIR],[root directory path of OpenGL installation])], + [opengl_dir="$withval"], + [dirs="/usr/lib${LIB_LOCATION_SUFFIX} /usr/local/lib${LIB_LOCATION_SUFFIX} /opt/graphics/OpenGL/lib${LIB_LOCATION_SUFFIX} /usr/openwin/lib${LIB_LOCATION_SUFFIX} /usr/X11R6/lib${LIB_LOCATION_SUFFIX}"])dnl AC_CHECKING(for OpenGL) - -AC_SUBST(OGL_INCLUDES) -AC_SUBST(OGL_LIBS) +AC_CHECKING(for OpenGL headers) OGL_INCLUDES="" OGL_LIBS="" +GL_LIB_PATH="" +GLU_LIB_PATH="" + OpenGL_ok=no +OpenGL_libs_ok=no +OpenGL_headers_ok=no dnl openGL headers - # by default - -if test "x$local_opengl" = "xyes" ; then - if test -f "${opengl_dir}/include/GL/gl.h" ; then - OpenGL_ok=yes - OGL_INCLUDES="-I${opengl_dir}/include" - if test "x${opengl_dir}" = "x/usr" - then - OGL_LIBS="" - else - OGL_LIBS="-L${opengl_dir}/lib" - fi - AC_MSG_RESULT(select OpenGL distribution in ${opengl_dir}) - else - AC_MSG_RESULT(no gl.h header file in ${opengl_dir}/include/GL) - fi +if test "x${opengl_dir}" != "x" ; then + AC_MSG_RESULT(for opengl_dir: $opengl_dir) + AC_CHECK_HEADER([${opengl_dir}/include/GL/gl.h], + [OpenGL_headers_ok=yes; OGL_INCLUDES="-I${opengl_dir}/include"], + [OpenGL_headers_ok=no]) + if test "x${OpenGL_headers_ok}" = "xyes" ; then + AC_CHECKING(for default OpenGL library) + if test "x${opengl_dir}" = "x/usr" ; then + OGL_LIBS="" + else + OGL_LIBS="-L${opengl_dir}/lib" + fi + LDFLAGS_old="$LDFLAGS" + LDFLAGS="$LDFLAGS $OGL_LIBS" + AC_CHECK_LIB([GL], + [glBegin], + [OpenGL_libs_ok=yes], + [OpenGL_libs_ok=no]) + if test "x${OpenGL_libs_ok}" = "xyes" ; then + AC_TRY_LINK([], + [], + [OpenGL_libs_ok=yes ; OpenGL_ok=yes; OGL_LIBS="$OGL_LIBS -lGL"], + [OpenGL_libs_ok=no]) + fi + LDFLAGS="$LDFLAGS_old" + fi fi -if test "x$OpenGL_ok" = "xno" -then - AC_CHECK_HEADERS(GL/gl.h, [OpenGL_ok=yes]) +if test "x${OpenGL_headers_ok}" = "xno" ; then + AC_CHECK_HEADER(GL/gl.h, + [OpenGL_headers_ok=yes], + [OpenGL_headers_ok=no]) fi -if test "x$OpenGL_ok" = "xno" -then # under SunOS ? +if test "x${OpenGL_headers_ok}" = "xno" ; then AC_CHECK_HEADERS(/usr/openwin/share/include/GL/glxmd.h, - [OpenGL_ok=yes] - OGL_INCLUDES="-I/usr/openwin/share/include/") + [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/openwin/share/include/"], + [OpenGL_headers_ok=no]) fi -if test "x$OpenGL_ok" = "xno" -then # under IRIX ? +if test "x${OpenGL_headers_ok}" = "xno" ; then AC_CHECK_HEADERS(/opt/graphics/OpenGL/include/GL/glxmd.h, - [OpenGL_ok=yes] - OGL_INCLUDES="-I/opt/graphics/OpenGL/include") + [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/opt/graphics/OpenGL/include"], + [OpenGL_headers_ok=no]) fi -if test "x$OpenGL_ok" = "xno" -then + # some linux OpenGL servers hide the includes in /usr/X11R6/include/GL +if test "x${OpenGL_headers_ok}" = "xno" ; then AC_CHECK_HEADERS(/usr/X11R6/include/GL/gl.h, - [OpenGL_ok=yes] - OGL_INCLUDES="-I/usr/X11R6/include") + [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/X11R6/include"], + [OpenGL_headers_ok=no]) fi -if test "x$OpenGL_ok" = "xyes" -then +if test "x${OpenGL_headers_ok}" = "xyes" ; then AC_CHECKING(for OpenGL library) - OpenGL_ok=no - for i in $dirs; do - if test -r "$i/libGL.so"; then -dnl AC_MSG_RESULT(in $i) - if test "x$i" = "x/usr/lib" - then - OGL_LIBS="" + for idir in $dirs; do + if test -r "${idir}/libGL.so"; then + AC_MSG_RESULT(in ${idir}) + if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then + GL_LIB_PATH="" else - OGL_LIBS="-L$i" + GL_LIB_PATH="-L${idir}" fi break fi -# under IRIX ? - if test -r "$i/libGL.sl"; then -dnl AC_MSG_RESULT(in $i) - if test "x$i" = "x/usr/lib" - then - OGL_LIBS="" + # under IRIX ? + if test -r "${idir}/libGL.sl"; then + AC_MSG_RESULT(in ${idir}) + if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then + GL_LIB_PATH="" else - OGL_LIBS="-L$i" + GL_LIB_PATH="-L${idir}" fi break fi done - LDFLAGS_old="$LDFLAGS" - LDFLAGS="$LDFLAGS $OGL_LIBS" - AC_CHECK_LIB(GL,glBegin,OpenGL_ok=yes,OpenGL_ok=no) + LDFLAGS_old="${LDFLAGS}" + LDFLAGS="${LDFLAGS} ${GL_LIB_PATH}" + AC_CHECK_LIB([GL], + [glBegin], + [OpenGL_libs_ok=yes], + [OpenGL_libs_ok=no]) + if test "x${OpenGL_libs_ok}" = "xyes" ; then + AC_TRY_LINK([], + [], + [OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GL_LIB_PATH} -lGL"], + [OpenGL_libs_ok=no]) + fi LDFLAGS="$LDFLAGS_old" fi -if test "x$OpenGL_ok" = "xyes" ; then - OGL_LIBS="$OGL_LIBS -lGL" +if test "x${OpenGL_libs_ok}" = "xyes" ; then + for idir in $dirs; do + if test -r "${idir}/libGLU.so"; then + AC_MSG_RESULT(in ${idir}) + if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then + GLU_LIB_PATH="" + else + GLU_LIB_PATH="-L${idir}" + fi + break + fi + # under IRIX ? + if test -r "${idir}/libGLU.sl"; then + AC_MSG_RESULT(in ${idir}) + if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then + GLU_LIB_PATH="" + else + GLU_LIB_PATH="-L${idir}" + fi + break + fi + done + LDFLAGS_old="${LDFLAGS}" + LDFLAGS="${LDFLAGS} ${OGL_LIBS} ${GLU_LIB_PATH}" + AC_CHECK_LIB([GLU], + [gluBeginSurface], + [OpenGL_libs_ok=yes], + [OpenGL_libs_ok=no]) + if test "x${OpenGL_libs_ok}" = "xyes" ; then + AC_TRY_LINK([], + [], + [OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GLU_LIB_PATH} -lGLU"], + [OpenGL_libs_ok=no]) + fi + LDFLAGS="$LDFLAGS_old" fi +if test "x${OpenGL_headers_ok}" = "xyes" ; then + if test "x${OpenGL_libs_ok}" = "xyes" ; then + OpenGL_ok=yes + fi +fi -OpenGLU_ok=no -LDFLAGS_old="$LDFLAGS" -LDFLAGS="$LDFLAGS $OGL_LIBS" -AC_CHECK_LIB(GLU,gluBeginSurface,OpenGLU_ok=yes,OpenGLU_ok=no) -LDFLAGS="$LDFLAGS_old" +AC_MSG_RESULT(for OpenGL_headers_ok: $OpenGL_headers_ok) +AC_MSG_RESULT(for OpenGL_libs_ok: $OpenGL_libs_ok) +AC_MSG_RESULT(for OpenGL_ok: $OpenGL_ok) -if test "x$OpenGLU_ok" = "xyes" ; then - OGL_LIBS="$OGL_LIBS -lGLU" -fi +AC_SUBST(OGL_INCLUDES) +AC_SUBST(OGL_LIBS) -# Save cache -AC_CACHE_SAVE +AC_LANG_RESTORE ])dnl diff --git a/adm_local/unix/config_files/check_pyqt.m4 b/adm_local/unix/config_files/check_pyqt.m4 index ee024efaf..7be124e24 100644 --- a/adm_local/unix/config_files/check_pyqt.m4 +++ b/adm_local/unix/config_files/check_pyqt.m4 @@ -4,6 +4,7 @@ AC_DEFUN([CHECK_PYQT],[ AC_REQUIRE([CHECK_PYTHON])dnl AC_REQUIRE([CHECK_QT])dnl AC_REQUIRE([CHECK_SIP])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl AC_LANG_SAVE AC_LANG_CPLUSPLUS @@ -119,15 +120,15 @@ if test "x${PYQTDIR}" != "x"; then fi fi if test "x$pyqt_lib_ok" == "xno"; then - dnl try {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages - if test -d {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages; then - AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + dnl try {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages + if test -d {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages; then + AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule" + PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule" else - AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages" + PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi @@ -160,30 +161,30 @@ if test "x$pyqt_lib_ok" == "xno"; then fi fi if test "x$pyqt_lib_ok" == "xno"; then - dnl try ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages + dnl try ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages if test "x${PYTHONHOME}" != "x"; then - if test -d ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages ; then - AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + if test -d ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then + AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule" + PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule" else - AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages" + PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi fi fi if test "x$pyqt_lib_ok" == "xno"; then - dnl try /usr/lib/python${PYTHON_VERSION}/site-packages - AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + dnl try /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages + AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule" + PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule" else - AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) + AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no) if test "x$pyqt_lib_ok" == "xyes"; then - PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages" + PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi diff --git a/adm_local/unix/config_files/check_qt.m4 b/adm_local/unix/config_files/check_qt.m4 index ab2869c21..ab5348319 100644 --- a/adm_local/unix/config_files/check_qt.m4 +++ b/adm_local/unix/config_files/check_qt.m4 @@ -26,8 +26,14 @@ AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_CPP])dnl AC_REQUIRE([AC_PROG_CXXCPP])dnl AC_REQUIRE([CHECK_OPENGL])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl + +AC_CHECKING(for Qt) + +if test "x$OpenGL_ok" != "xyes" ; then + AC_MSG_WARN(Qt needs OpenGL correct configuration, check configure output) +fi -AC_CHECKING(for QT) qt_ok=yes AC_LANG_SAVE @@ -117,7 +123,7 @@ then then LIBS="$LIBS -lqt-mt $OGL_LIBS" else - LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS" + LIBS="$LIBS -L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt $OGL_LIBS" fi CXXFLAGS_old=$CXXFLAGS @@ -145,8 +151,8 @@ then QT_LIBS=" -lqt-mt" QT_MT_LIBS=" -lqt-mt" else - QT_LIBS="-L$QTDIR/lib -lqt-mt" - QT_MT_LIBS="-L$QTDIR/lib -lqt-mt" + QT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt" + QT_MT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt" fi fi @@ -160,13 +166,14 @@ AC_SUBST(UIC) AC_SUBST(QT_ROOT) AC_SUBST(QT_INCLUDES) +AC_SUBST(QT_MT_INCLUDES) AC_SUBST(QT_LIBS) AC_SUBST(QT_MT_LIBS) AC_SUBST(QT_VERS) AC_LANG_RESTORE -AC_MSG_RESULT(for qt: $qt_ok) +AC_MSG_RESULT(for Qt: $qt_ok) # Save cache AC_CACHE_SAVE diff --git a/adm_local/unix/config_files/check_qwt.m4 b/adm_local/unix/config_files/check_qwt.m4 index 13bf90914..d9bc23fbf 100644 --- a/adm_local/unix/config_files/check_qwt.m4 +++ b/adm_local/unix/config_files/check_qwt.m4 @@ -2,6 +2,7 @@ dnl Copyright (C) 2003 CEA/DEN, EDF R&D AC_DEFUN([CHECK_QWT],[ AC_REQUIRE([CHECK_QT])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl AC_CHECKING(for qwt) @@ -26,7 +27,7 @@ if test -z $QWTHOME; then exits_ok=no if test "x$exits_ok" = "xno"; then for d in /usr/local /usr ; do - AC_CHECK_FILE(${d}/lib/libqwt.so,exits_ok=yes,exits_ok=no) + AC_CHECK_FILE(${d}/lib${LIB_LOCATION_SUFFIX}/libqwt.so,exits_ok=yes,exits_ok=no) if test "x$exits_ok" = "xyes"; then QWTHOME=$d AC_MSG_RESULT(libqwt.so detected in $d/lib) @@ -91,7 +92,7 @@ then then LIBS="$LIBS -lqt-mt" else - LIBS="$LIBS -L$QTDIR/lib -lqt-mt" + LIBS="$LIBS -L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt" fi if test "x$QWTHOME" = "x/usr" then diff --git a/adm_local/unix/config_files/check_sip.m4 b/adm_local/unix/config_files/check_sip.m4 index 245f2382e..83af9a907 100644 --- a/adm_local/unix/config_files/check_sip.m4 +++ b/adm_local/unix/config_files/check_sip.m4 @@ -3,6 +3,7 @@ dnl Copyright (C) 2003 CEA/DEN, EDF R&D AC_DEFUN([CHECK_SIP],[ AC_REQUIRE([CHECK_PYTHON])dnl AC_REQUIRE([CHECK_QT])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl sip_ok=yes @@ -110,44 +111,44 @@ else fi if test "x$sip_lib_ok" == "xno" ; then - dnl look for (lib)sip.so in ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages - if test -d ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages ; then - AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) + dnl look for (lib)sip.so in ${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages + if test -d ${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then + AC_CHECK_FILE(${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages -lsip" + SIP_LIBS="-L${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip" else - AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) + AC_CHECK_FILE(${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages" + SIP_LIBS="-L${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi fi fi if test "x$sip_lib_ok" == "xno" ; then - dnl look for (lib)sip.so in ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages - if test -d ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages ; then - AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) + dnl look for (lib)sip.so in ${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages + if test -d ${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then + AC_CHECK_FILE(${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip" + SIP_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip" else - AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) + AC_CHECK_FILE(${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages" + SIP_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi fi if test "x$sip_lib_ok" == "xno" ; then - dnl look for (lib)sip.so in /usr/lib/python${PYTHON_VERSION}/site-packages - if test -d /usr/lib/python${PYTHON_VERSION}/site-packages ; then - AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) + dnl look for (lib)sip.so in /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages + if test -d /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then + AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L$/usr/lib/python${PYTHON_VERSION}/site-packages -lsip" + SIP_LIBS="-L$/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip" else - AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) + AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no) if test "x$sip_lib_ok" == "xyes" ; then - SIP_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages" + SIP_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages" fi fi fi diff --git a/adm_local/unix/config_files/check_vtk.m4 b/adm_local/unix/config_files/check_vtk.m4 index df9245b5d..a0733ebc3 100644 --- a/adm_local/unix/config_files/check_vtk.m4 +++ b/adm_local/unix/config_files/check_vtk.m4 @@ -25,6 +25,7 @@ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_CPP])dnl AC_REQUIRE([AC_PROG_CXXCPP])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl AC_CHECKING(for VTK) @@ -41,13 +42,11 @@ VTKPY_MODULES="" vtk_ok=no -AC_PATH_X - -if test "x$OpenGL_ok" != "xyes" -then - AC_MSG_WARN(vtk needs OpenGL correct configuration, check configure output) +if test "x$OpenGL_ok" != "xyes" ; then + AC_MSG_WARN(VTK needs OpenGL correct configuration, check configure output) fi +AC_PATH_X if test "x$x_libraries" != "x" then LXLIB="-L$x_libraries" @@ -86,8 +85,8 @@ fi if test ! -z $VTKHOME then LOCAL_INCLUDES="-I$VTKHOME/include/vtk $LOCAL_INCLUDES" - LOCAL_LIBS="-L$VTKHOME/lib/vtk $LOCAL_LIBS" - TRY_LINK_LIBS="-L$VTKHOME/lib/vtk $TRY_LINK_LIBS" + LOCAL_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $LOCAL_LIBS" + TRY_LINK_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $TRY_LINK_LIBS" fi dnl vtk headers @@ -115,10 +114,10 @@ AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no") dnl VTKPY_MODULES="$VTKHOME/python" AC_CACHE_VAL(salome_cv_lib_vtk,[ - AC_TRY_LINK( -#include "vtkPlane.h" -, vtkPlane *p = vtkPlane::New();, - eval "salome_cv_lib_vtk=yes",eval "salome_cv_lib_vtk=no") + AC_TRY_LINK([#include "vtkPlane.h"], + [vtkPlane::New()], + [salome_cv_lib_vtk=yes], + [salome_cv_lib_vtk=no]) ]) vtk_ok="$salome_cv_lib_vtk" LIBS="$LIBS_old" @@ -128,21 +127,19 @@ fi if test "x$vtk_ok" = "xno" then - AC_MSG_RESULT("no") + AC_MSG_RESULT(no) AC_MSG_WARN(unable to link with vtk library) else - AC_MSG_RESULT("yes") + AC_MSG_RESULT(yes) VTK_LIBS="$LOCAL_LIBS" VTK_MT_LIBS="$LOCAL_LIBS" fi -AC_MSG_RESULT("for vtk: $vtk_ok") +AC_MSG_RESULT(for VTK: $vtk_ok) AC_LANG_RESTORE # Save cache AC_CACHE_SAVE -])dnl - - +])dnl \ No newline at end of file diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in index 78506b08c..0a5de34a2 100644 --- a/adm_local/unix/make_commence.in +++ b/adm_local/unix/make_commence.in @@ -19,8 +19,8 @@ HAVE_SSTREAM=@HAVE_SSTREAM@ LIBS=@LIBS@ LIBSFORBIN=@LIBS@ -LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome -LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib/salome +LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome +LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome # add libstdc++ to link c++ library with libtool ! LDFLAGS+= -lstdc++ LDFLAGSFORBIN+= -lstdc++ @@ -62,8 +62,8 @@ PYTHONHOME = @PYTHONHOME@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_VERSION = @PYTHON_VERSION@ -PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages -PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome +PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages +PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome # QT QT_ROOT = @QT_ROOT@ @@ -116,12 +116,6 @@ HDF5_MT_LIBS=@HDF5_MT_LIBS@ OCC_INCLUDES=@CAS_CPPFLAGS@ OCC_CXXFLAGS=@CAS_CXXFLAGS@ -#OCC_KERNEL_LIBS=@CAS_KERNEL@ -#OCC_OCAF_LIBS=@CAS_OCAF@ -#OCC_VIEWER_LIBS=@CAS_VIEWER@ -#OCC_MODELER_LIBS=@CAS_MODELER@ -#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ -#OCC_LIBS=@CAS_LDFLAGS@ CAS_KERNEL=@CAS_KERNEL@ CAS_MATH=@CAS_MATH@ CAS_OCAF=@CAS_OCAF@ @@ -131,6 +125,7 @@ CAS_VIEWER=@CAS_VIEWER@ CAS_MODELER=@CAS_MODELER@ CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ CAS_LDPATH=@CAS_LDPATH@ + # MPICH MPICH_INCLUDES=@MPICH_INCLUDES@ @@ -183,11 +178,9 @@ IDL_SRV_OBJ = @IDL_SRV_OBJ@ CPPFLAGS+= $(CORBA_INCLUDES) CXXFLAGS+= $(CORBA_CXXFLAGS) -# add corba libs when link salome application ! -#LDFLAGS+= $(CORBA_LIBS) -#LIBS+=$(CORBA_LIBS) - DOXYGEN = @DOXYGEN@ +DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@ +DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@ ## Shared libraries LT_STATIC_EXEC=@LT_STATIC_EXEC@ @@ -209,16 +202,22 @@ INSTALL_DATA=@INSTALL_DATA@ # create a symbolic link (or a copie ?) LN_S=@LN_S@ +KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@ +KERNEL_SITE_DIR=@KERNEL_SITE_DIR@ + +KERNEL_LDFLAGS=@KERNEL_LDFLAGS@ +KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@ + ## Installation points prefix=@prefix@ exec_prefix=@exec_prefix@ -bindir=@bindir@/salome -libdir=@libdir@/salome +bindir=@exec_prefix@/bin/salome +libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome # warning : if user give this path in configure we could have salome/salome :-( includedir=@includedir@/salome datadir=@datadir@/salome idldir=${prefix}/idl/salome -sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules incmakedir=${prefix}/salome_adm/unix docdir=${prefix}/doc/salome @@ -246,7 +245,13 @@ all: Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in cd $(top_builddir) ; ./config.status -$(top_builddir)/config.status: $(top_srcdir)/configure +LOCAL_MAKE = make_commence make_conclude make_omniorb + +KERNEL_MAKE = make_module depend SALOMEconfig.h F77config.h sstream envScript + +$(top_builddir)/config.status: $(top_srcdir)/configure \ + $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \ + $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in) cd $(top_builddir) ; ./config.status --recheck # VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) @@ -267,4 +272,4 @@ check_sip.m4 check_msg2qm.m4 check_pyqt.m4 \ check_opengl.m4 $(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm_local/unix/config_files/%) - cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files + cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files diff --git a/adm_local/unix/make_conclude.in b/adm_local/unix/make_conclude.in index c79350747..b10f5dbc0 100644 --- a/adm_local/unix/make_conclude.in +++ b/adm_local/unix/make_conclude.in @@ -48,10 +48,10 @@ LIB_OBJ_F = $(patsubst %.f, %.lo, $(filter %.f, $(LIB_SRC))) # all libtool obj file in library LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F) -# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la) -LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB))) -LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB))) -LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib/salome/%.so, $(filter %.so, $(LIB))) +# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la) +LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la, $(filter %.la, $(LIB))) +LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a, $(filter %.a, $(LIB))) +LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.so, $(LIB))) ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),) ifneq ($(GUI_DISABLE_CORBA),yes) @@ -66,7 +66,7 @@ endif lib: $(LIB_BUILD) $(LIB_BUILD_SO) $(LIB_CLIENT_PY) # we don't build static library ! -$(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la +$(LIB_BUILD): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la: %.la -$(RM) $@ -$(RM) $(patsubst %.la, %.so, $@) -$(RM) $(patsubst %.la, %.a, $@) @@ -77,14 +77,14 @@ $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la $(patsubst %.la, %.so, $@).0 || true if ! test -z $(LIB_SWIG) ; then \ - ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\ + ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/_$(LIB_SWIG) || true;\ fi; -$(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a +$(LIB_BUILD_A): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a: %.a -$(RM) $@ ln -sf $(CURDIR)/$< $@ || true -$(LIB_BUILD_SO): $(top_builddir)/lib/salome/%.so: %.so +$(LIB_BUILD_SO): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so: %.so -$(RM) $@ ln -sf $(CURDIR)/$< $@ || true @@ -154,7 +154,7 @@ $(DEST_UI_PY_FILES): $(top_builddir)/bin/salome/%: % # copy pyqt files in $(PYTHON_SHARED_SITE) # -PYTHON_SHARED_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +PYTHON_SHARED_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules $(PYTHON_SHARED_SITE): $(INSTALL) -d $@ @@ -343,10 +343,10 @@ clean: mostlyclean -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN) -$(RM) TAGS *~ *# core *.core -$(RM) -r .libs - -$(RM) $(top_builddir)/lib/salome/$(LIB) + -$(RM) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB) -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN)) - -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB)) - -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB)) + -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) + -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) # remove idl generated files (sources) -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC) # remove idl generated files (headers) diff --git a/bin/VERSION b/bin/VERSION index f31d619c4..45addf10a 100755 --- a/bin/VERSION +++ b/bin/VERSION @@ -1 +1 @@ -THIS IS SALOME - SALOMEGUI VERSION: 3.2.0a2 +THIS IS SALOME - SALOMEGUI VERSION: 3.2.0b1 diff --git a/bin/runLightSalome.sh b/bin/runLightSalome.sh index f99a8125f..ce5b7c4cc 100755 --- a/bin/runLightSalome.sh +++ b/bin/runLightSalome.sh @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# #!/bin/bash -f if [ -z "$SUITRoot" ] ; then diff --git a/build_configure b/build_configure index fad9468f8..b36fde32a 100755 --- a/build_configure +++ b/build_configure @@ -124,10 +124,10 @@ echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1 echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_conclude \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_commence:${ABS_CONF_DIR}/adm_local/unix/make_commence.in \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_conclude:${ABS_CONF_DIR}/adm_local/unix/make_conclude.in \\" >> configure.in_tmp1 echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 \rm -f configure.in_tmp2 configure.in_tmp3 diff --git a/configure.in.base b/configure.in.base index f593bc607..86fc9ff5d 100644 --- a/configure.in.base +++ b/configure.in.base @@ -512,9 +512,9 @@ fi # make other build directories if test "$GUI_DISABLE_CORBA" == "yes"; then -dir_variables="salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl" + dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl" else -dir_variables="salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources" + dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources" fi for rep in $dir_variables diff --git a/doc/Makefile.in b/doc/Makefile.in index 7295ede75..9bd6e8ef5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in index ca1d6f282..c41b5206d 100644 --- a/doc/salome/Makefile.in +++ b/doc/salome/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # diff --git a/doc/salome/gui/KERNEL/dump_study.htm b/doc/salome/gui/KERNEL/dump_study.htm new file mode 100755 index 000000000..570547cba --- /dev/null +++ b/doc/salome/gui/KERNEL/dump_study.htm @@ -0,0 +1,167 @@ + + + + + +Dump Study + + + + + + + + + + + + +

Working with Python Scripts

+ +

SALOME Platform can be launched + in the batch mode, without Graphical User Interface, and operated with + the use of Python scripts, which can fulfill most of the necessary tasks, + however, the process of scripting is quite time consuming and rather error-prone. +

+ +

This problem has been resolved by the possibility to automatically generate + a set of Python scripts from data created with SALOME GUI, which greatly + increases the productivity of using SALOME platform in the batch mode. + This mechanism can convert a SALOMEDS Study in one or several Python scripts, + which can be stored and imported later to re-create the content of the + original study. The first script is a SALOMEDS document, which re-creates + the SALOMEDS Study, adds the stored Salome components to the SALOMEDS + and automatically calls Python scripts of the second type containing component + specific Python function calls. This architecture gives great flexibility + in manual modification of the generated scripts because you can modify + only one of the component specific Python scripts without touching others, + thus avoiding expert knowledge of Python API of unused components.

+ +

 

+ +

To Dump a  SALOME + Study in one or several scripts, in the main menu select File + --> Dump study

+ +

The following dialog box allowing to browse for the location and define + the name for a Python file will appear:

+ +

 

+ +

+ +

 

+ + + +

 

+ +

To + confirm your choice click Save.

+ +

 

+ +

Reversibly it is possible to load a saved + Python Script selecting in the main menu File + -> Load Script.

+ +

 

+ +

+ +

 

+ +

To + confirm your choice click Open.

+ +

 

+ + + + diff --git a/doc/salome/gui/KERNEL/geom_preferences.htm b/doc/salome/gui/KERNEL/geom_preferences.htm index eaca47940..805c29b96 100755 --- a/doc/salome/gui/KERNEL/geom_preferences.htm +++ b/doc/salome/gui/KERNEL/geom_preferences.htm @@ -15,7 +15,7 @@ if (navigator.appName !="Netscape") - - - - - + + + + + -

Introduction to GUI

+

Introduction to GUI

-

GUI - (Graphical User Interface) provides a common shell for all components, - which can be integrated into the SALOME platform.

+

GUI (Graphical User Interface) provides + a common shell for all components, which can be integrated into the SALOME + platform.

-

 

+

 

-

GUI +

GUI component in SALOME platform provides:

-

 

+

 

- @@ -204,8 +204,8 @@ else
  • Define geometrical models - (create/modify geometrical items), import and export them using the IGES - and STEP formats;

  • + (create/modify geometrical items), import and export them using the BREP, + IGES and STEP formats;

  • Define meshing of these geometrical items, import and export them;

  • diff --git a/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm b/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm index 40cd183c5..80ccf5ab3 100755 --- a/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm +++ b/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm @@ -110,8 +110,8 @@ else

     

    -

    By - default SALOME platform five modules each having its own function:

    +

    SALOME + platform integrates a number of modules each having its own function:

     

    @@ -140,7 +140,7 @@ else
    -

     

    +

     

    + +

    Object + Browser Preferences

    + +

     

    + +

    + +

     

    + +

    Display or Hide Value, Entry, IOR and Reference entry + columns in the Object Browser.

    + +

    Disable + or Enable Auto size for first column or Auto size for other columns + in the Object Browser.

    + +

     

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm b/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm index 2d1cfd024..937d6715c 100755 --- a/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm +++ b/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm @@ -22,7 +22,7 @@ p.whs5 { text-align:justify; } p.whs6 { font-family:'Times New Roman' , serif; } p.whs7 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; } p.whs8 { font-family:'Times New Roman' , serif; margin-left:40px; } -img_whs9 { border:none; border-style:none; width:475px; height:289px; float:none; } +img_whs9 { border:none; width:475px; height:289px; float:none; border-style:none; } p.whs10 { font-family:'Times New Roman' , serif; margin-left:0px; } ul.whs11 { list-style:disc; } p.whs12 { font-family:'Times New Roman' , serif; margin-left:0px; background-image:url('../texture_horiz_ltbluebubbles.jpg'); } @@ -111,7 +111,7 @@ else interface its xml description.  The component xml description allows SALOME application to know about the component and its services and provides the possibility to call the component - services, for example, inside SUPERVISION module.

    + services, for example, inside Supervisor module.

    If you have a look at runSalome, runSalomeWithPort scripts running SALOME application, which are stored in build/bin directory @@ -206,7 +206,7 @@ else

     

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_object_browser.htm b/doc/salome/gui/KERNEL/kernel/using_object_browser.htm index a1680135f..a62e55c5d 100755 --- a/doc/salome/gui/KERNEL/kernel/using_object_browser.htm +++ b/doc/salome/gui/KERNEL/kernel/using_object_browser.htm @@ -18,10 +18,10 @@ h1.whs1 { text-align:justify; } p.whs2 { text-align:justify; } img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; } ul.whs4 { list-style:disc; } -img_whs5 { border:none; width:294px; height:280px; float:none; } +img_whs5 { border:none; width:294px; height:280px; float:none; border-style:none; } p.whs6 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); text-align:justify; } img_whs7 { border:none; float:none; width:36px; height:38px; border-style:none; } -img_whs8 { border:none; width:354px; height:280px; float:none; } +img_whs8 { border:none; width:354px; height:280px; float:none; border-style:none; } p.whs9 { font-style:italic; color:#ff0000; text-align:justify; } p.whs10 { margin-left:40px; text-align:justify; } p.whs11 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; } @@ -107,8 +107,8 @@ else
  • components, loaded during the current session

  • -
  • objects with the - help of different components  (The +

  • objects created with + the help of different components  (The objects created with the help of a definite component are located in the folder having the name of this component.)

  • @@ -171,11 +171,8 @@ else the value of the first object attribute

    -

     

    - -

                       

    - -

     

    +

                      

    In the Object Browser you can apply to the objects an ascending or  

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_registry.htm b/doc/salome/gui/KERNEL/kernel/using_registry.htm index c88a7eaac..8028cfce5 100755 --- a/doc/salome/gui/KERNEL/kernel/using_registry.htm +++ b/doc/salome/gui/KERNEL/kernel/using_registry.htm @@ -18,11 +18,11 @@ h1.whs1 { text-align:justify; } p.whs2 { text-align:justify; } p.whs3 { margin-left:40px; text-align:justify; } p.whs4 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; } -img_whs5 { border:none; border-style:none; width:604px; height:201px; float:none; } +img_whs5 { border:none; width:604px; height:201px; float:none; border-style:none; } p.whs6 { margin-left:0px; text-align:justify; } p.whs7 { text-align:justify; margin-left:80px; } -img_whs8 { border:none; width:327px; height:128px; float:none; } -img_whs9 { border:none; border-style:none; width:460px; height:283px; float:none; } +img_whs8 { border:none; width:327px; height:128px; float:none; border-style:none; } +img_whs9 { border:none; width:460px; height:283px; float:none; border-style:none; } p.whs10 { margin-left:0px; font-weight:bold; text-align:justify; } --> -

    MESH preferences

    +

    Mesh preferences

    -

    In the MESH module you can set mesh preferences, default settings, which - can be used in later sessions with this module.

    +

    In the Mesh module you can set mesh preferences, which can be used in + later sessions with this module.

     

    @@ -104,7 +105,7 @@ else

     

    -

    +

     

    @@ -132,49 +133,76 @@ else numbers in Quality Control diagrams at the necessary level of precision.

    -
  • Precision.

  • - -
  • By default,  numbers - in Quality Control diagrams - are presented as integers. However, it is possible to set the Number - of digits after point in the corresponding - field.

  • - -
  • Display - mode

  • - -
  • In the Display mode dialog - box you can set Wireframe, Shading, Nodes or Shrink presentation mode - as default.  This - functionality is described in full detail in other chapter.

  • +
  • Precision + - can be defined by the + Number of digits after point + in the corresponding field. By default, numbers in Quality Control diagrams are presented as integers. +

  • + +
  • Display + mode - allows to set Wireframe, Shading, + Nodes or Shrink presentation mode as default.

  • + + + +

     

    +

     

    -

    Mesh Preferences

    +

    Mesh Preferences

    -

     

    +

     

    -

    +

     

     

    @@ -183,31 +211,56 @@ else

     

    -

    +

     

     

    Scalar Bar Preferences

    -

     

    +

     

    -

    +

     

    @@ -226,10 +279,19 @@ else style="font-weight: normal;">here you can choose between vertical and horizontal orientation of the Scalar Bar.

    -
  • Origin & - Size Vertical & Horizontal - - in this menu you can set representation parameters for the Scalar - Bar.

  • +
  • Origin + & Size Vertical & Horizontal - allows + to define placement (X and + Y) and lookout (Width and Height) + of Scalar Bars

  • + +
  • X: + abscissa of the point of origin (from + the left side)

  • + +
  • Y: + ordinate of the origin of the bar (from + the bottom)

  • + + + + + + + + +

    Select Color and Font

    + +

    Select Color and Select + Font menus are used in many Preferences.

    + +

    Select color

    + +

    + +

     

    + +

    This menu  allows + to choose from either predefined Basic + Colors grouped in the upper left corner of the window or Custom Colors, which you can define + yourselves. To define a Custom Color, click on one of the Custom Color + cells, select the color you need in the field of colors or by typing in + its numeric parameters in the lower right corner of the window, then click + Add to Custom Colors button. The + chosen color will be added to Custom + Colors table.  

    + +

    Select Font

    + +

    + +

     

    + +

    This menu provides a wide choice of Fonts, + Font Styles and Sizes. Characters can be underlined or struck out. + It is possible to preview them in the Sample window. + Script dialog-box + gives the possibility to use not only Latin and Latin Extended but also + Cyrillic, Greek, Arabic, Runic and many other subsets.  

    + +

     

    + + + + diff --git a/doc/salome/gui/KERNEL/setting_preferences.htm b/doc/salome/gui/KERNEL/setting_preferences.htm index 69f2168e0..35dfc8f28 100755 --- a/doc/salome/gui/KERNEL/setting_preferences.htm +++ b/doc/salome/gui/KERNEL/setting_preferences.htm @@ -15,8 +15,22 @@ if (navigator.appName !="Netscape") + - - - - - - - - -

    Supervisor Preferences

    -

    Type topic text here.

    - - - \ No newline at end of file diff --git a/doc/salome/gui/KERNEL/viewers.htm b/doc/salome/gui/KERNEL/viewers.htm deleted file mode 100755 index 277437987..000000000 --- a/doc/salome/gui/KERNEL/viewers.htm +++ /dev/null @@ -1,212 +0,0 @@ - - - - - -Viewers - - - - - - - - - - - -

    Viewers

    - -

    Salome gives you a choice of four different viewers. This wide choice - of instruments providing both common and unique possibilities aims to - give the users of SALOME Platform maximum convenience and ease in their - work.

    - -

    Customizing the viewers you can define settings to be used in them by - default in the Preferences menu.

    - -

    Salome Platform also provides you with Viewer - Toolbars, which make it possible to promptly operate your viewer - scene. Some of the functions are common for all viewers.

    - - - - - -

     

    - -

    VTK 3d  viewer - (Visualization ToolKit Viewer) and OCC - 3d viewer (Open CasCade Viewer) are both useful for creation of - geometrical models in the GEOM module, however, there some differences, - which specialize the use of the modules.

    - -

    OCC 3d viewer is the default - viewer for GEOM Module. Only this viewer gives you the possibility to - select sub-shapes (described in full detail in the help for the GEOM Module). - Unfortunately, you can't visualize meshes in this viewer, for this, use - VTK 3d viewer.   

    - -

    VTK 3d  viewer - is the default viewer for SMESH Module. Using this viewer you'll be able - to visualize and work with meshes.  

    - -

    Most of functions in Viewer Toolbars of these modules are common for - both viewers, they are:

    - - - -

    One more function is available in OCC - 3d viewer only.

    - - - -

     

    - -

    Plot 2d viewer is destined to - the representation of  2d - plots and graphs obtained via Post-Pro module.

    - -

    Its viewer toolbar gives you fast access to the following operations:

    - - - -

     

    - -

    - -

     

    - -

    GL Viewer is used by exterior - modules built-in in the SALOME Platform.

    - - - - diff --git a/doc/salome/gui/KERNEL/whdata/whftdata0.htm b/doc/salome/gui/KERNEL/whdata/whftdata0.htm index abbeed833..ec80b7254 100755 --- a/doc/salome/gui/KERNEL/whdata/whftdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whftdata0.htm @@ -12,17 +12,17 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whfts.htm b/doc/salome/gui/KERNEL/whdata/whfts.htm index f030d8658..7a1060e4a 100755 --- a/doc/salome/gui/KERNEL/whdata/whfts.htm +++ b/doc/salome/gui/KERNEL/whdata/whfts.htm @@ -8,9 +8,9 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whfwdata0.htm b/doc/salome/gui/KERNEL/whdata/whfwdata0.htm index 8b506782c..f73ba00c2 100755 --- a/doc/salome/gui/KERNEL/whdata/whfwdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whfwdata0.htm @@ -14,333 +14,371 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whtdata0.htm b/doc/salome/gui/KERNEL/whdata/whtdata0.htm index d41a28b3d..a037edb04 100755 --- a/doc/salome/gui/KERNEL/whdata/whtdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whtdata0.htm @@ -19,26 +19,26 @@ aTE(2,0,"Installing SALOME","kernel/readme.html"); aTE(2,0,"Running SALOME","kernel/running_salome_pro.htm"); aTE(1,21,"GUI module"); - aTE(2,0,"Introduction to GUI","kernel/introduction_to_iapp.htm"); + aTE(2,0,"Introduction to GUI","introduction_to_gui.htm"); aTE(2,0,"Getting started","kernel/getting_started2.htm"); aTE(2,0,"SALOME desktop","kernel/salome_pro_desktop.htm"); - aTE(2,0,"Viewers","viewers.htm"); - aTE(2,0,"Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm"); - aTE(1,6,"Study management"); + aTE(1,7,"Study management"); aTE(2,0,"Creating a new study","kernel/creating_a_new_study.htm"); aTE(2,0,"Opening studies","kernel/opening_studies.htm"); aTE(2,0,"Saving and closing studies","kernel/saving_a_study.htm"); aTE(2,0,"Editing studies","kernel/editing_studies.htm"); aTE(2,0,"Displaying studies","kernel/displaying_studies.htm"); - aTE(2,0,"Getting and setting study properties","kernel/getting_properties_of_the_study.htm"); + aTE(2,0,"Working with Python Scripts","dump_study.htm"); + aTE(2,0,"Setting study properties","kernel/getting_properties_of_the_study.htm"); aTE(2,0,"Using Object Browser","kernel/using_object_browser.htm"); aTE(2,0,"Using Registry tool","kernel/using_registry.htm"); aTE(2,0,"Using Catalog Generator","kernel/using_catalog_generator.htm"); - aTE(1,5,"Setting Preferences"); + aTE(1,6,"Setting Preferences"); aTE(2,0,"Setting Preferences","setting_preferences.htm"); + aTE(2,0,"Select Color and Font","select_color_and_font.htm"); aTE(2,0,"SALOME preferences","kernel/setting_preferences.htm"); - aTE(2,0,"GEOM preferences","geom_preferences.htm"); - aTE(2,0,"MESH preferences","mesh_preferences.htm"); + aTE(2,0,"Geometry preferences","geom_preferences.htm"); + aTE(2,0,"Mesh preferences","mesh_preferences.htm"); aTE(2,0,"Post-Pro Preferences","post-pro_preferences.htm"); //--> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf0.htm b/doc/salome/gui/KERNEL/whgdata/whlstf0.htm index d4ef2afa3..9f66cfaae 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf0.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf0.htm @@ -34,13 +34,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    -__version__
    _omnipymodule
    2d 1 2 3 4
    3d 1 2 3 4
    +__version__
    _omnipymodule
    16x16
    2d 1 2 3 4
    3d 1 2 3 4


    -able 1 2 3 4 5
    abort
    above 1 2
    abstraction
    access 1 2 3 4 5
    accessible 1 2
    accidentally
    according 1 2 3 4
    account
    achieved
    achieves
    acquainted
    actions
    activated 1 2 3
    active 1 2 3 4
    actual
    actually 1 2
    adapted
    add 1 2 3 4 5
    added
    adding
    addition 1 2
    additional 1 2 3 4 5 6
    adjust
    advanced 1 2 3
    affecting
    again 1 2 3
    aims
    algorithm
    algorithms 1 2
    allow 1 2
    allowing 1 2 3
    allows 1 2 3 4 5 6 7
    along 1 2
    alongside
    already
    always
    amount
    animation
    annoying
    another 1 2
    answer
    any 1 2 3 4 5 6 7 8 9
    anything
    appear 1 2 3 4 5
    appears 1 2
    applets
    application 1 2 3 4 5 6 7 8 9 10 11
    applications 1 2
    applies
    apply 1 2
    approach 1 2 3
    appropriate 1 2
    approximate
    arabic
    architecture 1 2
    architectures
    area 1 2
    areas 1 2
    argument
    arguments
    arrow
    ascending
    ascii 1 2
    ask
    associated 1 2
    attached
    attribute
    attributes
    author 1 2
    auto 1 2
    automatic
    automatically 1 2 3 4 5 6 7
    availability
    available 1 2 3 4 5 6
    avoid
    aware
    awk
    axes 1 2
    axis 1 2
    +able 1 2 3 4
    abort
    above 1 2
    abscissa 1 2
    absolute
    abstraction
    acceptable
    access 1 2 3 4 5 6 7
    accessible 1 2
    accidentally
    according 1 2 3 4 5
    account
    achieved
    achieves
    acquainted
    actions 1 2
    activated 1 2 3
    active 1 2 3 4 5
    activity
    actual
    actually
    adapted
    add 1 2 3 4 5 6
    added
    adding
    addition 1 2
    additional 1 2 3 4 5 6 7
    addressing
    adds
    adjust
    advanced 1 2
    affecting
    again 1 2 3 4
    algorithm
    algorithms 1 2
    allow 1 2
    allowing 1 2 3 4 5
    allows 1 2 3 4 5 6 7 8 9 10 11
    almost
    along 1 2
    alongside
    alpha
    already
    always
    amount
    animation
    annoying
    another 1 2
    answer
    any 1 2 3 4 5 6 7 8 9 10 11 12
    anything
    api 1 2
    appear 1 2 3 4 5 6
    appearance
    appears 1 2
    applets
    application 1 2 3 4 5 6 7 8 9 10 11 12
    applications 1 2
    apply 1 2
    approach 1 2 3
    appropriate 1 2
    approximate
    arabic
    architecture 1 2 3
    architectures
    area 1 2
    areas 1 2
    argument
    arguments
    arrange
    arrow
    ascending
    ascii 1 2
    ask
    assigned
    associated 1 2 3
    attached
    attribute
    attributes
    author 1 2
    auto 1 2
    automatic
    automatically 1 2 3 4 5 6 7 8 9
    availability
    available 1 2 3 4 5
    average
    avi
    avoid
    avoiding
    aware
    awk
    axes
    axis


    -b
    back 1 2
    background
    bar 1 2 3
    base
    based 1 2 3
    bash
    basic 1 2 3 4 5
    basis
    batch 1 2 3
    becomes
    before
    begin
    begins
    behave
    behavior
    being
    below 1 2
    bin 1 2 3
    binaries
    binary 1 2
    blue
    blur
    bmp
    bold
    book
    books
    boost
    boost_version
    boostdir
    borders
    both 1 2 3
    bottom 1 2
    box 1 2 3 4 5 6 7 8 9
    boxes
    brackets
    brief 1 2 3
    bringing
    browse 1 2 3
    browser 1 2 3 4 5 6 7
    bug
    build 1 2
    building
    built 1 2 3
    button 1 2 3 4 5 6 7 8 9
    buttons 1 2 3 4
    -

    -c 1 2 3
    cad 1 2
    cae
    calculation
    calculations 1 2
    call 1 2 3 4
    called 1 2
    calling
    calls
    cam
    cancel
    capability
    caption
    care
    carefully
    carrying
    cars
    cascade 1 2
    case 1 2 3 4 5 6 7
    casroot
    cat
    catalog
    catalogmodulegeneral
    catalogmodulepersonnel
    catalogue 1 2
    categories


    >> +b
    back 1 2
    background 1 2
    bar 1 2 3
    bars 1 2
    base
    based 1 2 3
    bash
    basic 1 2 3 4 5
    basis
    batch 1 2 3 4
    becomes 1 2
    before
    begin
    begins
    behave
    behavior
    behaviour
    being
    below 1 2 3
    better
    bicolor
    big
    bin 1 2 3
    binaries
    binary 1 2
    blue
    blur
    bold
    book
    books
    boost
    boost_version
    boostdir
    borders 1 2
    both 1 2 3
    bottom 1 2 3 4
    box 1 2 3 4 5 6 7 8 9 10 11 12
    boxes


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf1.htm b/doc/salome/gui/KERNEL/whgdata/whlstf1.htm index b7eb501dc..aee38666e 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf1.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf1.htm @@ -33,7 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -cd
    cells
    change 1 2 3 4 5 6 7
    changed
    changes 1 2 3 4
    changing
    chapter
    chapters
    charge
    check
    check_version
    checkbox 1 2 3
    checkboxes
    checked
    checking
    checks
    choice 1 2
    choose 1 2 3 4 5 6 7 8 9 10 11
    chosen 1 2 3
    classic
    clear
    clearall
    click 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    clickable
    clicked
    clicking 1 2
    client
    clone
    close 1 2 3
    closed
    closes 1 2
    closing 1 2 3
    clusters
    code 1 2
    coefficient
    coincide
    collect
    collected
    collects
    color 1 2 3 4 5
    colored
    colors 1 2 3
    column
    columns 1 2 3
    combines
    comfortable
    comma
    command 1 2
    commands
    common 1 2 3 4 5 6 7
    compared
    compatible
    compilation
    compiled
    compiling
    complete 1 2
    completed 1 2
    complex 1 2
    component 1 2 3 4 5 6 7 8 9 10 11 12 13
    components 1 2 3 4 5 6 7 8 9 10 11 12
    compose
    computation 1 2
    computational
    computations
    computer 1 2
    concept 1 2
    concerning
    concerns
    conclusion
    config
    config_files
    config_mandrake10_1
    configurable
    configuration
    configure 1 2
    confirm
    connect
    connected 1 2 3 4
    consists
    console 1 2 3 4 5
    constant
    constantly
    construction 1 2
    contain 1 2 3 4
    container
    containers
    containing 1 2 3
    contains 1 2 3 4 5 6 7 8 9
    content 1 2
    contents
    context 1 2 3 4
    continue
    control 1 2 3
    controls
    convenience 1 2
    convert
    cooperate
    coordinate
    coordinates
    copy 1 2 3 4
    copying
    copyright
    corba 1 2 3
    corner 1 2
    correcting
    corresponding 1 2 3 4 5
    correspondingly
    corresponds
    costs
    coupling 1 2
    cpp
    create 1 2 3 4 5 6 7 8 9 10 11
    created 1 2 3 4 5 6 7 8 9 10 11
    creates
    creating 1 2
    creation 1 2 3 4
    cross 1 2
    csh 1 2
    cshell
    current 1 2 3 4 5 6 7 8
    currently 1 2 3 4 5
    curve
    custom 1 2 3
    customer
    customization
    customizing
    cycles
    cyrillic


    >> +brackets
    brep
    brief 1 2 3
    bringing
    browse 1 2 3 4
    browser 1 2 3 4 5 6 7 8 9
    bug
    build 1 2 3
    building
    built 1 2 3
    button 1 2 3 4 5 6 7 8 9 10
    buttons 1 2 3 4 5
    +

    +c 1 2 3
    cad 1 2
    cae
    calculation
    calculations 1 2
    call 1 2 3 4
    called 1 2
    calling
    calls
    cam
    camera
    cancel
    capability
    caption
    care
    carefully
    carried
    carrying
    cars
    cascade
    case 1 2 3 4 5 6 7
    casroot
    cat
    catalog
    catalogmodulegeneral
    catalogmodulepersonnel
    catalogue 1 2
    categories
    cd
    cells 1 2
    centered
    central
    centred
    change 1 2 3 4 5 6 7 8
    changed
    changes 1 2 3 4
    changing
    channel
    chapters
    characters
    charge
    check 1 2
    check_version
    checkbox 1 2 3
    checkboxes
    checked 1 2 3 4
    checking
    checks
    choice 1 2 3 4
    choose 1 2 3 4 5 6 7 8 9 10 11 12
    chosen 1 2 3
    clamp
    classic
    clear
    clearall
    click 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    clickable
    clicked
    clicking 1 2 3
    client
    clip
    close 1 2 3 4 5
    closed 1 2
    closes 1 2
    closing 1 2 3
    clusters
    code 1 2
    coef
    coincide
    collect
    collected
    collects
    color 1 2 3 4 5 6
    colored 1 2 3 4
    colors 1 2 3
    column 1 2
    columns 1 2 3
    combined
    combines
    comfortable
    comma
    command 1 2
    commands 1 2
    common 1 2 3 4 5 6
    compared 1 2
    compatible
    compilation
    compiled
    compiling
    complete 1 2
    completed 1 2
    complex 1 2
    component 1 2 3 4 5 6 7 8 9 10 11 12 13
    components 1 2 3 4 5 6 7 8 9 10 11 12 13
    compose
    computation 1 2
    computational
    computations
    computer 1 2
    concept 1 2
    concerning
    concerns
    conclusion
    config
    config_files
    config_mandrake10_1
    configurable
    configuration
    configure 1 2
    confirm 1 2
    connect
    connected 1 2 3 4
    consists
    console 1 2 3 4 5 6
    constant
    constantly
    construction 1 2
    consuming
    contain 1 2 3 4
    container
    containers
    containing 1 2 3 4
    contains 1 2 3 4 5 6 7 8 9
    content 1 2 3
    contents 1 2
    context 1 2 3
    continue
    control 1 2 3 4
    controls 1 2
    convert 1 2
    cooperate
    coordinate
    coordinates
    copies
    copy 1 2 3 4
    copying
    copyright
    corba 1 2 3
    corner 1 2 3
    correcting
    corresponding 1 2 3 4 5
    correspondingly
    corresponds 1 2
    costs
    coupling 1 2


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf10.htm b/doc/salome/gui/KERNEL/whgdata/whlstf10.htm index aef9a7b7f..63683dcd1 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf10.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf10.htm @@ -33,13 +33,12 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -won 1 2 3
    word
    words
    work 1 2 3 4 5
    working 1 2 3 4
    would 1 2 3 4
    write 1 2
    written 1 2
    wrong
    www
    +technological
    technologies
    technology
    temp
    temp_directory
    temp_folder
    tempdir
    temporary
    temporarydiskspace
    tensor
    term 1 2
    terminal 1 2
    terms
    test 1 2 3
    tests
    text 1 2 3
    texture
    them 1 2 3 4 5 6 7 8 9
    therefore
    third
    those 1 2 3
    three
    threshold
    thus 1 2
    time 1 2 3 4 5 6 7 8 9 10 11 12
    times
    title 1 2 3 4
    tk
    tmp
    tmp_disk_space
    together
    toggle
    toggles
    toggling
    tolerance
    tool 1 2 3 4
    toolbar 1 2 3 4 5 6 7
    toolbars 1 2
    toolkit
    tools 1 2 3 4 5 6
    top 1 2 3 4 5 6
    topic 1 2
    topics 1 2 3
    topmost
    total
    totality
    touching
    tr
    training
    translate
    translation
    transparency
    transparent
    tree 1 2 3 4 5
    tries
    trihedron
    trolltech
    true
    try 1 2 3 4
    try_existing
    try_native
    try_preinstalled
    twice
    two 1 2 3 4 5 6
    type 1 2 3 4 5 6
    typical
    typing 1 2


    -x
    xml 1 2 3
    xterm
    xxxxx
    +u
    ultimate
    uncheck
    unchecked
    underlined
    undo 1 2
    undone
    unfortunately
    unique
    units
    unix
    unload
    unloaded 1 2
    unnecessary
    unselect
    unselecting
    unused
    up 1 2 3 4 5 6
    update 1 2
    updated 1 2 3 4 5
    uploading 1 2
    upper 1 2
    usability
    usage 1 2
    used 1 2 3 4 5 6 7 8 9 10 11
    user 1 2 3 4 5 6 7 8 9 10 11
    users 1 2
    uses 1 2
    using 1 2 3 4 5 6 7 8 9 10 11
    usr
    usually
    utilities


    -y
    year
    yes 1 2
    yet 1 2
    your 1 2 3 4 5 6 7 8 9 10 11 12 13
    yourselves
    -

    -zone 1 2


    +v 1 2
    valid
    validation
    value 1 2 3 4 5 6
    values 1 2 3
    variable
    variables 1 2
    varible
    variety 1 2
    various 1 2
    ve 1 2
    vector
    ver
    ver_major
    ver_minor
    version 1 2 3 4 5
    versions
    vertical 1 2 3 4
    vertically
    very 1 2 3 4 5
    view 1 2 3 4 5 6 7 8
    viewer 1 2 3 4 5 6 7
    viewers 1 2 3 4 5 6 7
    viewing 1 2
    visual
    visualisation 1 2
    visualization 1 2 3 4 5
    visualize 1 2


    >> + diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf11.htm b/doc/salome/gui/KERNEL/whgdata/whlstf11.htm new file mode 100755 index 000000000..2cbc447aa --- /dev/null +++ b/doc/salome/gui/KERNEL/whgdata/whlstf11.htm @@ -0,0 +1,48 @@ + + +Search Words List + + + + + + + +

    <<

    +

    +vtk 1 2 3 4 5
    vtkhome
    +

    +wait
    waiting
    want 1 2 3
    warned
    warning 1 2
    way 1 2 3
    web
    welcome 1 2
    what 1 2 3 4 5 6
    whenever 1 2
    wherever
    whether
    while
    whole 1 2 3
    whose
    wide 1 2 3
    widgets
    width 1 2
    will 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    window 1 2 3 4 5 6 7 8 9 10 11 12
    windowed
    windows 1 2 3 4 5 6 7 8
    wireframe 1 2
    wish
    wish8
    within 1 2 3 4
    without 1 2 3 4 5 6
    wizard
    wizards
    won 1 2 3
    word
    words
    work 1 2 3 4 5 6
    working 1 2 3 4 5 6
    would 1 2 3 4
    write 1 2
    written 1 2
    wrong
    www
    +

    +x 1 2 3
    xml 1 2 3
    xterm
    xxxxx
    +

    +y 1 2 3
    year
    yes 1 2
    yet 1 2
    your 1 2 3 4 5 6 7 8 9 10 11 12
    yourselves
    +

    +zone 1 2
    zones
    zoom
    zoomed
    zooming


    + + + + diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf2.htm b/doc/salome/gui/KERNEL/whgdata/whlstf2.htm index f933f9ce1..5c35d3302 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf2.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf2.htm @@ -33,11 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -d
    data 1 2 3 4 5 6 7 8 9 10
    database
    date 1 2
    debugging
    default 1 2 3 4 5 6 7 8 9 10 11 12 13
    define 1 2 3 4 5
    defined 1 2
    definite 1 2 3 4 5 6 7 8 9
    definition 1 2 3
    definitions
    delays
    demand
    demands
    dependancies
    dependencies
    depending
    depends 1 2
    derived
    descending
    described 1 2 3 4
    describes
    describing 1 2
    description 1 2 3
    descriptions 1 2
    design
    desired
    desktop 1 2 3 4 5 6 7
    destination
    destined 1 2 3 4 5
    detail 1 2
    detailed 1 2
    details
    dev
    developer
    development 1 2
    developments
    diagrams
    dialog 1 2 3 4 5 6 7 8 9
    dialogs
    differ
    difference 1 2 3 4
    differences
    different 1 2 3 4 5 6 7 8 9 10 11
    differs
    digital
    digits
    dir
    direction
    directories 1 2
    directory 1 2 3 4 5
    disable 1 2
    disable_flag
    disk 1 2
    display 1 2 3 4 5 6 7
    displayed 1 2 3 4 5 6 7 8 9
    displaying 1 2 3
    displays 1 2 3 4 5
    distinction
    distribute
    distributed
    distribution
    divided 1 2
    dockable 1 2 3
    document 1 2 3 4
    does 1 2
    doing
    domain 1 2
    don 1 2
    done
    dot
    double
    down 1 2 3
    doxygen
    doxytag
    doxywizard
    drag
    dragging
    dramatically
    draw
    drive
    drop
    dropping
    dump
    dumpversion
    duplicate
    dynamic
    dynamically
    +cpp
    create 1 2 3 4 5 6 7 8 9 10 11 12 13
    created 1 2 3 4 5 6 7 8 9 10 11 12
    creates 1 2
    creating 1 2
    creation 1 2 3
    cross 1 2
    csh 1 2
    cshell
    ctrl
    current 1 2 3 4 5 6 7 8 9 10 11
    currently 1 2 3 4
    cursor
    curve
    custom 1 2 3 4
    customer
    customization
    cycles
    cyrillic
    +

    +d
    data 1 2 3 4 5 6 7 8 9 10 11
    database
    date 1 2
    debugging
    decrease
    decreases
    default 1 2 3 4 5 6 7 8 9 10 11
    defaults
    define 1 2 3 4 5 6 7 8
    defined 1 2 3
    defines
    definite 1 2 3 4 5 6 7
    definition 1 2 3
    definitions
    delays
    deleted
    demand 1 2
    demands
    dependancies
    dependencies
    depending
    depends 1 2
    derived
    descending
    described 1 2
    describes
    describing 1 2
    description 1 2 3
    descriptions 1 2
    design
    designed
    desired
    desktop 1 2 3 4 5 6
    destination
    destined 1 2 3 4
    detailed
    details
    dev
    developer
    development 1 2
    developments
    device
    diagrams
    dialog 1 2 3 4 5 6 7 8 9 10 11 12
    dialogs
    differ
    difference 1 2 3 4
    different 1 2 3 4 5 6 7 8 9 10
    differently
    differs
    digital
    digits
    dir
    direction 1 2
    directories 1 2
    directory 1 2 3 4 5
    disable 1 2
    disable_flag
    disabled
    disk 1 2
    display 1 2 3 4 5 6 7 8
    displayed 1 2 3 4 5 6 7 8 9 10
    displaying 1 2
    displays 1 2 3 4 5
    distance
    distinction
    distribute
    distributed
    distribution
    divided 1 2 3
    divides
    dockable 1 2 3 4
    document 1 2 3 4 5
    does 1 2
    doing
    domain 1 2
    dominant
    don
    done 1 2
    dot
    double
    down 1 2 3
    doxygen
    doxytag
    doxywizard
    dragging
    dramatically
    drive
    drop
    dropping
    dump
    dumpversion
    dynamic
    dynamically 1 2


    -e 1 2 3 4
    ease
    easier
    easily
    easy
    economically
    edges
    edit 1 2 3 4
    editing 1 2
    editor
    efficient
    egrep
    either 1 2 3
    electrical
    electronic
    element
    elements
    empty 1 2
    enable
    enables
    encouraging
    end 1 2 3
    enforcing
    engine
    enough
    ensure
    ensuring
    enter 1 2 3 4
    entered
    entity
    entry 1 2
    env
    env_
    env_for_launch
    env_products
    env_vtk
    environment 1 2 3 4 5 6
    environments 1 2
    equal
    equipment
    error
    etc 1 2 3 4 5 6
    even 1 2
    ever
    every 1 2
    everything
    evolutions
    evolve
    ex
    exact
    exactly
    examle
    example 1 2 3 4 5 6
    exception
    exchanges
    execution 1 2
    exist
    existence
    existing 1 2 3 4 5 6
    exists
    expandability
    expanding
    expectations
    exploits
    explorer
    export
    exports
    exposes
    extended
    extensions
    exterior
    external
    extracting
    extremely


    >> +e 1 2 3 4
    easier
    easily
    easy
    economically
    edges
    edit 1 2 3 4
    editable
    editing 1 2
    edition
    editor
    efficient


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf3.htm b/doc/salome/gui/KERNEL/whgdata/whlstf3.htm index e3288fafe..b552245d4 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf3.htm @@ -33,15 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -f
    face 1 2 3
    faces
    facilitated
    facilitates
    fact 1 2
    factory
    fail
    fails
    false
    fast
    feature
    features 1 2
    field 1 2 3 4 5
    fields
    fig
    figure 1 2
    file 1 2 3 4 5 6 7 8 9 10
    files 1 2 3 4 5
    fill
    find 1 2 3
    find_in_path
    finds
    finely
    finish 1 2
    finishes
    finite
    first 1 2
    fit
    five
    flag
    flexibility
    flexible 1 2 3
    focus
    folder 1 2
    follow 1 2 3
    following 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    font 1 2 3
    forget
    format 1 2 3 4 5
    formats
    four 1 2
    frame
    framework 1 2
    free
    friendly
    front
    full 1 2 3 4
    function 1 2 3
    function_name
    functional
    functionality 1 2 3 4 5 6 7 8
    functioning
    functionnalities
    functions 1 2 3 4 5
    fundamental
    further
    -

    -g 1 2
    gcc
    general 1 2 3 4 5
    generate
    generated 1 2
    generates 1 2
    generator 1 2
    generators
    generic 1 2
    geom 1 2 3 4 5 6 7
    geometrical 1 2 3
    geometry
    get 1 2
    getting 1 2 3 4
    give 1 2
    given 1 2
    gives 1 2 3 4 5
    gl
    glossary
    go 1 2
    graph 1 2
    graphical 1 2
    graphs 1 2 3 4
    graphviz
    greater
    greek
    grep
    grouped
    gui 1 2 3 4 5 6 7 8
    +egrep
    either 1 2 3 4
    electrical
    electronic
    element 1 2 3
    elements
    empty 1 2
    enable
    enables
    encouraging
    end 1 2 3 4 5
    enforcing
    engine
    enough
    ensure
    ensuring
    enter 1 2 3 4
    entered
    entity
    entry 1 2
    env
    env_
    env_for_launch
    env_products
    env_vtk
    environment 1 2 3 4 5 6
    environments 1 2
    equal
    equally
    equipment
    error 1 2
    etc 1 2 3 4 5 6
    even 1 2
    ever
    every 1 2
    everything
    evolutions
    evolve
    ex
    exact
    exactly 1 2
    examle
    example 1 2 3 4 5 6
    exceeds
    exception
    exchanges
    execution 1 2
    exist
    existence
    existing 1 2 3 4 5 6
    exists
    expandability
    expanding
    expectations
    expert
    exploits
    explorer
    export 1 2
    exposes
    extended
    extensions
    external
    extracting
    extremely


    -h 1 2
    hand 1 2 3
    handle
    handled
    handler
    handling
    happydoc
    hard 1 2
    hasn
    haven
    having 1 2 3
    hdf 1 2 3 4
    hdf5
    hdf5home
    healing
    hello
    help 1 2 3 4 5 6 7 8 9 10 11
    helpful
    helps 1 2
    here 1 2 3 4 5
    heterogeneous
    hide 1 2 3 4
    hides
    hiding 1 2
    high
    higher
    highlighted 1 2
    hints
    history
    home
    horizontal 1 2 3 4 5
    horizontally
    host
    hotspot
    hotspots
    how 1 2
    hpp
    html 1 2
    hxx
    +f
    face 1 2 3
    faces 1 2
    facilitated
    facilitates
    fact 1 2
    factory
    fail
    fails
    false
    families
    feature 1 2
    features 1 2
    field 1 2 3 4 5
    fields 1 2
    fig
    figure
    figures
    file 1 2 3 4 5 6 7 8 9 10 11 12
    files 1 2 3 4 5 6
    fill
    find 1 2 3
    find_in_path
    finds
    finely
    finish 1 2 3
    finishes
    finite
    first 1 2 3 4 5
    fit
    flag
    flexibility 1 2
    flexible 1 2 3
    focal
    focus
    folder 1 2 3
    follow 1 2
    following 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    font 1 2 3 4
    fonts
    forget
    format 1 2 3 4
    formats
    forth
    fps
    frame
    frames
    framework 1 2
    free 1 2
    friendly
    fulfill
    full 1 2
    fully
    function 1 2 3
    function_name
    functional
    functionalities
    functionality 1 2 3 4 5 6
    functioning
    functions 1 2 3 4
    fundamental
    further


    -i 1 2 3 4
    iapp
    icon 1 2
    icons 1 2
    idea
    identification 1 2
    identify
    idl 1 2
    ie


    >> +g 1 2
    gaps
    gauss 1 2
    gcc
    general 1 2 3 4 5
    generate 1 2
    generated 1 2 3
    generates 1 2
    generator 1 2
    generators
    generic 1 2
    geom 1 2
    geometrical 1 2 3 4
    geometry 1 2 3 4 5
    get 1 2
    getting 1 2 3


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf4.htm b/doc/salome/gui/KERNEL/whgdata/whlstf4.htm index 2e5e1f3ab..081f5910b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf4.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf4.htm @@ -33,13 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -if 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    iges
    ignored
    image
    images
    immediately
    implement 1 2
    implementation 1 2
    implementing
    implied
    import 1 2 3
    important
    imported 1 2 3
    imposed
    impossible
    improves
    inc
    included
    includes 1 2
    including 1 2
    inclusive
    increasingly
    incrementally
    independence
    independent
    index
    indicate 1 2
    information 1 2 3 4 5 6 7 8 9
    initial 1 2
    input 1 2
    insert
    inside 1 2 3 4
    inspect
    instalation
    install 1 2
    install_binary
    install_disk_space
    install_source
    install_wizard_caption
    install_wizard_copyright
    install_wizard_license_info
    install_wizard_root_directory
    install_wizard_version
    installation 1 2
    installation_mode
    installation_script_name
    installdiskspace
    installed 1 2
    installing
    installwizard_root_directory
    installworkxxxxx
    instances
    instead
    instrumental
    instruments
    integer
    integers
    integrate
    integrated 1 2 3 4
    integration 1 2 3 4
    intend
    interaction
    interface 1 2 3 4 5 6
    interfaces 1 2 3 4
    internal 1 2
    internet
    interoperability
    interoperable
    interpreter 1 2
    interval
    introduced
    introduction 1 2 3 4
    invalid
    invoke
    invoked
    ior 1 2
    isolines
    ispython
    item
    items 1 2
    itself
    +give
    given 1 2 3
    gives 1 2 3 4 5
    gl
    global
    glossary
    go 1 2
    graph
    graphic
    graphical 1 2 3
    graphs 1 2 3
    graphviz
    great
    greater
    greatly
    greek
    grep
    grouped
    groups 1 2
    gui 1 2 3 4 5 6 7 8 9 10


    -java
    jpeg
    jpg
    just 1 2
    +h 1 2
    half
    hand 1 2 3
    handle
    handled
    handler
    handling
    happydoc
    hard 1 2
    hasn
    haven
    having 1 2 3
    hdf 1 2 3 4
    hdf5
    hdf5home
    healing
    height 1 2
    hello
    help 1 2 3 4 5 6 7 8 9
    helpful
    helps 1 2
    here 1 2 3 4
    heterogeneous
    hide 1 2 3
    hiding
    high
    higher
    highlight
    highlighted 1 2
    hints
    history
    home
    horizontal 1 2 3 4
    horizontally
    host
    hotspot
    hotspots
    how 1 2
    hpp
    html 1 2
    hxx


    -k
    kbytes
    kernel 1 2 3
    key
    kill
    killall
    kind 1 2
    know
    -

    -l
    labels 1 2
    language
    larger
    last 1 2
    latin
    launch 1 2 3 4 5
    launched 1 2 3 4
    launches
    launching 1 2 3 4
    layer
    layout
    ld_library_path
    lead
    learn
    learning
    left 1 2 3
    legend 1 2
    level 1 2 3
    lib
    libcosnotify4
    libhdf5
    libmed
    libomniorb4
    libqwt
    libraries
    library 1 2
    libstdplugin
    libtcl8
    libtk8
    libvtkcommon
    license
    like 1 2 3 4 5 6 7 8 9
    likely
    limits
    line 1 2 3 4
    linear
    lines 1 2
    link 1 2 3
    links 1 2
    linux 1 2
    list 1 2 3 4 5 6 7
    list_of_prerequisites
    ll 1 2
    load 1 2
    loaded 1 2 3 4 5
    loading 1 2 3
    locate
    located 1 2 3 4 5
    location
    lock
    locked
    log
    logarithmic 1 2 3
    logger
    long
    look
    looks 1 2
    lost
    lot
    lower 1 2 3


    >> +i 1 2 3 4
    icon 1 2
    icons 1 2
    idea
    identification 1 2
    identify
    idl 1 2
    ie
    if 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    iges
    ignored
    image
    images 1 2
    immediately
    implement 1 2
    implementation 1 2
    implementing
    implied
    import 1 2 3
    important
    imported 1 2 3 4
    imposed
    impossible
    improves
    inc
    included
    includes 1 2
    including 1 2 3
    inclusive
    increase
    increases 1 2
    increasingly
    increment 1 2
    incrementally
    independence
    independent
    index
    indexing
    indicate 1 2
    information 1 2 3 4 5 6 7 8
    initial
    input 1 2
    insert
    inside 1 2 3 4 5
    inspect
    inspected
    instalation
    install 1 2
    install_binary
    install_disk_space
    install_source
    install_wizard_caption
    install_wizard_copyright
    install_wizard_license_info
    install_wizard_root_directory
    install_wizard_version
    installation 1 2
    installation_mode
    installation_script_name
    installdiskspace
    installed 1 2
    installing
    installwizard_root_directory
    installworkxxxxx
    instances
    instead
    instrumental
    integer
    integers
    integrate
    integrated 1 2 3 4
    integrates
    integration 1 2 3 4
    intend
    interaction
    interface 1 2 3 4 5 6 7
    interfaces 1 2 3 4
    interior
    internal 1 2
    internet
    interoperability
    interoperable
    interpreter 1 2
    interval 1 2
    introduced
    introduction 1 2 3 4
    invalid
    invoke
    invoked


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf5.htm b/doc/salome/gui/KERNEL/whgdata/whlstf5.htm index 0626de045..a128c7826 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf5.htm @@ -33,13 +33,15 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -m
    machine 1 2
    machines
    macintosh
    macro
    main 1 2 3 4 5 6 7 8 9 10 11 12
    major
    make 1 2 3 4
    make_dir
    make_env
    makes
    manage 1 2
    management 1 2 3
    mandrake
    mandrake10
    manual
    manually
    manuals
    mapped
    mark 1 2
    marked 1 2
    marker
    markers
    market
    massively
    master
    matches
    max
    maximize
    maximized
    maximum
    means 1 2 3 4 5
    mechanisms
    med2home
    meet
    memorize
    mentioned
    menu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    menubar
    menus 1 2 3
    mesh 1 2 3 4
    meshes 1 2
    meshing 1 2
    message 1 2 3
    messages 1 2
    middle
    min
    minimized 1 2
    minor
    missed
    mistakes
    mix
    mode 1 2 3 4 5 6
    model 1 2
    modeling 1 2
    models 1 2 3
    modern
    modes
    modification 1 2
    modifications
    modify 1 2
    modifying
    module 1 2 3 4 5 6 7 8 9 10 11 12 13
    module_root_dir
    module_src_dir
    module1
    module2
    modules 1 2 3 4 5 6 7 8 9 10 11
    modulus
    moment
    mouse 1 2
    move
    mozilla
    msg2qm
    msg2qm_root
    much
    multi 1 2 3 4 5 6
    multifile 1 2
    multiple
    multitier
    must 1 2 3
    +ior 1 2
    isolines
    ispython
    item
    items 1 2
    iterations
    itself
    +

    +java
    just 1 2
    +

    +k
    kbytes
    kernel 1 2 3
    key 1 2
    keyboard
    kill
    killall
    kind 1 2
    know
    knowledge


    -n
    name 1 2 3 4 5 6 7
    named 1 2
    names
    native
    natural
    nature
    navigate 1 2
    navigating
    navigation 1 2
    navigator
    necessary 1 2 3 4 5 6
    need 1 2 3 4
    netgen
    netgenroot
    netscape 1 2
    new 1 2 3 4 5 6 7 8 9 10
    newer
    next 1 2 3 4 5 6
    nf
    nodes 1 2
    normal
    note 1 2
    notes
    noticeably
    notifd
    notification
    notion
    now
    null
    number 1 2 3 4 5
    numbers 1 2
    numeric 1 2 3 4
    numerical 1 2 3 4
    numerous
    +l
    labels 1 2
    language
    larger
    largest
    last 1 2
    latest
    latin
    launch 1 2 3 4 5
    launched 1 2 3 4 5
    launches
    launching 1 2 3 4
    layer
    layout 1 2
    ld_library_path
    lead
    learn
    learning
    left 1 2 3 4 5 6
    legend
    length
    less
    level 1 2 3 4
    lib
    libcosnotify4
    libhdf5
    libmed
    libomniorb4
    libqwt
    libraries
    library 1 2
    libstdplugin
    libtcl8
    libtk8
    libvtkcommon
    license
    like 1 2 3 4 5 6 7 8 9
    likely
    limitation
    limits
    line 1 2 3 4 5 6 7
    linear
    lines 1 2
    link 1 2
    links 1 2
    linux 1 2
    list 1 2 3 4 5 6 7
    list_of_prerequisites
    listed
    ll
    load 1 2 3
    loaded 1 2 3 4 5 6
    loading 1 2 3 4
    local
    locate
    located 1 2 3 4 5 6
    location 1 2
    lock
    locked 1 2
    locking
    log
    logarithmic 1 2
    logger
    long
    look
    lookout 1 2
    looks 1 2
    lost
    lot
    lower 1 2 3 4


    -object 1 2 3 4 5 6 7 8 9
    objectives
    objects 1 2 3 4 5 6 7 8
    obligatory
    obtained
    occ 1 2 3 4 5
    occ_version_major
    occ_version_minor
    occupies
    off
    offered
    often
    ok 1 2 3
    omg
    omit
    omni
    omninotify
    omniorb
    omniorbdir
    omniorbpy


    >> +m
    machine 1 2
    machines
    macintosh
    macro
    magnification
    main 1 2 3 4 5 6 7 8 9 10 11 12 13
    major
    make 1 2 3
    make_dir
    make_env
    makes
    manage 1 2
    management 1 2 3
    mandrake
    mandrake10
    manipulate
    manipulator
    manual 1 2
    manually
    manuals
    mapped
    mark
    marked
    marker
    markers
    market
    massively
    master
    matches
    matrix
    max
    maximize
    maximum
    mean
    means 1 2 3 4 5 6
    mechanism
    mechanisms
    med2home
    meet
    memory
    mentioned
    menu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    menubar
    menus 1 2 3
    mesh 1 2 3 4 5 6
    meshes 1 2
    meshing 1 2
    message 1 2
    messages 1 2
    middle
    min
    minimized
    minimum
    minor
    missed
    mistakes
    mix


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf6.htm b/doc/salome/gui/KERNEL/whgdata/whlstf6.htm index d5e75b264..82729334b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf6.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf6.htm @@ -33,9 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -one 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    ones 1 2
    online
    open 1 2 3 4 5 6 7 8 9 10 11 12
    opencascade
    opening 1 2
    opens 1 2 3
    operate
    operation 1 2
    operations 1 2 3
    optimization
    optimize
    optimized
    option 1 2 3 4 5 6 7
    optional
    optionally 1 2
    options 1 2 3 4 5
    order
    org
    orientation 1 2
    origin 1 2
    originality
    os
    os_version
    others 1 2
    otherwise 1 2
    out
    outline
    output 1 2
    outside
    overloads
    own 1 2 3 4
    +mode 1 2 3 4 5 6 7
    model 1 2
    modeling 1 2
    models 1 2
    modern
    modes 1 2
    modification 1 2 3
    modifications
    modify 1 2 3
    modifying
    module 1 2 3 4 5 6 7 8 9 10 11 12
    module_root_dir
    module_src_dir
    module1
    module2
    modules 1 2 3 4 5 6 7 8 9 10
    modulus
    moment 1 2
    momentarily
    mouse 1 2 3
    move
    movement
    movements
    mozilla
    msg2qm
    msg2qm_root
    much
    multi 1 2 3 4 5 6
    multifile 1 2
    multiple
    multiplied
    multiplies
    multitier
    must 1 2 3


    -p
    package 1 2 3
    packages
    page 1 2
    pages 1 2
    pane 1 2
    panning
    parallel
    parameter 1 2
    parameters 1 2 3 4 5 6 7
    part
    particular
    particularly
    parts 1 2 3
    party
    pass
    paste 1 2
    pasting
    path
    pc
    perform 1 2
    performance 1 2 3
    performed
    permission
    phenomena
    phrases
    physical 1 2 3
    physics
    pick
    picks
    pickup
    pickup_env
    pickup_env_flag
    pickupenv
    picture
    pid
    piece
    place 1 2 3 4 5
    placed 1 2 3
    platform 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    platforms
    please 1 2
    plot 1 2 3
    plot2d 1 2
    plots
    plug
    png
    po
    point 1 2
    points 1 2 3
    pop 1 2 3 4
    popup
    popups
    port
    portkill
    position 1 2 3 4
    positions 1 2
    positively
    possibilities
    possibility 1 2 3 4 5 6
    possible 1 2 3 4 5 6 7
    post 1 2 3 4
    powerful
    pre 1 2
    precision
    precompiled
    predefined 1 2 3
    preferable
    preferences 1 2 3 4 5 6 7 8
    prefix
    preinstalled
    preliminary
    prerequisite
    prerequisites
    preselection
    presentation 1 2
    presentations 1 2
    presented
    press 1 2
    pressing
    previous 1 2
    previously 1 2 3 4
    print 1 2
    print_env
    prints
    priority
    pro 1 2
    probably
    problem 1 2
    problems
    procedure 1 2 3
    proceed 1 2
    process 1 2 3 4
    processes
    processing 1 2 3 4
    processors 1 2
    product
    product_context
    product_description
    product_name
    product_script_name
    product_version
    productivity
    products 1 2 3
    products_directory
    profile
    program
    programmatic
    programming
    progress
    prompted
    prompting
    promptly
    proper
    properly
    properties 1 2 3 4
    proposed
    proposes
    provide 1 2
    provided 1 2 3 4 5
    provides 1 2 3 4 5 6 7 8
    providing 1 2 3


    >> +n 1 2
    name 1 2 3 4 5 6 7 8
    named 1 2
    names 1 2
    native
    natural
    nature
    navigate 1 2
    navigating
    navigation 1 2 3
    navigator
    necessary 1 2 3 4 5 6 7
    need 1 2 3 4 5
    needed
    negative
    netgen
    netgenroot
    netscape 1 2
    new 1 2 3 4 5 6 7 8 9 10
    newer
    next 1 2 3 4 5
    nf
    nodes 1 2
    normal
    note
    notes
    noticeably
    notifd
    notification
    notify
    notion
    now
    nth
    null 1 2
    number 1 2 3 4 5 6
    numbers 1 2 3
    numeric 1 2 3 4
    numerical 1 2 3
    numerous
    +

    +object 1 2 3 4 5 6 7 8 9 10 11
    objectives
    objects 1 2 3 4 5 6 7 8 9
    obligatory
    occ 1 2 3 4
    occ_version_major
    occ_version_minor
    occupies
    off
    offered
    often
    ok 1 2 3
    omg
    omit
    omni
    omninotify
    omniorb
    omniorbdir
    omniorbpy
    once
    one 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    ones
    online
    opaque
    open 1 2 3 4 5 6 7 8 9 10 11 12 13
    opencascade
    opening 1 2
    opens 1 2
    operated
    operation 1 2 3
    operations 1 2 3
    optimization
    optimize 1 2
    optimized
    option 1 2 3 4 5 6 7
    optional
    optionally 1 2
    options 1 2 3 4 5 6
    order
    ordinate 1 2
    org
    orientation 1 2
    origin 1 2
    original
    originality
    os
    os_version
    others 1 2
    otherwise 1 2 3 4
    out 1 2 3
    outline
    output 1 2
    outside 1 2


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf7.htm b/doc/salome/gui/KERNEL/whgdata/whlstf7.htm index 9d419a53d..33b9749b9 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf7.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf7.htm @@ -33,13 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -pure
    purpose
    purposes
    py
    pyqt
    pyqtdir
    python 1 2 3 4 5 6 7 8
    pythonhome
    +overloads
    own 1 2 3 4


    -qglobal
    qm
    qt
    qt_version_str
    qtdir
    quality 1 2
    quantities
    question
    quick 1 2 3
    quickly 1 2
    quit
    quits
    quoted
    qwt
    qwthome
    -

    -radio
    range 1 2
    ranges
    rapidly
    re
    reactivity
    read 1 2 3
    reading
    readme
    realize
    receives
    recommended
    record
    red
    redirection
    redo
    reduce
    reduces
    refer 1 2
    reference 1 2 3 4
    references
    refers
    refined
    refresh
    refreshment
    registry 1 2
    reinstall
    reinstallation
    reinstalling
    related 1 2
    relative
    release
    relevant
    reliability
    reload
    relocate
    remains
    remote 1 2
    remove
    removed
    removing
    repeated
    represent 1 2
    representation 1 2 3 4 5 6
    represented
    represents 1 2 3 4
    required 1 2
    requirements 1 2 3
    requires 1 2
    reset 1 2
    resized
    resizes
    resource
    resources
    respective
    responds
    responsible
    restore
    restored
    result 1 2
    resulting
    results 1 2
    retroactive
    returns
    reusable
    reuse
    reveals
    right 1 2 3 4 5 6 7 8
    risks
    robustness
    roles
    root
    rotate
    rotation
    rules
    run 1 2 3
    runic
    runinstall
    running 1 2 3
    runs
    runsalome 1 2
    runsalomewithport
    -

    -s 1 2 3
    safe
    salome 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    salome_modulecatalog_server
    same 1 2 3 4 5 6 7
    save 1 2 3 4
    saved 1 2 3
    saves 1 2
    saving 1 2 3 4
    scalar 1 2
    scale 1 2
    scaling 1 2
    scene
    schemas
    scheme
    schemes 1 2
    scientific
    screen
    script 1 2 3 4
    scripts 1 2 3
    scroll
    search 1 2 3 4 5
    searching
    second
    seconds
    section 1 2
    sections 1 2
    sectionthis
    sed
    see 1 2 3 4 5 6 7 8 9 10 11
    select 1 2 3 4 5 6 7 8 9 10
    selectall
    selected 1 2 3 4
    selecting
    selection 1 2 3
    sends
    sensitive 1 2 3
    separate
    separated 1 2
    server
    servers 1 2
    serves
    service
    services 1 2
    session 1 2 3 4 5 6
    sessions 1 2 3
    set 1 2 3 4 5 6 7 8 9 10
    sets 1 2
    setting 1 2 3 4 5 6
    settings 1 2 3 4 5 6 7 8 9
    severe


    >> +p
    package 1 2 3
    packages
    page
    pages 1 2
    pane 1 2
    panning
    parallel
    parameter 1 2
    parameters 1 2 3 4 5 6
    parent
    part 1 2
    particular
    particularly
    parts 1 2
    party
    pass
    paste 1 2
    pasting
    patent
    path 1 2
    pc
    per
    perform 1 2 3
    performance 1 2 3
    performed 1 2 3
    permission
    phenomena
    phrases
    physical 1 2 3
    physics
    pick
    picking
    picks
    pickup
    pickup_env
    pickup_env_flag
    pickupenv
    picture
    pid
    piece
    pixels
    place 1 2 3
    placed 1 2 3
    placement 1 2
    platform 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    platforms
    played
    please
    plot 1 2
    plot2d 1 2
    plug
    po
    point 1 2 3
    points 1 2 3 4
    pop 1 2 3 4
    popup
    popups
    port
    portkill
    position 1 2 3 4
    positions 1 2 3 4
    positively
    possibility 1 2 3 4 5 6
    possible 1 2 3 4 5 6 7
    post 1 2 3 4 5 6
    powerful
    pre 1 2
    precision
    precompiled
    predefined 1 2 3
    preferable
    preferences 1 2 3 4 5 6 7
    prefix
    preinstalled
    preliminary
    prerequisite
    prerequisites
    preselected
    preselection
    present
    presentation 1 2 3
    presentations 1 2 3
    presented
    press 1 2
    pressed
    pressing 1 2
    prevents
    preview
    previous 1 2
    previously 1 2 3 4
    primitive
    primitives
    print 1 2
    print_env
    prints
    priority
    pro 1 2 3 4 5
    probably
    problem 1 2 3
    problems
    procedure 1 2
    proceed 1 2
    process 1 2 3 4 5
    processed
    processes
    processing 1 2 3 4
    processors 1 2
    produces
    product
    product_context
    product_description
    product_name
    product_script_name
    product_version
    productivity 1 2
    products 1 2 3
    products_directory
    profile
    program
    programmatic
    programming
    progress 1 2
    progressive
    prompted
    prompting
    prone
    proper
    properly
    properties 1 2 3 4 5
    proposed
    proposes
    provide 1 2
    provided 1 2 3 4 5
    provides 1 2 3 4 5 6 7 8
    providing 1 2
    publish
    published 1 2
    pure
    purpose
    purposes


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf8.htm b/doc/salome/gui/KERNEL/whgdata/whlstf8.htm index 8fe023ad9..830511800 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf8.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf8.htm @@ -33,9 +33,13 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -sh
    shading 1 2
    shapes
    shell 1 2 3 4
    short 1 2
    shot
    should 1 2 3 4
    show
    shown 1 2
    shows 1 2 3
    shrink
    signal
    signals
    signature
    sigterm
    simple
    simplify
    simply
    simulate
    simulation
    simulations 1 2
    simultaneously 1 2 3
    since 1 2
    single
    sip
    sipdir
    situations
    size 1 2 3 4 5 6
    sizes 1 2
    sizing
    skip
    skipped
    slightly
    small
    smesh 1 2 3
    smooth
    so 1 2 3 4 5 6 7
    software 1 2 3
    solution
    solutions
    solver
    solvers 1 2
    something
    sort 1 2
    sort_path
    sorting
    source 1 2 3 4
    sources
    space
    spaces
    special 1 2 3 4 5 6 7
    specialize
    specific 1 2 3 4 5 6 7
    specification
    specifies
    specify 1 2 3 4
    spin
    splines
    split
    standalone
    standard 1 2 3 4 5 6 7 8
    standard_version
    start 1 2
    started 1 2 3 4 5
    starting 1 2 3 4 5
    state
    stations
    status
    step 1 2 3
    steps 1 2
    still
    store 1 2 3
    stored 1 2 3 4 5
    storing
    strict
    string
    strongly
    structural
    structure 1 2 3 4 5
    structures
    studies 1 2 3 4 5 6 7 8 9
    study 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    study1
    style
    sub 1 2 3
    submenu 1 2 3
    subsets
    successfully
    suit
    summarizes
    superv
    supervision 1 2 3 4
    supervisor
    supplementary 1 2
    support 1 2
    supported
    supported_installation_modes
    supports
    supposed
    sure
    sweep
    sweeping
    swig
    switch
    switched
    switching
    system 1 2 3 4 5
    systems 1 2
    +py
    pyqt
    pyqtdir
    pyramids
    python 1 2 3 4 5 6 7 8 9 10
    pythonhome


    -t 1 2 3 4 5 6 7 8
    tab 1 2
    table 1 2
    tabs 1 2
    tag
    tags
    tailored
    take
    taken 1 2
    takes
    target
    target_directory
    target_platform
    targetdir
    tcl
    tclhome
    tclsh8
    technological
    technologies
    technology
    temp
    temp_directory
    temp_folder
    tempdir
    temporary
    temporarydiskspace
    term 1 2
    terminal 1 2
    terms
    test 1 2 3
    tests
    text 1 2 3 4


    >> +qglobal
    qm
    qt
    qt_version_str
    qtdir
    quality 1 2 3
    quantities
    question
    quick 1 2 3
    quickly 1 2
    quit 1 2
    quite
    quits
    quoted
    qwt
    qwthome
    +

    +radio
    rainbow
    range 1 2
    ranges
    ranging
    rapidly
    rate
    rather
    ratio
    re 1 2
    reactivity
    read 1 2 3
    reading
    readme
    real
    realize
    reassign
    receives
    recommended 1 2
    record 1 2
    recorded
    recorder
    recording
    records
    red
    redirection
    redo
    reduce
    reduces
    refer 1 2
    reference 1 2 3 4 5
    references
    refers
    refined
    refining
    refresh
    refreshment
    regimes
    registry 1 2
    reinstall
    reinstallation
    reinstalling
    related 1 2
    relative 1 2 3
    release
    relevant
    reliability
    reload
    relocate
    remains
    remote
    remove
    removed
    removing
    renamed
    rendering
    reopened
    repeated
    represent 1 2
    representation 1 2 3 4
    representative
    represents 1 2 3
    required 1 2
    requirements 1 2 3
    requires 1 2 3
    reset
    resolution
    resolved
    resource
    resources 1 2
    respective 1 2
    respectively
    responds
    responsible
    rest
    restore 1 2 3 4
    restored 1 2 3
    result
    resulting
    results 1 2
    retroactive
    reusable
    reuse
    reversibly 1 2
    right 1 2 3 4 5 6 7 8 9 10 11
    risks
    robustness
    roles
    root
    rotate
    rotation
    rules
    run 1 2 3
    runic
    runinstall
    running 1 2 3
    runs
    runsalome 1 2
    runsalomewithport
    +

    +s 1 2 3
    safe
    salome 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    salome_modulecatalog_server
    salomeds
    same 1 2 3 4 5 6 7
    sample
    save 1 2 3 4 5
    saved 1 2 3 4
    saves 1 2
    saving 1 2 3 4
    scalar 1 2
    scale 1 2 3
    scaling
    schemas
    scheme
    schemes 1 2
    scientific
    screen
    script 1 2 3 4 5
    scripting
    scripts 1 2 3 4
    scroll
    search 1 2 3 4 5
    searching
    second 1 2 3
    seconds
    section 1 2
    sections 1 2
    sectionthis
    sed
    see 1 2 3 4 5 6 7 8
    seen
    select 1 2 3 4 5 6 7 8 9 10 11 12 13
    selectall
    selected 1 2 3 4
    selecting 1 2
    selection 1 2 3
    sends
    sensitive 1 2
    separate 1 2
    separated 1 2
    server
    servers 1 2
    serves
    service
    services 1 2
    session 1 2 3 4 5 6 7
    sessions 1 2 3
    set 1 2 3 4 5 6 7 8 9 10 11
    sets 1 2
    setting 1 2 3 4 5 6
    settings 1 2 3 4 5 6
    severe


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf9.htm b/doc/salome/gui/KERNEL/whgdata/whlstf9.htm index 1285b2549..bd0c7ca04 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf9.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf9.htm @@ -33,13 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -them 1 2 3 4 5 6 7 8
    therefore
    third
    those 1 2 3
    three
    thus
    time 1 2 3 4 5 6 7 8 9 10
    times
    title 1 2 3
    tk
    tmp
    tmp_disk_space
    together
    toggle
    toggles
    toggling
    tool 1 2 3 4
    toolbar 1 2 3 4 5 6 7 8 9
    toolbars 1 2 3 4
    toolkit 1 2
    tools 1 2 3 4 5 6
    top 1 2 3 4 5
    topic 1 2 3
    topics 1 2 3
    topmost
    total
    totality
    tr
    training
    tree 1 2 3 4 5
    tries
    trihedron 1 2
    trolltech
    true
    try 1 2 3 4
    try_existing
    try_native
    try_preinstalled
    two 1 2 3 4 5
    type 1 2 3 4 5 6
    typical
    typing 1 2
    +sh
    shading 1 2 3
    shape
    shell 1 2 3 4
    short 1 2
    shot
    should 1 2 3 4
    shown 1 2
    shows 1 2
    shrink
    side 1 2
    signal
    signals
    signature
    sigterm
    simple
    simplify
    simulate
    simulation
    simulations 1 2
    simultaneously 1 2 3
    since 1 2
    single
    sip
    sipdir
    situations
    size 1 2 3 4 5 6
    sizes 1 2 3
    skip
    skipped
    slightly
    slow
    smallest
    smooth
    smoothness
    so 1 2 3 4 5 6 7 8
    software 1 2 3
    solution
    solutions
    solver
    solvers 1 2
    something
    sort 1 2
    sort_path
    sorting
    source 1 2 3 4
    sources
    space 1 2 3
    spacemouse
    spaces
    spacing
    special 1 2 3 4 5 6 7 8
    specially
    specific 1 2 3 4 5 6 7
    specification
    specified
    specifies
    specify 1 2 3
    speed
    sphere
    spheres
    spin
    splines
    split
    sprite
    sprites
    stamps
    standalone
    standard 1 2 3 4 5 6 7 8 9
    standard_version
    start 1 2
    started 1 2 3 4 5
    starting 1 2 3 4
    state 1 2 3 4
    states
    stations
    status
    step 1 2 3
    steps 1 2
    still
    store 1 2 3 4
    stored 1 2 3 4 5 6
    storing
    strict
    string
    strongly
    struck
    structural
    structure 1 2 3 4 5
    structures
    studies 1 2 3 4 5 6 7 8 9
    study 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    study1
    style
    styles
    sub 1 2
    submenu 1 2 3
    subsets
    substituted
    successfully
    suit
    summarizes
    superposition
    superv
    supervision 1 2 3
    supervisor 1 2 3
    supplementary 1 2
    support 1 2
    supported
    supported_installation_modes
    supports
    supposed
    sure
    surface
    sweep
    sweeping
    swig
    switch 1 2
    switched
    switching
    system 1 2 3 4 5 6
    systems 1 2


    -u
    ultimate
    undo 1 2
    undone
    unfortunately 1 2
    unique 1 2
    unix
    unload
    unloaded 1 2
    unmark
    unnecessary
    unselect
    unselecting
    up 1 2 3 4 5 6
    update 1 2
    updated 1 2 3 4
    uploading 1 2 3
    upper 1 2
    usability
    usage
    usecase
    used 1 2 3 4 5 6 7 8 9 10 11 12
    useful
    user 1 2 3 4 5 6 7 8 9
    users 1 2 3
    uses 1 2
    using 1 2 3 4 5 6 7 8 9 10
    usr
    usually
    utilities
    -

    -v 1 2
    valid
    validation
    value 1 2 3 4 5
    values
    variable
    variables 1 2
    varible
    variety 1 2
    various 1 2
    ve 1 2
    ver
    ver_major
    ver_minor
    verbal
    version 1 2 3 4 5 6
    versions
    vertical 1 2 3 4 5
    vertically
    very 1 2 3 4
    via
    view 1 2 3 4 5 6 7 8
    viewer 1 2 3 4 5 6 7
    viewers 1 2 3 4 5 6 7
    viewing 1 2
    visible
    visu 1 2 3 4
    visual
    visualization 1 2 3 4 5 6
    visualize 1 2
    vtk 1 2 3 4 5 6
    vtkhome
    -

    -wait
    waiting
    want 1 2 3
    warning 1 2
    way 1 2 3
    web
    welcome 1 2
    well
    what 1 2 3 4 5 6
    whenever
    wherever
    whether
    while
    whole 1 2 3 4 5
    wide 1 2 3
    widgets
    width
    will 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    window 1 2 3 4 5 6 7 8 9 10 11 12
    windowed
    windows 1 2 3 4 5 6 7 8
    wireframe 1 2
    wish 1 2
    wish8
    within 1 2 3 4
    without 1 2 3
    wizard
    wizards


    >> +t 1 2 3 4 5 6 7 8
    tab 1 2 3
    table 1 2
    tabs 1 2
    tag
    tags
    tailored
    take
    taken 1 2
    takes
    target
    target_directory
    target_platform
    targetdir
    tasks
    tcl
    tclhome
    tclsh8


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm index 89ddc445e..3bd7d43e6 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ { {O {D ^

    +

    ^ { {O { {D ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm index ff8b73500..c4b5ed44c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ AB AC AD AF AG AI AL AM AN AP AR AS AT AU AV AW AX ^

    +

    ^ AB AC AD AF AG AL AM AN AP AR AS AT AU AV AW AX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm index 6e245471c..471fb7279 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ JA JP JU ^

    +

    ^ JA JU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm index a3219ba91..972cc927d 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ K KB KE KI KN ^

    +

    ^ K KB KE KI KN ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm index 338a8c521..f6196d1dc 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ L LA LD LE LI LL LO ^

    +

    ^ L LA LD LE LI LL LO ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm index 3e61e9ab9..659533376 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ M MA ME MI MO MS MU ^

    +

    ^ M MA ME MI MO MS MU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm index 59928e570..96981f1d1 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ N NA NE NF NO NU ^

    +

    ^ N NA NE NF NO NT NU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm index 4c8222cf9..e55426177 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ OB OC OF OK OM ON OP OR OS OT OU OV OW ^

    +

    ^ OB OC OF OK OM ON OP OR OS OT OU OV OW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm index 77bdfd428..bba503981 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ P PA PC PE PH PI PL PN PO PR PU PY ^

    +

    ^ P PA PC PE PH PI PL PO PR PU PY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm index af48e6bf2..6c199a6f0 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ QG QM QT QU QW ^

    +

    ^ QG QM QT QU QW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm index c778328b9..4de463e47 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ RA RE RI RO RU ^

    +

    ^ RA RE RI RO RU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm index 381ef0c34..36b7d8d58 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ S SA SC SE SH SI SK SL SM SO SP ST SU SW SY ^

    +

    ^ S SA SC SE SH SI SK SL SM SO SP ST SU SW SY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm index c83dd9bd0..c26cc5c52 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ B BA BE BI BL BM BO BR BU ^

    +

    ^ B BA BE BI BL BO BR BU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm index 57a4e5124..7c8c764d7 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ T TA TC TE TH TI TK TM TO TR TW TY ^

    +

    ^ T TA TC TE TH TI TK TM TO TR TW TY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm index 771be3cce..27427bb84 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ U UL UN UP US UT ^

    +

    ^ U UL UN UP US UT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm index 37c2a5abb..879898dd8 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ V VA VE VI VT ^

    +

    ^ V VA VE VI VT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm index 9b8f9ed25..dbfc61424 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ WA WE WH WI WO WR WW ^

    +

    ^ WA WE WH WI WO WR WW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm index 57f810f58..d94d11c39 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ X XM XT XX ^

    +

    ^ X XM XT XX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm index 6e9da114e..0d5021f17 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ Y YE YO ^

    +

    ^ Y YE YO ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm index c7f49d69c..63229948c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ C CA CD CE CH CL CO CP CR CS CU CY ^

    +

    ^ C CA CD CE CH CL CO CP CR CS CT CU CY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm index 1bafa4511..78a5ee3c5 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ E EA EC ED EF EG EI EL EM EN EQ ER ET EV EX ^

    +

    ^ E EA EC ED EF EG EI EL EM EN EQ ER ET EV EX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm index a2b80306e..10201d4f0 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ F FA FE FI FL FO FR FU ^

    +

    ^ F FA FE FI FL FO FP FR FU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm index 7f7712e43..7a00ab29c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ G GC GE GI GL GO GR GU ^

    +

    ^ G GA GC GE GI GL GO GR GU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm index e85567742..92d8b978c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ H HA HD HE HI HO HP HT HX ^

    +

    ^ H HA HD HE HI HO HP HT HX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm index bbac4d235..e0c218374 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ I IA IC ID IE IF IG IM IN IO IS IT ^

    +

    ^ I IC ID IE IF IG IM IN IO IS IT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt3.htm b/doc/salome/gui/KERNEL/whgdata/whlstt3.htm index 7076ae1a3..f96fbc25c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt3.htm @@ -41,11 +41,9 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
        Using Object Browser
        Using Registry tool
    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt4.htm b/doc/salome/gui/KERNEL/whgdata/whlstt4.htm index 5ac2bc85c..8087bf265 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt4.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt4.htm @@ -41,18 +41,17 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
           Creating a new study
           Opening studies
           Saving and closing studies
           Editing studies
           Displaying studies
    -       Getting and setting study properties
    +       Working with Python Scripts
    +       Setting study properties
        Using Object Browser
        Using Registry tool
        Using Catalog Generator
    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt5.htm b/doc/salome/gui/KERNEL/whgdata/whlstt5.htm index e25c8d1c9..60594c762 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt5.htm @@ -41,20 +41,19 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
        Using Object Browser
        Using Registry tool
        Using Catalog Generator
        Setting Preferences
           Setting Preferences
    +       Select Color and Font
           SALOME preferences
    -       GEOM preferences
    -       MESH preferences
    +       Geometry preferences
    +       Mesh preferences
           Post-Pro Preferences

    diff --git a/doc/salome/gui/KERNEL/whgdata/whnvl32.htm b/doc/salome/gui/KERNEL/whgdata/whnvl32.htm index 714176de5..b37b8ab8b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whnvl32.htm +++ b/doc/salome/gui/KERNEL/whgdata/whnvl32.htm @@ -64,7 +64,7 @@ body {background-color:White; } W X Y - Z + Z

    diff --git a/doc/salome/gui/KERNEL/whskin_info.htm b/doc/salome/gui/KERNEL/whskin_info.htm index e4bc2c62c..27ebcb52a 100755 --- a/doc/salome/gui/KERNEL/whskin_info.htm +++ b/doc/salome/gui/KERNEL/whskin_info.htm @@ -9,7 +9,7 @@ - + diff --git a/doc/salome/gui/KERNEL/whxdata/whftdata0.xml b/doc/salome/gui/KERNEL/whxdata/whftdata0.xml index 9ae34a3e3..e5729238b 100755 --- a/doc/salome/gui/KERNEL/whxdata/whftdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whftdata0.xml @@ -1,16 +1,16 @@ + + - - @@ -25,8 +25,7 @@ + - - diff --git a/doc/salome/gui/KERNEL/whxdata/whfts.xml b/doc/salome/gui/KERNEL/whxdata/whfts.xml index e1eeb4b71..52af9b44f 100755 --- a/doc/salome/gui/KERNEL/whxdata/whfts.xml +++ b/doc/salome/gui/KERNEL/whxdata/whfts.xml @@ -1,7 +1,7 @@ - + - + diff --git a/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml b/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml index 1f6b1cc3d..26629a347 100755 --- a/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml @@ -2,333 +2,371 @@ 14, 14, - 1,5,14,10,16, - 3,14,24,15, - 14, + 6,14,2,24,16, + 24, + 24, + 5,14,24,15, + 14,24, + 24, 14, 14, - 3,14,24,15, + 24, + 24, + 5,14,24,15, + 24, 14, 14, - 5,9,10,27, - 1,5,14,10,24,15,16, + 24, + 6,10,2,24, + 6,14,2,15,16, 14, - 9,10,18,27, + 24, + 10,2,24,18, 14, 14, + 24, + 24, 14, 14, 14, 14, - 1,5,14,18,27, + 3,6,14,18, 14, - 7,14, - 3, - 1,16,18,21,27, - 9,25, + 8,14, + 23,24, + 24, + 5, + 24, + 3,1,23,24,16,18,21, + 10,26, 14, - 14,15,16,21, + 14,24,15,16,21, 14, - 1, - 2, - 18, - 3,5,16,17, - 3,16,17, - 1,3,6, - 18,19, - 1, - 4,14,15,18,19, - 3,14, - 1,4,6,14,10,21, - 18, - 14,19,27, - 1, - 14,12,17, - 27, - 1,14,11, - 1,6,0,14,11,15,16,17,18,19,22, + 3, + 4, + 24,18, + 5,6,24,16,17, + 5,16,17, + 24, + 5,7, + 0,25,19, + 3, + 14,15,16,25,18,19, + 5,14, + 3,7,14,2,24,16,21, + 24, + 24, + 14,19, + 3, + 6,14,12,17, + 3,14,11, + 3,0,7,1,14,11,23,24,15,16,17,25,18,19,22, + 17, 11,18, 19, + 24, 14, 11, 14, 24, 14, - 1,17, + 3,17, 14, - 1,2,5,4,7,14,11,12,15, + 3,4,6,8,14,11,12,24,15,16,17,26, 14, - 25,21, - 7,8,14,18,19,22, - 2, - 18, - 1,5,9,10,15,16,17,18,25,19,21, + 26,21, + 0,24, + 0,8,9,14,18,19,22, + 23, + 4, + 3,6,0,10,2,15,16,17,18,26,19,21, 14,11,16, - 14,9, + 14,10, 14, - 18, - 1,9, - 5,16,27, + 25, + 3,0,10, + 6,16,18, 14, + 24, 21, 21, 17,18, 14, - 13,21, - 9, + 24, + 13,24,21, + 10, 21, - 7,19, + 8,19, 14,18, 23, - 4,14,23,13,15,17,25, - 6, - 1,3,6,14,9,27, - 14, + 0,14,23,13,24,15,16,17,26, + 7, + 3,5,7,14,10, + 24, + 24, + 0,14, 14, 14, - 18,27, - 18,27, + 18, + 18, 14, 14,23, - 18, + 24,18, 23,24,21, - 1,9,10,17, + 3,10,2,17, 14, - 1, - 1,14,11,16,18, - 1,14,15, + 3, + 3,14,11,16,25, + 3,0,14,15, 14, - 5, + 6,24, 14, 18,22, - 1, - 9, - 14,12, + 3, + 10, + 24, + 14,12,24, + 24, + 24, + 24, 14,15,19, 14, 14,17, 14, - 1, - 27, + 3, 14, 20, 14, 14, 14, - 16, - 10,23,27, - 9,18, - 0,7,14,23,13,17,18,19,22, + 23,16, + 2,23,24, + 10,23,24,18, + 0,1,8,14,23,13,24,17,25,18,19,22, 14, - 5,14,12, - 10, - 2,3,14,10,13,16,18,19,21, + 10, + 6,14,12, + 2, + 4,5,6,0,14,2,13,16,17,18,19,21, 14, - 14,19, - 14,11,27, - 14,10,12,13,17,18,25,19,22,27, - 1,14,15, - 9, - 9,11, - 1,14,27, - 8,9,11, + 14,24,19, + 14,11,24, + 14,2,12,13,24,17,25,18,26,19,22, + 3,14,15, + 10, + 10,11, + 3,0,14, + 9,10,11, 14,17,19,22, - 1, + 3, + 24, 14, 19, 14, - 14,9, + 14,10, 14, - 9, - 1,7,14,11,16,17,27, - 14,27, + 23, + 10, + 3,8,14,11,24,16,17, + 14, 14, 14, 19, 19, 19, - 10,15, + 2,15, 20, 14, - 18, - 1,5,7,14,23,16,17,18,25,27, - 23, - 2, + 24,25, + 24, + 24, + 24, + 3,6,8,14,23,24,16,17,18,26, + 24, + 4, + 25, 14, - 14, + 0,14,24,16,18, 14, 14,23,24, - 14,27, - 3,4,6,7,14,23,13,24,18,19,22, - 24,18,19, + 0,14,24,25, + 5,7,1,8,14,23,13,24,16,25,19,22, + 24,25,19, + 24, 16, 14, 16, - 3,6,7,14,12,13,16,17,18,25,19,20,21,22,27, + 5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22, 12, - 1, - 27, - 1,14,12,17,20, - 1, - 1,14, - 23, + 3, + 24, + 3,14,12,24,17,26,20, + 3, + 3,14, + 23, 14, 14, - 0,23,24,18,21, + 1,23,24,25,18,21, 18,21,22, - 11, + 11,24, 16, 14, - 1,14,15, - 14,10,11,16,17,25,27, - 1, + 3,0,14,15, + 14,2,11,16,17,26, + 3,23, 14, 14, 14, - 7,14,20,22, - 1,9, - 1,2,4,6,9,10,11,12,13,24,16,17,18,19,21,22, + 8,14,20,22, + 3,10, + 3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22, 24, 14,18, - 1,9, - 9, - 1,12, - 14,9, - 1, + 3,10, + 10, + 3,12, + 14,10, + 3, 14, 14, 14, - 14,9, + 14,10, 11, 14, - 14, - 8,11,13,16,18, + 0,14, + 9,11,13,16,18, 16, - 9,15,16,17,18, - 1,15, - 9,11, - 1,2,3,7,14,13,15,16,19,20,21,22, + 6,10,15,16,17,18, + 3,15, + 10,11, + 0, + 3,4,5,0,8,14,13,15,16,19,20,21,22, 15, - 14,20, - 4,14,16,21, + 0,14,24,20, + 14,16,21, 14, - 3,14,23, - 16,27, - 14, + 5,14,23,24, + 0,14, 11, - 18,27, - 6,14,16,17, + 18, + 24, + 7,14,16,17, 14, - 1,3,10, - 17,18, + 3,5,2, + 24,17,25, 16, - 14,23,13,15,20, - 9, - 1,9, + 14,23,13,24,15,20, + 10, + 3,10, 15, - 1,2,3,5,8,14,9,10,11,13,15,16,17,18,19,21, - 1,14,10,27, + 3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21, + 3,14,2, 12,17, 14,15, 15, - 5,6,7,14,12,15,17,25,21,22, + 24, + 6,0,8,14,12,24,15,17,18,26,21,22, + 24, 18, - 9,18,19, - 27, - 1, + 10,25,18,19, + 3, 24, - 18, + 25, 14, - 7,22, - 1,3,8,14,9,10,11,17,18,19, - 1, + 8,22, + 3,5,0,9,14,10,2,11,17,18,19, + 3, 21, - 3,4,0,14,11,23,24,15,17,18,25,21,27, - 1,14,9,24,18,27, - 1,3,4,6,15,17,18,21,22, - 1,9,20, - 9, - 9,10, - 6,14,21, + 24, + 5,1,14,23,24,15,16,17,18,26,21, + 3,0,1,14,10,23,24,25,18, + 3,5,7,15,16,21,22, + 3,10,20, + 10, + 17, + 10,2,24, + 7,14,21, 14, 14, - 1, + 3, 21, - 1,2,14,23,19,27, + 3,4,14,19, 14,15,19, - 9, + 10,24, 19, - 5,4,8,14,10,16,17, - 8,16,21,22,27, + 6,9,14,2,16,17, + 9,16,21,22, 12, - 0,14,23,18,27, + 14,18, 14, - 1, - 1,9, + 3, + 3,10, + 24, 23, - 0,7,14,23,13,16,17,18,19,22, + 0,1,8,14,23,13,24,16,17,25,18,19,22, 14, 16, - 1,14,16,17,27, - 1,2,3,8,14,13,15,16,17,21,27, + 3,14,16,17, + 3,4,5,9,14,13,24,15,16,17,21, 23, - 9, + 10, 14, - 5, + 6,24, 14,18, 14,15,17,18,19, - 14,18, + 14,24,18, 14, 14,15, - 5,4,0,14,23,12,15,16,17,18,20,21,22, - 1, - 1,14, + 6,1,14,23,12,24,15,16,17,18,20,21,22, + 24, + 3, + 3,14, 14, - 2,22, - 6,14, - 10,16,17, - 3,8,14,16, - 1,11, - 14,19,27, + 4,24,22, + 7,14, + 6,2,16,17, + 5,0,9,14,16, + 3,11, + 24, + 14,24,19, 14, 22, - 7,12,21, + 8,12,21, 14, 14, 14, - 4,27, - 1, - 27, + 16, + 3, 14, - 4,12, - 27, + 12,16, + 0, 14, - 27, - 10, - 11, - 14,10,16,17, - 27, - 1,9, - 1, - 1, + 2, + 11,24, + 14,2,16,17, + 3,10, + 3, + 3, 23, - 6,7,14,10,15, - 25, - 9, + 7,8,14,2,15, + 24, + 24, + 26, + 10, 14, - 24,18,19, - 9, - 9, - 9,23, - 5,14, + 24,25,18,19, + 10, + 10, + 10,23,24, + 6,14, 18,20, - 1, - 1,14,25, - 1, - 1, + 3, + 3,14,24,18,26, + 3, + 3, 14, - 1,9, - 7,14,15,17, + 3,10, + 8,14,15,17, 14, 23, 18,21, @@ -337,110 +375,118 @@ 14, 14, 14, - 1,5,8,14,9,10,15, - 14, - 9, - 14, - 1,4,14,10,11,16, + 3,6,9,14,10,2,15, + 3,14, + 10, + 0,14, + 3,14,2,11,24,16, 22, - 1,16, - 9,20, + 3,16, + 10,20, 14, - 9, - 1, + 10, + 3, 15, - 14, + 14,24, 14, - 5,14,9,16,17,19, - 10, - 1, - 9,11, - 1,14,11,13,17,25,19, + 6,14,10,16,17,19, + 24, + 2, + 3, + 10,11, + 3,14,11,13,17,26,19, 14, 12, - 1, - 9, - 1, - 2, - 9,27, - 1, - 18, + 3, + 10, + 0, + 3, + 4, + 10,23, + 3, + 25, 17, - 27, 18, 14, - 9, + 10, 14, 23,24,18, - 1,11, + 3,11, 14,16, 19, 14, 14, - 27, - 2,6,14, - 7,14,9,23,24,18, + 24, + 4,7,14,24, + 8,14,10,23,24,25, 14, - 3,14, - 3,7,14,13,24,15,16,17,18,25,19, + 1,14, + 5,0,8,14,11,13,24,15,16,17,18,26,19, 23, 14,19,20, 14, - 1, - 14,12, - 9, - 14,21, - 27, - 11, + 3, + 14,12,24, + 10, + 0,14,24,18,21, + 18, 14, - 1, - 14,9,10, + 3,0, + 14,10,2, + 24, 12, - 14,21, - 1,0,7,8,14,12,13,15,16,17,18,19,20,22,27, - 23,24,18, + 14,17,21, + 3,0,8,9,14,12,13,15,16,17,18,19,20,22, + 23,24,25,18, 19, - 2,9,13,18,27, - 10,27, - 14, - 10,21, - 9, - 9, - 27, - 23,24,20,27, - 14,9,11,16,17,27, + 4,10,13,18, + 24, + 24, + 14,24, + 2,21, + 10,24, + 10, + 24, + 0, + 24,20, + 0,14,10,11,16,17, 14, 16, - 1,2,6,8,23,16,19,27, - 9, - 1, + 10, + 3,4,7,9,16,19, + 3, 14, 14,15, + 23, + 2,24, 14, - 8,14,23,16,18, - 14,11,19, - 9,10,19, - 9,11, - 1,4,6,0,14,11,27, - 9,11,27, - 0, - 2,7,8,14,9,21, - 7,14,16,18,27, - 14,11, - 27, + 9,14,23,16,18, + 0,14,11,19, + 10,2,19, + 10,11, + 14,11, + 1,10,11,24, + 3,1,11,24,16, + 4,9,14,10,21, + 0,8,14,16,25, + 14,11,24, + 24, + 24, 20, 14,12, - 5,11,18,27, - 10,11, + 6,11,18, + 24, + 0,2,11, 14, - 27, - 18, + 0,24, + 25, 14, - 18, - 1,3,14,10,11,15,18,25, + 23,24,25, + 3,5,0,14,2,11,15,17,18,26, 14,15, - 1,12,20, - 14,9,10, + 24, + 3,12,20, + 14,10,2, 14, 14,15, 17, @@ -449,61 +495,62 @@ 14,13,17,18, 14, 14, - 9, + 10, + 23,24, 22, - 1,2,14,9,12,13,15,18,20,21,22,27, + 3,4,14,10,12,13,15,18,20,21, 14, - 14,23,24,18,26, - 9, - 4,16,18,21,27, - 14,9, - 14,21, + 14,23,24,18, + 10, + 24,16,18,21, + 14,10, + 14,23,21, 14, 22, 15, - 5,23,24,18,27, - 1, + 6,23,24,18, + 3, 12, - 1,14, + 3,14, 14, - 2,20, + 4,20, 14, - 14,10,16,17, - 1, - 3,6,16,19, + 14,2,16,17, + 5,7,16,19, 14, 21,22, 14, - 1,19, + 3,19, 18, - 3,5,6,14,23,13,24,15,16,17,18,19,21,27, - 9, + 5,6,0,7,14,23,13,24,15,16,17,18,19,21, + 10, 14, - 9,27, + 10,24, 12, - 1,14, - 1,19, + 3,14, + 3,19, 14, - 14,9,10,11,24,16, + 0,14,10,2,11,24,16, 14, 24, 14, - 10, + 2, 14, - 14,12,20, - 1, - 9, - 1, - 1, - 1, - 21, + 14,12,24,20, + 3, + 0,10,24, + 1,24, + 3, + 3, + 3, + 23,21, 16,17, - 1,0,7,14,12,17,20,22,27, - 8,27, - 9,19, + 3,8,14,12,24,17,20,22, + 9, + 10,19, 14, - 1,5,12,19, - 14, + 3,6,12,24,19, + 14,24, 14,19, 14, 14,15, @@ -521,59 +568,64 @@ 14, 14, 14, - 3, + 5, 14, - 27, - 1, + 3, 14, 23, - 1,9,10,11, - 1,9,10,19, + 3,10,2,11, + 3,10,2,19, 14, - 10, - 1,9,10,11,16,19, - 1,14, - 2, - 9, + 2, + 3,0,10,2,11,16,19, + 23, + 3,14, + 4, + 10, 21, - 10,16, - 22, + 2,16, + 24,22, 14, - 14,9,10,11, + 14,10,2,11, 17, 14,16, 18,21, 18, 14, - 7,9,10, + 8,10,2, + 24, 14, - 2, - 27, - 27, + 4, 14,18, 15, 14, 14,11,15, - 14, + 14,24, + 24, 15, 15, - 7,12, + 8,12, 19, + 0, 15, 23,24, - 1, + 3, 14, - 17,22, - 18, - 2,14,13,15,25,19,22, - 3, - 17, + 24, + 18,22, + 24, + 25, + 4,0,14,13,15,26,19,22, + 5, + 0,17, 14, 17, - 14,9, - 14,18,20, - 18,27, - 1,23,18, + 14,10, + 14,23,24,25,18,20, + 18, + 24, + 24, + 3,23,24,18, 14, 14, 14, @@ -581,623 +633,689 @@ 14, 14, 14, - 14,10, + 14,2, 14, 14, 14, 14, 14, - 1,5,4,14,12,16,17,19,21, + 3,6,14,12,24,16,17,19,21, 14, 24, - 2,14,23,15,18, + 24, + 4,1,14,23,24,15,18, 18, - 1,0,9,12, - 2,14, - 7,14,12,15,18,20,22, + 3,10,12, + 4,14, + 8,14,12,24,15,18,20,22, 14, - 18,27, - 1,10,13,24,15,16,18,25,21, - 1,4,15,18,20,21, - 19, - 7, + 18, + 3,0,2,13,24,15,16,18,26,21, + 24, + 3,24,15,16,18,20,21, + 0,19, + 8,24, 15, - 24,18,27, - 1, + 24,18, + 3, 14,19,20, + 23,24, 17, 16, - 14,18,20, + 14,24,25,20, 15, - 1,17,22, - 2, - 1, - 3,4,6,7,14,9,13,16,17,18,19,22, + 3,17,22, + 4, + 3, + 24, + 5,0,7,8,14,10,13,24,16,17,18,19,22, 14, - 3,14,9,23,27, + 5,14,10,23, 14, 14, - 9,18, - 9,10,16, + 10,18, + 10,2,16, 14, 14, - 2,14,18, - 1, - 4,14,18, + 24, + 24, + 4,0,14,18, + 3, + 14,18, 18, - 9, - 1, + 10, + 3, 14, 20, + 24, 24, - 3,16, - 27, - 5,8,14,16,17, - 10, + 5, + 24, + 6,9,14,24,16,17, + 0,2, 14, - 9, - 27, + 10, + 24, 14, - 1,3,4,6,7,10,23,12,13,24,16,17,18,19,21,22,27, + 3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22, 16, - 0,9,11,23,27, - 7,14,10,15,22, + 3,10,11,23,24,16, + 8,14,2,15, 14, 24, - 3,16, + 5, + 24, 14, 14, 16, 16, - 1,0,14,23,24,15, - 1,9,11,23,27, - 9, - 1,7, - 14,9, - 1,2,6,0,14,10,11,23,24,15,16,17,18,25,19,27, + 3,0,1,14,23,24,15, + 3,10,11,23, + 10, + 3,0,8, + 0,14,10, + 3,4,7,1,14,2,11,23,24,15,16,17,18,26,19, 14, 14, 15, 15, 24, - 14, - 4,27, - 5, + 14,24, + 24, + 23,24,16, + 6, + 24, 18, 14, 14, 14, - 5,8,9,10,16,19, + 6,9,10,2,16,19, 17,18, 17, - 1, - 1,9,11, - 14, - 1,3,7,14,17,19,21,22, + 24, + 3, + 3,10,11, + 14,24, + 3,5,0,8,14,17,19,21,22, 14, - 6, - 1, + 7, + 3, 14,12, - 2,12, - 2, - 5,14,12,18, - 14,23,15,16,17,21, + 4,12,24, + 4, + 6,14,12,25,18, + 0,14,23,15,16,17,21, + 24, + 24, 14, 14, - 2,18, - 1,3,7,8,14,9,17,25,19,27, - 7,14,15,18,25,19, + 4,18, + 3,5,8,9,14,10,17,18,26,19, + 8,14,15,26,19, 14, 23,19, - 5, - 14,18, - 1, + 6, + 14, + 3, 14, - 25, - 8, + 26, + 24, + 9, 16, - 14, - 14,23,24,18,22, - 14,23, - 14,9,11,18, - 1,8,9,27, + 24, + 14,24, + 14,11,23,24,18,22, + 14,23,24, + 14,10,11,25, + 3,9,10, 15, - 1,3,6,10,23,13,16,18,25,21,27, - 1, + 3,5,6,0,7,2,23,13,24,16,17,18,26,21, + 3, 14, - 27, - 3,5,10,18,27, + 5,6,2,18, 14, 14, 14, 14, - 1, - 9, - 14,13,25, - 1, + 3, + 10, + 14,13,26, + 3, 14, 14, 14, 14, 14, 14, - 1,5,6,14,10,12,13,24,15,16,17,18,19,21,27, + 3,6,0,7,14,2,12,13,24,15,16,17,25,18,19,21, + 24, 20, - 5,8,14,9,11,12,13,15,17,19,20,27, + 24, + 6,0,9,14,10,11,12,13,24,15,17,19,20, 14, - 27, - 6,8,17,27, - 14,9, + 0, + 7,9,23,24,17, + 14,10,24, 11, - 6,7,14,13,24,15,16,17,18,21, - 14,9,11, + 7,8,14,13,24,15,16,17,18,21, + 14,10,11, 14, - 1, + 23,24, + 3, 23,24, 23,24, + 0, 11, 14, 14, - 2,25, - 14,17, - 9, + 4,0, + 0,14,24,17, + 10,23,25, 23, - 14,10, - 16, + 14,2, + 24,16, 14, - 14,10,11,16, + 14,2,11,16, 15, 14,15,19, - 14,18,20, - 12,20,27, - 1, + 14,20, + 12,17,20, + 3, 14,19, - 1,0,14,23,24,18,19, - 5,14,16,27, - 9,17, + 3,14,24,25,18,19, + 24, + 6,14,16, + 10,17, 11, 14, - 6,16, - 14, - 1, - 14,9, - 1,8,9, + 7,16, + 24, + 14,24, + 3, + 24, + 14,10,23,24, + 3,9,10, 14, - 1, + 3, 20, - 9, - 1,9,11, - 14, + 10, + 3,10,11, + 14,24, 14, 14, 14, 14, - 7, + 8, 22, - 1, - 5,4,14,10,16,27, - 1,2,5,4,8,14,9,10,11,15,16,17,19,22,27, - 14,18, - 5,10,27, - 3,18, - 10, - 27, + 3, + 24, + 6,14,2,16, + 23,24, + 3,4,6,0,9,14,10,2,11,15,16,17,19,22, + 0, + 14, + 6,2, + 5,18, + 2, 14, - 1,14,23,18,27, + 3,14,2,23,24,18, 12,13,16,21, 12, 15, 15, - 16,17,18,27, + 24,16,17,18, 16, - 27, - 1,14,15,18,19,27, - 1,14,23,16,17,21,27, - 9,11,24,27, - 10, - 9,11, + 3,0,14,15,25,19, + 3,0,14,16,17,25,21, + 3,10,11,24,16,17, + 2, + 10,11, 23, 14, - 1,14,18, + 3,14,25, 15, - 0,23,24,18,25,26,21,27, + 1,23,24,25,18,26,21, 14, 14, 14, 14, - 14,18, + 14,24,18, + 23, 23, - 23, - 3,23,16,18, + 23,24, + 5,23,24,16,18, + 24, + 25, 14,13, 14,11,13,17, + 24, 14,15, 14, - 9, - 24,27, - 3, - 14,9, - 8,14, - 14,15,18, - 1,14,9,10,11,22, - 1,9, - 14,9,15, + 10, + 3,11,24,16,17, + 5, + 0,14,10, + 9,14, + 14,15, + 3,0,14,10,2,11,24,22, + 3,10, + 24, + 14,10,15, 14, 14, 14, 14, 14, - 1, + 3,0, 14, 15, - 1,14, - 9, - 14, - 14,15,27, + 3,14, + 10, + 14,24, + 24, + 14,15, + 0, 14, 14, - 7,9,11,18, - 14,10, - 1,6,14,9,10,11,24,15,19,20,22,27, - 1, - 8,21, + 8,10,11,24,18, + 14,2, + 3,7,14,10,2,11,24,15,25,19,20,22, + 0,17, + 3, + 9,21, 15, 14, 14, - 1,14,9,10,15,16,17,18, + 24, + 3,6,0,14,10,2,15,16,17,18, 14, 14, 14, 14, 14, 14, - 9,23, - 9, + 10,23,24, + 10, 14, 14,18,21, - 14,17, + 0,14,17,26, 14, 14, 14, 14, + 24, 11,24, - 1, - 12, - 9, - 14,9,12, + 3, + 24, + 0, + 24, + 0,12, + 10, + 14,10,12, 14, - 8, - 25, - 14, - 7, + 24, + 9, + 24, + 26, + 14,24, + 8,24, 21, 15, - 6, - 9, - 18,25, + 7, + 10, + 18,26, 14, - 2,12,18,21, - 9, + 4,12,24,18,21, + 10,24, 22, 22, - 10,22, + 24, + 2,22, 14, 14, 14, 12,20, - 14, + 14,23,18, 14, 12, - 9, + 10, 17, - 4, - 1, - 3,27, + 16, + 3, + 5, 14,18, + 17, + 24, + 18, 24, - 1,8,9,11,20,27, - 5,11,23,24,18,27, - 14,9,13,17, - 1,9,15, - 14,27, - 16,27, - 14,10, - 25, - 1, + 3,9,10,11,20, + 6,11,24,18, + 24, + 14,10,13,24,17, + 3,10,15, + 14, + 24, + 0, + 14,2,24, + 24,26, + 24, + 3, 14, - 9,25, - 5,8,9,17, - 25, - 27, - 1, - 9, - 27, - 14,12,13,16,17,18,20,21, - 9, - 9, - 1, + 18, + 10,17,18,26, + 9,10,24, + 26, + 3, + 10, + 0,24, + 6,14,12,13,24,16,17,25,18,20,21, + 10, + 10, + 3, 14, - 27, - 27, + 24, + 24, 14, - 1,14,15,19,22, - 18, + 3,14,15,19,22, + 25, 14, 15,19, 19, - 1,14,12, - 10, - 1,2,3,5,4,6,8,14,9,10,11,12,13,15,16,17,18,25,19,20,21,22,27, + 3,14,12, + 2, + 3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22, 19, - 5,12,16,17,18,19,22, - 1,14,9,10,16,17,18,25,27, - 1,24,18,27, + 0, + 6,12,24,16,17,19,22, + 25, + 3,0,14,10,2,16,17,18,26, + 3,24,18, 23,24, - 27, - 1,14,9, - 9, - 1, - 5, - 1,14,15,18,19, - 7, - 3,5,0,7,14,13,17,18,19,21,27, - 2,14,13,17,20, - 14, + 3,14,10, + 10, + 3, + 6, + 3,0,14,15,25,19, + 8, + 6,8,14,13,17,18,19,21, + 4,14,13,17,20, + 0,14,24, 14,16,18, 14, 14, - 3,5,0,7,14,23,13,17,18,20,27, + 23, + 5,6,0,1,8,14,23,13,24,17,25,18,20, 16, - 10,23,18, + 2,23,24, 14, - 4,16,21, - 1,14,16, - 1,19, - 1,15, - 1,14,19, - 0,23,13,24,17,18,25,21,22, - 2,0,7,14,9,23,24,15,16,17,18,25,21,22, - 0,14,23,24,16,17,18,25,27, - 9, + 16,21, + 3,14,24,16, + 3,19, + 3,15, + 3,14,19, + 1,23,13,24,17,18,26,21,22, + 4,0,1,8,14,10,23,24,15,16,17,18,26,21,22, + 14,24,16,17,18,26, + 10, 14, - 0,23, - 27, - 14,10,11,15, + 1,23,24, + 24, + 14,2,11,15, 14,20, - 5, - 8,14,17,19, - 14,21,27, - 7,14, + 6, + 9,14,17,19, + 14,21, + 8,14, 23, - 14,10, + 23,24, + 14,2, 14, 14, - 18, - 1, + 3, 14, - 1, - 9,11, - 5,8,14, - 14,10, + 3, + 10,11, + 6,9,14, + 14,2, 14, 14, 14, - 1, - 5,23,24,16,17,18, + 3, + 6,23,24,16,17,25,18, 14, 14, - 17, - 1,4,27, + 24, + 24, 18, - 1,6,14,15,25,20,21, - 1,9,11, - 9, - 9, - 9,11, + 24, + 3,7,14,24,15,26,20,21, + 3,10,11, + 10, + 10, + 10,11, 14, 18,21, 14, - 14,9,11,15, - 14, - 1,14,13,15,16,17,25, - 27, - 1, - 1,4,9,15,16,25,20, + 14,10,11,15, + 14,23,24, + 24, + 24, + 3,14,13,24,15,16,17,18,26, + 3,24, + 3,0,10,15,16,26,20, 11, - 17,18,19,27, - 0, + 17,18,19, + 24, + 1, 18, - 5, - 10, - 1,3,14,10,13,16,17,19, + 6, + 24, + 24, + 2, + 3,5,14,2,13,24,16,17,19, 14, - 1,5,8,14,16,18,19,22, - 14, - 1, + 6,9,14,16,18,19,22, + 0,14,17,18, + 3, 14, - 0,14,9,24, + 1,14,10,24, 14, - 1,14,13,17,19, + 3,0,14,13,17,18,19, 14, 14, 14, - 1,14,9,10,13,21, - 9, - 3,5,6,8,9,10,13,16,17, - 1,3,5,6,7,8,9,10,13,16,17,18,25,19,21,22, - 3, - 18, - 14,20,27, - 3,4,18, - 18, + 25, + 3,14,10,2,13,21, + 10, + 5,6,7,9,10,2,13,16,17, + 3,5,6,0,7,8,9,10,2,13,24,16,17,18,26,19,21,22, + 5, + 25,18, + 14,20, + 5,16,18, + 25, + 24, 14, - 10, + 2, 14, + 24, 15, - 10,11,15,19, - 26, + 2,15,19, + 11,18,19, 21,22, - 14,9,19, + 14,10,19, 14, 14, 14, + 23, 24, 14, - 5,14,10, - 1,2,14,9,12,20, - 6,14,15,16,17,18,19,27, - 5,20,22, - 14,18, + 6,14,2,24, + 3,4,14,10,12,24,20, + 7,14,24,15,16,17,18,19, + 6,20,22, + 14,25, 14, - 9, - 1,14, + 10, + 3,14, 14,15, 14, 14, 14, 14, + 0, 14, 14, 14, - 1, - 9, - 1, + 3, + 10, + 3, 14, 14, 14, 14, 14, 14, - 9,12,20, + 24, + 10,12,20, 14,15, - 1,14,19, - 14,12,26,20, - 1,5,14,9,15,16,22,27, + 3,14,19, + 14,12,20, + 24, + 3,6,14,10,23,15,16,25,22, 14, 11, 14,18,20, 14, - 1, - 1,5,7,14,9,24,15,25,19,22, - 14,23,24, + 24, + 3,0, + 3,6,0,8,14,10,24,15,17,26,19,22, + 14,23,24,18, 14, 14, 14, 14, 23,24,21, - 1,14,10,11,16,19,22, - 1,3,4,6,10,13,16,17,27, - 10,27, - 3,4,14,10,18, - 2,12,26,20, + 24, + 3,14,2,11,16,19,22, + 3,5,7,2,13,16,17, + 2, + 5,14,2,24,16,18, + 4,12,20, 14, 14, - 1, + 3, + 0, 14, - 9, - 3,14,18,19,21, + 10, + 24, + 24, + 24, + 24, + 5,14,18,19,21, 14, - 18,27, + 18, 14, 14, - 7,14,17,19, + 8,14,17,19, 14, 14, 14, - 5,14,12,17,19, - 14,23,24,18,26,19, + 24, + 6,14,12,24,17,19, + 0,14,23,24,25,18,19, 19, 18, - 1, - 6,18, + 3, + 24,16, + 25, + 7,18, 18, - 14,27, - 14,27, - 2, + 14, + 14, + 24, + 4, 13,17, - 4, 14, 14, - 14,9,12,13,16,17,18,21, - 23,16,17,19, - 4,10,16, - 1,6,0,7,8,14,9,10,11,23,24,15,16,17,18,25,19,20,21,22,27, - 10, - 14, - 10, - 27, - 7,19,27, + 0, + 14,10,12,13,16,17,25,21, + 23,24,16,17,19, + 2,16, + 3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22, + 2, + 14,24, + 8,19, 14, 14, - 2, + 4, 14,18, 18, - 1, - 0,14,23,18,21, + 3, + 1,14,23,24,18,21, 14,15, 14, - 2,12, + 4,12, 14,11, 14,18, + 24, 14, 14, 14, - 27, - 1,5,14,10,16,19, - 5,23,24,18,27, - 14,9,10,16, - 27, - 1,3,4,7,14,10,23,12,16,18,20,22,27, - 3,5,10,11,16,18,27, - 27, - 1,4,6,11, + 6,14,2,16,19, + 6,23,24,18, + 14,10,2,24,16, + 3,5,8,14,2,23,12,24,16,18,20,22, + 5,6,2,11,16,17,18, 11, - 9,27, - 8,9,10,11,16,27, - 3,5,14,10,18,27, + 1,24, + 10,24, + 9,10,2,11,16, + 5,6,14,2,18, 14, 14, - 5,14,12, - 7,14, + 6,14,12, + 8,14,24, 14,11,19, - 2, - 2,9, - 16, - 1,14,9,12,25,21, - 23, - 5, + 4, + 4,10, + 3,14,10,12,26,21, + 23,18, + 6, 14, - 1, - 24,16,17,18,25, - 2,11,27, + 3, + 24,18,26, + 23, + 4,11,25, 11, - 23, - 2,3,4,7,14,23,13,24,15,16,17,18,25,19,21,22, - 2,3,5,4,8,14,10,12,15,16,17,18,22, - 0,23, - 5,27, + 23,24, + 4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22, + 4,5,6,9,14,2,12,24,15,16,17,25,18,22, + 1,23, + 6, 14, - 1,3,6,22, - 1,14,15, + 3,5,7,22, + 3,0,14,24,15,26, 14, - 6,14,15, + 7,14,15, 20, - 1,5,8,14,16,17,27, - 4,14,17,19, - 9,17, - 1,17, + 3,6,0,9,14,11,24,16,17, + 14,16,17,19, + 10,17, + 3,17, 14, - 1, - 15, + 3, + 23,24,15, 14,15,19, 15, 14, - 14, - 9, - 7,14, + 14,23,24, + 10, + 8,14, 14,18, - 3,5,6,7,14,23,24,15,16,17,18,19,27, - 18, - 3,5, + 5,6,0,7,8,14,23,24,15,17,18,19, + 25, + 5,6,24, + 24,17, diff --git a/doc/salome/gui/KERNEL/whxdata/whtdata0.xml b/doc/salome/gui/KERNEL/whxdata/whtdata0.xml index 0e5228488..6b0205e6a 100755 --- a/doc/salome/gui/KERNEL/whxdata/whtdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whtdata0.xml @@ -13,27 +13,27 @@ - + - - - + + + - - + + diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in index ec67d8086..90f563c2a 100644 --- a/doc/salome/gui/Makefile.in +++ b/doc/salome/gui/Makefile.in @@ -16,7 +16,7 @@ VPATH=.:@srcdir@ docs: cp -fr $(srcdir)/KERNEL ./ - -find $(PWD) -name CVS -exec rm -rf {} \; + -find $(PWD) -name CVS -prune -exec rm -rf {} \; clean: rm -fr `ls | grep -v "Makefile"` @@ -27,7 +27,7 @@ distclean: clean install: mkdir -p $(docdir)/gui cp -rf KERNEL $(docdir)/gui - -find $(PWD) -name CVS -exec rm -rf {} \; + -find $(PWD) -name CVS -prune -exec rm -rf {} \; uninstall: rm -rf $(docdir)/gui/KERNEL diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in index 0372e6a1f..e2d1123c5 100644 --- a/doc/salome/tui/Makefile.in +++ b/doc/salome/tui/Makefile.in @@ -20,7 +20,24 @@ docs: cp -fr $(srcdir)/SUIT ./INPUT; \ cd INPUT; \ sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \ + sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \ + sed "s|version|`cut -d: -f2 $(root_srcdir)/bin/VERSION`|" ./doxyfile2 > ./doxyfile3; \ + mv -f doxyfile3 doxyfile1; \ + echo "DOXYGEN SUPPORT PYTHON - @DOXYGEN_WITH_PYTHON@"; \ + if( test "x@DOXYGEN_WITH_PYTHON@" = "xyes"); then \ + sed 's|python_extension_must_be_here|*.py|' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + $(doxygen) -u ./doxyfile1; \ + else \ + sed 's|python_extension_must_be_here||' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + fi; \ + if( test "x@DOXYGEN_WITH_STL@" = "xyes"); then \ + sed -e 's|BUILTIN_STL_SUPPORT = NO|BUILTIN_STL_SUPPORT = YES|' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + fi; \ mv -f doxyfile1 doxyfile; \ + echo "Running doxygen in directory:"`pwd`; \ $(doxygen) ./doxyfile; \ cd ../; \ cp -fr $(srcdir)/SUIT/sources/ SUIT ; \ diff --git a/doc/salome/tui/SUIT/doxyfile b/doc/salome/tui/SUIT/doxyfile index 8c7e659d4..949d9cd76 100755 --- a/doc/salome/tui/SUIT/doxyfile +++ b/doc/salome/tui/SUIT/doxyfile @@ -1,32 +1,35 @@ -# Doxyfile 1.3.7 +# Doxyfile 1.4.6 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME v.3.2.0a2" -PROJECT_NUMBER = id#1.1 +PROJECT_NAME = "SALOME - GUI - v.version" +PROJECT_NUMBER = OUTPUT_DIRECTORY = ../ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES +REPEAT_BRIEF = NO ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../../../share/salome \ + ../../../build/salome STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO +SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 5 ALIASES = OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = YES +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES #--------------------------------------------------------------------------- @@ -56,6 +59,8 @@ GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 25 SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages @@ -64,6 +69,7 @@ QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = log.txt @@ -71,8 +77,10 @@ WARN_LOGFILE = log.txt # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../../share/salome/src \ - ../../../share/salome/idl -FILE_PATTERNS = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx + ../../../share/salome/bin \ + ../../../share/salome/idl \ + ../../../build/salome/bin +FILE_PATTERNS = *.idl *.hxx *.cxx *.h *.c *.hh *.cc python_extension_must_be_here RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO @@ -82,6 +90,7 @@ EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = YES IMAGE_PATH = sources/ INPUT_FILTER = +FILTER_PATTERNS = FILTER_SOURCE_FILES = YES #--------------------------------------------------------------------------- @@ -92,13 +101,14 @@ INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = YES +USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 IGNORE_PREFIX = #--------------------------------------------------------------------------- @@ -108,8 +118,8 @@ GENERATE_HTML = YES HTML_OUTPUT = SUIT HTML_FILE_EXTENSION = .html HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/doxygen.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = @@ -117,9 +127,9 @@ HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = YES TOC_EXPAND = YES -DISABLE_INDEX = YES +DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES +GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- @@ -208,18 +218,22 @@ HIDE_UNDOC_RELATIONS = NO HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = NO +GROUP_GRAPHS = NO UML_LOOK = NO TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = NO CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = jpg DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1200 MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO GENERATE_LEGEND = NO DOT_CLEANUP = YES diff --git a/doc/salome/tui/SUIT/sources/doxygen.css b/doc/salome/tui/SUIT/sources/doxygen.css new file mode 100755 index 000000000..bda046724 --- /dev/null +++ b/doc/salome/tui/SUIT/sources/doxygen.css @@ -0,0 +1,149 @@ +H1 { + text-align: center; +} + +CAPTION { + font-weight: bold +} + +/* Link in the top navbar */ +A.qindex {} + +A.qindexRef {} + +/* Link to any cross-referenced Doxygen element */ +A.el { + text-decoration: none; + font-weight: bold +} + +A.elRef { + font-weight: bold +} + +/* Link to any cross-referenced Doxygen element inside a code section + (ex: header) +*/ +A.code { + text-decoration: none; + font-weight: normal; + color: #4444ee +} + +A.codeRef { + font-weight: normal; + color: #4444ee +} + +A:hover { + text-decoration: none; + background-color: lightblue +} + +DL.el { + margin-left: -1cm +} + +/* A code fragment (ex: header) */ +DIV.fragment { + width: 100%; + border: none; + background-color: #CCCCCC +} + +/* In the alpha list (coumpound index), style of an alphabetical index letter */ +DIV.ah { + background-color: #CCCCCC; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +/* Method name (+ type) */ +TD.md { + background-color: lightblue; + font-weight: bold; +} + +/* Method parameter (some of them) */ +TD.mdname1 { + background-color: lightblue; + font-weight: bold; color: #602020; +} + +/* Method parameter (some of them) */ +TD.mdname { + background-color: lightblue; + font-weight: bold; + color: #602020; + width: 600px; +} + +/* Separator between methods group (usually empty, seems not supported by IE) */ +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold +} + +DIV.groupText { + margin-left: 16px; + font-style: italic; + font-size: smaller +} + +BODY { + background: url(sources/bg_salome.gif) +} + +div.tabs { + text-align: justify; + font-weight: bold; + color: #FFFFFF; +} + +DIV.div-footer { + margin-left: 1em; + margin-right: 1em; + margin-bottom: 0.2em; + text-align: right; + font-size: 9pt; +} + +/* In File List, Coumpound List, etc, 1st column of the index */ +TD.indexkey { + background-color: #CCCCCC; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} + +/* In File List, Coumpound List, etc, 2nd column of the index */ +TD.indexvalue { + background-color: #CCCCCC; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} + +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 } diff --git a/doc/salome/tui/SUIT/sources/footer.html b/doc/salome/tui/SUIT/sources/footer.html new file mode 100755 index 000000000..cb55f397a --- /dev/null +++ b/doc/salome/tui/SUIT/sources/footer.html @@ -0,0 +1,5 @@ + + + + diff --git a/doc/salome/tui/SUIT/sources/myheader.html b/doc/salome/tui/SUIT/sources/myheader.html index 83ca543cd..1dc1ce7a4 100755 --- a/doc/salome/tui/SUIT/sources/myheader.html +++ b/doc/salome/tui/SUIT/sources/myheader.html @@ -8,17 +8,5 @@   -
    Start Page kernel.htm
    Skin Name Default
    Generating Time 17:12 09/29/2005
    Generating Time 15:59 04/20/2006
    Language ID 1033
    Compile Script webhelp5_compile_script.xml
    Compile Build Version 13.10.606
    - - - - - - -
    -
    -
    - - diff --git a/idl/Makefile.in b/idl/Makefile.in deleted file mode 100644 index 6954d4bc0..000000000 --- a/idl/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -# -# generate dependencies for idl file : -# - -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=. - -@COMMENCE@ - -IDL_FILES = SALOME_Session.idl - -PY_CLIENT_IDL = $(IDL_FILES) - -# we copy all idl file in $(top_builddir)/idl -inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - -$(top_builddir)/idl/salome: - mkdir -p $@ - -$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%) -# $(CP) $< $@ - cp -f $^ $(top_builddir)/idl/salome - - -lib: pyidl - -PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@ - -pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py) - -$(PYTHON_BUILD_SITE): - $(INSTALL) -d $@ - -$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $< - - -# install python client (generated from idl file -install: $(top_builddir)/idl/salome install-pyidl install-idl - -# create directory $(idldir) and copy idl files into it -install-idl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - $(INSTALL) -d $(idldir) - cp -p -f $^ $(idldir) - - -install-pyidl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - $(INSTALL) -d $(PYTHON_SITE_INSTALL) - @for file in $^ dummy; do \ - if [ $$file != "dummy" ]; then \ - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \ - fi ; \ - done ; - -#@ CONCLUDE @ - -cleandep: - -$(RM) .dep* - -distclean: - -$(RM) *.py - -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/salome/%) - -$(RM) Makefile - diff --git a/idl/SALOME_Session.idl b/idl/SALOME_Session.idl deleted file mode 100644 index f067b753a..000000000 --- a/idl/SALOME_Session.idl +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session.idl -// Author : Paul RASCLE, EDF -// $Header$ - -#include "SALOME_Component.idl" - -/*! - This package contains interfaces used for management of the session in %SALOME application. -*/ -module SALOME -{ -/*! \brief State of the session - - This enumeration contains values defining the state of the session - -*/ - enum SessionState {asleep, /*! Session is inactive */ - running /*! Session is running */ - } ; - -/*! \brief %Session State and Statistics - - - This struct contains a field list with general information about the session -*/ - - struct StatSession - { -/*! \brief State of the session - - It can be: - * -# asleep : no running study - * -# running : one or more running studies -*/ - SessionState state ; -/*! Number of running studies -*/ - short runningStudies ; -/*! It is True if GUI is active in the session -*/ - boolean activeGUI ; - } ; -/*! \brief Interface of the session - - The %session Server launches and stops GUI (Graphical User Interface). - The %session can be active without GUI (It can contain one or more running studies) -*/ - - interface Session - { -/*! - This exception is raised when trying to stop the %session with active GUI -*/ - exception GUIActive {} ; -/*! - This exception is raised when trying to stop the %session with a number of running studies. -*/ - exception RunningStudies {} ; - -/*! - Launches GUI in the session -*/ - void GetInterface(); - -/*! - Returns a standalone component -*/ - Engines::Component GetComponent(in string theLibraryName); - -/*! - Stops the %Session (It must be idle) -*/ - void StopSession() raises(GUIActive, RunningStudies) ; - -/*! - Gets Session State -*/ - StatSession GetStatSession() ; -/*! - Determines whether the server has already been loaded or not. -*/ - void ping(); -/*! - Get Active study ID -*/ - long GetActiveStudyId(); -/*! - Restores a state of the study at theSavePoint -*/ - boolean restoreVisualState(in long theSavePoint); - } ; -} ; diff --git a/src/CAF/CAF_Application.cxx b/src/CAF/CAF_Application.cxx index 823d09355..7416f68de 100755 --- a/src/CAF/CAF_Application.cxx +++ b/src/CAF/CAF_Application.cxx @@ -45,31 +45,50 @@ extern "C" CAF_EXPORT SUIT_Application* createApplication() return new CAF_Application(); } +/*! + Default constructor +*/ CAF_Application::CAF_Application() : STD_Application() { } -CAF_Application::CAF_Application( const Handle(TDocStd_Application)& app ) +/*! + Constructor with OCAF application + \param app - OCAF application +*/ +CAF_Application::CAF_Application( const Handle( TDocStd_Application )& app ) : STD_Application(), myStdApp( app ) { } +/*! + Destructor +*/ CAF_Application::~CAF_Application() { } +/*! + \return application name +*/ QString CAF_Application::applicationName() const { return QString( "CAFApplication" ); } -Handle(TDocStd_Application) CAF_Application::stdApp() const +/*! + \return OCAF application +*/ +Handle( TDocStd_Application ) CAF_Application::stdApp() const { return myStdApp; } +/*! + \return file filters for open/save document +*/ QString CAF_Application::getFileFilter() const { if ( stdApp().IsNull() ) @@ -118,6 +137,9 @@ QString CAF_Application::getFileFilter() const return filters.join( ";;" ); } +/*! + Creates actions of application +*/ void CAF_Application::createActions() { STD_Application::createActions(); @@ -255,16 +277,25 @@ void CAF_Application::updateCommandsStatus() redo->setEnabled( cafStudy && cafStudy->canRedo() ); } +/*! + SLOT: called by clicking on Help->About in main menu +*/ void CAF_Application::onHelpAbout() { SUIT_MessageBox::info1( desktop(), tr( "About" ), tr( "ABOUT_INFO" ), "&OK" ); } +/*! + Creates new study +*/ SUIT_Study* CAF_Application::createNewStudy() { return new CAF_Study( this ); } +/*! + Sets OCAF application +*/ void CAF_Application::setStdApp( const Handle(TDocStd_Application)& app ) { myStdApp = app; diff --git a/src/CAF/CAF_Application.h b/src/CAF/CAF_Application.h index 1ec88331d..6777012ef 100755 --- a/src/CAF/CAF_Application.h +++ b/src/CAF/CAF_Application.h @@ -35,6 +35,12 @@ class CAF_Study; #pragma warning ( disable: 4251 ) #endif +/*! + \class CAF_Application + Defines application configuration and behaviour for application with + link to standard OCC OCAF data model. Allows to use OCC OCAF serives + (for example, undo/redo) +*/ class CAF_EXPORT CAF_Application : public STD_Application { Q_OBJECT diff --git a/src/CAF/CAF_Operation.cxx b/src/CAF/CAF_Operation.cxx index 24bc5ecd8..5292a0fbb 100755 --- a/src/CAF/CAF_Operation.cxx +++ b/src/CAF/CAF_Operation.cxx @@ -23,19 +23,24 @@ #include -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Default constructor +*/ CAF_Operation::CAF_Operation(SUIT_Application* theApp) :SUIT_Operation(theApp) { } +/*! + Destructor +*/ CAF_Operation::~CAF_Operation() { } +/*! + \return OCAF document +*/ Handle(TDocStd_Document) CAF_Operation::stdDoc() const { Handle(TDocStd_Document) doc; diff --git a/src/CAF/CAF_Operation.h b/src/CAF/CAF_Operation.h index f49e315d7..bc1ff81e2 100755 --- a/src/CAF/CAF_Operation.h +++ b/src/CAF/CAF_Operation.h @@ -29,8 +29,14 @@ #include class CAF_Study; +//! OCC OCAF Std document class Handle(TDocStd_Document); +/*! + \class CAF_Operation + Base operation for all operations used in CAF package + Operation has link to OCC OCAF std document +*/ class CAF_EXPORT CAF_Operation : public SUIT_Operation { Q_OBJECT diff --git a/src/CAF/CAF_Study.cxx b/src/CAF/CAF_Study.cxx index 176023a1f..30362443d 100755 --- a/src/CAF/CAF_Study.cxx +++ b/src/CAF/CAF_Study.cxx @@ -33,16 +33,18 @@ #include -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor +*/ CAF_Study::CAF_Study(SUIT_Application* theApp) : SUIT_Study( theApp ), myModifiedCnt( 0 ) { } +/*! + Constructor +*/ CAF_Study::CAF_Study(SUIT_Application* theApp, Handle (TDocStd_Document)& aStdDoc) : SUIT_Study( theApp ), myStdDoc( aStdDoc ), @@ -50,20 +52,33 @@ myModifiedCnt( 0 ) { } +/*! + Destructor +*/ CAF_Study::~CAF_Study() { } +/*! + \return OCAF document +*/ Handle(TDocStd_Document) CAF_Study::stdDoc() const { return myStdDoc; } +/*! + Sets new OCAF document + \param aStdDoc - new OCAF document +*/ void CAF_Study::setStdDoc( Handle(TDocStd_Document)& aStdDoc ) { myStdDoc = aStdDoc; } +/*! + Custom document initialization +*/ void CAF_Study::createDocument() { SUIT_Study::createDocument(); @@ -82,6 +97,9 @@ void CAF_Study::createDocument() } } +/*! + Close document +*/ void CAF_Study::closeDocument( bool permanent ) { Handle(TDocStd_Application) app = stdApp(); @@ -91,6 +109,10 @@ void CAF_Study::closeDocument( bool permanent ) SUIT_Study::closeDocument( permanent ); } +/*! + Open document + \param fname - name of file +*/ bool CAF_Study::openDocument( const QString& fname ) { Handle(TDocStd_Application) app = stdApp(); @@ -108,6 +130,10 @@ bool CAF_Study::openDocument( const QString& fname ) return status && SUIT_Study::openDocument( fname ); } +/*! + Save document with other name + \param fname - name of file +*/ bool CAF_Study::saveDocumentAs( const QString& fname ) { Handle(TDocStd_Application) app = stdApp(); @@ -149,9 +175,12 @@ bool CAF_Study::saveDocumentAs( const QString& fname ) return status; } +/*! + Open OCAF transaction +*/ bool CAF_Study::openTransaction() { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; @@ -168,13 +197,16 @@ bool CAF_Study::openTransaction() return res; } +/*! + Abort OCAF transaction +*/ bool CAF_Study::abortTransaction() { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; - try { + try { myStdDoc->AbortCommand(); update(); } @@ -184,13 +216,16 @@ bool CAF_Study::abortTransaction() return res; } +/*! + Commit OCAF transaction +*/ bool CAF_Study::commitTransaction( const QString& name ) { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; - try { + try { myStdDoc->CommitCommand(); if ( canUndo() ) @@ -206,31 +241,34 @@ bool CAF_Study::commitTransaction( const QString& name ) return res; } +/*! + \return true, if there is opened OCAF transaction +*/ bool CAF_Study::hasTransaction() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; return myStdDoc->HasOpenCommand(); } /*! - Returns whether the document was saved in file. [ public ] + \return whether the document was saved in file. [ public ] */ bool CAF_Study::isSaved() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; return myStdDoc->IsSaved(); } /*! - Returns whether the document is modified. [ public ] + \return whether the document is modified. [ public ] */ bool CAF_Study::isModified() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; // return myStdDoc->IsModified(); @@ -311,7 +349,7 @@ bool CAF_Study::redo() } /*! - Check if possible to perform 'undo' command. [ public ] + \return true if possible to perform 'undo' command. [ public ] */ bool CAF_Study::canUndo() const { @@ -322,7 +360,7 @@ bool CAF_Study::canUndo() const } /*! - Check if possible to perform 'redo' command. [ public ] + \return true if possible to perform 'redo' command. [ public ] */ bool CAF_Study::canRedo() const { @@ -333,7 +371,7 @@ bool CAF_Study::canRedo() const } /*! - Returns the list of names of 'undo' actions available. [ public ] + \return the list of names of 'undo' actions available. [ public ] */ QStringList CAF_Study::undoNames() const { @@ -347,7 +385,7 @@ QStringList CAF_Study::undoNames() const } /*! - Returns the list of names of 'redo' actions available. [ public ] + \return the list of names of 'redo' actions available. [ public ] */ QStringList CAF_Study::redoNames() const { @@ -361,7 +399,7 @@ QStringList CAF_Study::redoNames() const } /*! - Returns the standard OCAF application from owner application. [ protected ] + \return the standard OCAF application from owner application. [ protected ] */ Handle(TDocStd_Application) CAF_Study::stdApp() const { @@ -373,7 +411,7 @@ Handle(TDocStd_Application) CAF_Study::stdApp() const } /*! - Returns the application casted to type CAF_Application. [ protected ] + \return the application casted to type CAF_Application. [ protected ] */ CAF_Application* CAF_Study::cafApplication() const { diff --git a/src/CAF/CAF_Study.h b/src/CAF/CAF_Study.h index fe47c5b0b..5fbc614e4 100755 --- a/src/CAF/CAF_Study.h +++ b/src/CAF/CAF_Study.h @@ -34,6 +34,12 @@ class CAF_Application; #pragma warning ( disable: 4251 ) #endif +/*! + \class CAF_Study + Represents study for using in CAF, contains reference + to OCAF std document and allows to use OCAF services. + Provides necessary functionality for OCC transactions management. +*/ class CAF_EXPORT CAF_Study : public SUIT_Study { Q_OBJECT diff --git a/src/CAF/CAF_Tools.cxx b/src/CAF/CAF_Tools.cxx index c32d4a27e..b73ffc7c9 100755 --- a/src/CAF/CAF_Tools.cxx +++ b/src/CAF/CAF_Tools.cxx @@ -62,6 +62,9 @@ TCollection_ExtendedString CAF_Tools::toExtString ( const QString& src ) return result; } +/*! + Converts Qt color to OCC color +*/ Quantity_Color CAF_Tools::color( const QColor& c ) { Quantity_Color aColor; @@ -71,6 +74,9 @@ Quantity_Color CAF_Tools::color( const QColor& c ) return aColor; } +/*! + Converts OCC color to Qt color +*/ QColor CAF_Tools::color( const Quantity_Color& c ) { return QColor ( int( c.Red() * 255 ), diff --git a/src/CAF/CAF_Tools.h b/src/CAF/CAF_Tools.h index e04d1c9d8..d305e5b3d 100755 --- a/src/CAF/CAF_Tools.h +++ b/src/CAF/CAF_Tools.h @@ -33,6 +33,10 @@ #include #include +/*! + \class CAF_Tools + Prodives set of auxiliary static methods +*/ class CAF_EXPORT CAF_Tools : public SUIT_Tools { public: diff --git a/src/CAF/Makefile.in b/src/CAF/Makefile.in index 8aae89d85..5dc19c6ff 100755 --- a/src/CAF/Makefile.in +++ b/src/CAF/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : caf diff --git a/src/CAF/resources/CAF_images.po b/src/CAF/resources/CAF_images.po index a624b35c7..000117f61 100755 --- a/src/CAF/resources/CAF_images.po +++ b/src/CAF/resources/CAF_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/CAF/resources/CAF_msg_en.po b/src/CAF/resources/CAF_msg_en.po index 59119c241..2056ac109 100755 --- a/src/CAF/resources/CAF_msg_en.po +++ b/src/CAF/resources/CAF_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/CAM/CAM_Application.cxx b/src/CAM/CAM_Application.cxx index ef7cd09e4..c6a8424c7 100755 --- a/src/CAM/CAM_Application.cxx +++ b/src/CAM/CAM_Application.cxx @@ -256,7 +256,7 @@ CAM_Module* CAM_Application::loadModule( const QString& modName ) return module; } -/**@name Activate module group.*/ +/*! @name Activate module group. */ //@{ /*!Activate module with name \a modName. *\param modName - module name. @@ -485,7 +485,7 @@ void CAM_Application::readModuleList() } if ( myInfoList.isEmpty() ) - SUIT_MessageBox::error1( 0, tr( "Error" ), tr( "Can not load modules configuration file " ), tr( "Ok" ) ); + SUIT_MessageBox::warn1( 0, tr( "Warning" ), tr( "Modules list is empty" ), tr( "&OK" ) ); } /*!Add common items for popup menu ( if they are exist ) @@ -503,7 +503,6 @@ void CAM_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopu /*!Create empty study.*/ void CAM_Application::createEmptyStudy() { - SUIT_Study* study = activeStudy(); - + /*SUIT_Study* study = */activeStudy(); STD_Application::createEmptyStudy(); } diff --git a/src/CAM/CAM_Application.h b/src/CAM/CAM_Application.h index d19bde645..b72dc3c39 100755 --- a/src/CAM/CAM_Application.h +++ b/src/CAM/CAM_Application.h @@ -31,6 +31,13 @@ class QPopupMenu; #pragma warning( disable:4251 ) #endif +/*! + \class CAM_Application + Defines application configuration and behaviour for application with modules. + Every module has own data model, necessary windows and viewers, etc. + Application provides all necessary functionality for module management + (loading of modules/activation/deactivation, etc) +*/ class CAM_EXPORT CAM_Application : public STD_Application { Q_OBJECT diff --git a/src/CAM/CAM_DataModel.cxx b/src/CAM/CAM_DataModel.cxx index 187ec6368..36f72afd9 100755 --- a/src/CAM/CAM_DataModel.cxx +++ b/src/CAM/CAM_DataModel.cxx @@ -33,10 +33,12 @@ CAM_DataModel::~CAM_DataModel() { } +/*! + Default implementation, does nothing. + Can be used for creation of root object. +*/ void CAM_DataModel::initialize() { - //! Default implementation, does nothing.\n - //! Can be used for creation of root object. } /*!Get root object. diff --git a/src/CAM/CAM_DataModel.h b/src/CAM/CAM_DataModel.h index 0724916cd..0c4686cbc 100755 --- a/src/CAM/CAM_DataModel.h +++ b/src/CAM/CAM_DataModel.h @@ -29,6 +29,11 @@ class CAM_DataObject; class CAM_Study; class SUIT_DataObject; +/*! + \class CAM_DataModel + Base class for all data models used in CAM-based applications. + Represents data model of CAM module. Provides necessary interface (default implementation is empty) +*/ class CAM_EXPORT CAM_DataModel : public QObject { Q_OBJECT diff --git a/src/CAM/CAM_DataObject.h b/src/CAM/CAM_DataObject.h index 1b89a8e60..70d09994f 100755 --- a/src/CAM/CAM_DataObject.h +++ b/src/CAM/CAM_DataObject.h @@ -26,6 +26,10 @@ class CAM_Module; class CAM_DataModel; +/*! + \class CAM_DataObject + Provides only additional link to CAM_DataModel +*/ class CAM_EXPORT CAM_DataObject : public SUIT_DataObject { public: diff --git a/src/CAM/CAM_Module.cxx b/src/CAM/CAM_Module.cxx index 264054bdf..85df558d0 100755 --- a/src/CAM/CAM_Module.cxx +++ b/src/CAM/CAM_Module.cxx @@ -254,9 +254,8 @@ int CAM_Module::createTool( QAction* a, const QString& tBar, const int id, const /*! Create tool. * Insert QAction with id \a id from action map(myActionMap) to tool manager. - *\param a - QAction - *\param tBar - integer *\param id - integer + *\param tBar - integer *\param idx - integer *\retval integer id of new action in tool manager. *\retval Return -1 if something wrong. @@ -272,9 +271,8 @@ int CAM_Module::createTool( const int id, const int tBar, const int idx ) /*! Create tool. * Insert QAction with id \a id from action map(myActionMap) to tool manager. - *\param a - QAction - *\param tBar - QString& *\param id - integer + *\param tBar - QString& *\param idx - integer *\retval integer id of new action in tool manager. *\retval Return -1 if something wrong. diff --git a/src/CAM/CAM_Study.h b/src/CAM/CAM_Study.h index 29106776b..06544269e 100755 --- a/src/CAM/CAM_Study.h +++ b/src/CAM/CAM_Study.h @@ -31,6 +31,12 @@ #pragma warning( disable:4251 ) #endif +/*! + \class CAM_Study + Represents study for using in CAM, contains list of + data model references from all modules. Provides + necessary functionality for data models management. +*/ class CAM_EXPORT CAM_Study : public SUIT_Study { Q_OBJECT diff --git a/src/CAM/Makefile.in b/src/CAM/Makefile.in index 4473bc99f..fb1a8af5f 100755 --- a/src/CAM/Makefile.in +++ b/src/CAM/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : CAM diff --git a/src/CAM/resources/CAM_msg_en.po b/src/CAM/resources/CAM_msg_en.po index a1b9d0854..9c2b83f08 100755 --- a/src/CAM/resources/CAM_msg_en.po +++ b/src/CAM/resources/CAM_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -14,6 +32,3 @@ msgstr "Error" msgid "ERROR_ACTIVATE_MODULE_MSG" msgstr "Failed to activate module %1" - -msgid "BUT_OK" -msgstr "Ok" diff --git a/src/DDS/DDS.h b/src/DDS/DDS.h index 35c38aaf4..ae0fe63b7 100644 --- a/src/DDS/DDS.h +++ b/src/DDS/DDS.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_H #define DDS_H diff --git a/src/DDS/DDS_DicGroup.cxx b/src/DDS/DDS_DicGroup.cxx index 6655e4fb7..b6a04dac2 100644 --- a/src/DDS/DDS_DicGroup.cxx +++ b/src/DDS/DDS_DicGroup.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_DicGroup.h" #include "DDS_Dictionary.h" diff --git a/src/DDS/DDS_DicGroup.h b/src/DDS/DDS_DicGroup.h index d1c633fab..77cde5ee6 100644 --- a/src/DDS/DDS_DicGroup.h +++ b/src/DDS/DDS_DicGroup.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICGROUP_H #define DDS_DICGROUP_H diff --git a/src/DDS/DDS_DicItem.cxx b/src/DDS/DDS_DicItem.cxx index d20408b4c..62fafb9ca 100644 --- a/src/DDS/DDS_DicItem.cxx +++ b/src/DDS/DDS_DicItem.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_DicItem.h" #include "DDS_Dictionary.h" diff --git a/src/DDS/DDS_DicItem.h b/src/DDS/DDS_DicItem.h index dbbedc0a7..0e9423515 100644 --- a/src/DDS/DDS_DicItem.h +++ b/src/DDS/DDS_DicItem.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICITEM_H #define DDS_DICITEM_H diff --git a/src/DDS/DDS_Dictionary.cxx b/src/DDS/DDS_Dictionary.cxx index 3656a3949..cc43bb7d0 100644 --- a/src/DDS/DDS_Dictionary.cxx +++ b/src/DDS/DDS_Dictionary.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_Dictionary.h" #include "DDS_KeyWords.h" diff --git a/src/DDS/DDS_Dictionary.h b/src/DDS/DDS_Dictionary.h index d58a15f76..69e653c28 100644 --- a/src/DDS/DDS_Dictionary.h +++ b/src/DDS/DDS_Dictionary.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICTIONARY_H #define DDS_DICTIONARY_H diff --git a/src/DDS/DDS_KeyWords.cxx b/src/DDS/DDS_KeyWords.cxx index 2f53d2a92..42ffad97d 100644 --- a/src/DDS/DDS_KeyWords.cxx +++ b/src/DDS/DDS_KeyWords.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_KeyWords.h" IMPLEMENT_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared) diff --git a/src/DDS/DDS_KeyWords.h b/src/DDS/DDS_KeyWords.h index 2c1faf914..53d3e17d7 100644 --- a/src/DDS/DDS_KeyWords.h +++ b/src/DDS/DDS_KeyWords.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_KEYWORDS_H #define DDS_KEYWORDS_H diff --git a/src/DDS/Makefile.in b/src/DDS/Makefile.in index a3b9eb89f..22d6b4143 100755 --- a/src/DDS/Makefile.in +++ b/src/DDS/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : DDS diff --git a/src/Event/Makefile.in b/src/Event/Makefile.in index b9fde9c86..4fb782f57 100755 --- a/src/Event/Makefile.in +++ b/src/Event/Makefile.in @@ -45,7 +45,7 @@ EXPORT_PYSCRIPTS = LIB = libEvent.la LIB_SRC = SALOME_Event.cxx -CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS) LDFLAGS+=$(QT_MT_LIBS) @CONCLUDE@ diff --git a/src/Event/SALOME_Event.cxx b/src/Event/SALOME_Event.cxx index 84928f623..d34dfc01a 100755 --- a/src/Event/SALOME_Event.cxx +++ b/src/Event/SALOME_Event.cxx @@ -51,6 +51,9 @@ static DWORD myThread; static pthread_t myThread; #endif +/*! + \return thread id +*/ void SALOME_Event::GetSessionThread(){ #ifdef WIN32 myThread = ::GetCurrentThreadId(); @@ -59,6 +62,9 @@ void SALOME_Event::GetSessionThread(){ #endif } +/*! + \return true if it is session thread +*/ bool SALOME_Event::IsSessionThread(){ bool aResult = false; #ifdef WIN32 @@ -71,12 +77,9 @@ bool SALOME_Event::IsSessionThread(){ } -//=========================================================== /*! - * SALOME_Event::SALOME_Event - * Constructor - */ -//=========================================================== + Constructor +*/ SALOME_Event::SALOME_Event(){ // if(MYDEBUG) MESSAGE( "SALOME_Event::SALOME_Event(): this = "< 0 ) @@ -106,10 +103,12 @@ int GLViewer_AspectLine::setLineWidth( const float width ) return 1; } -//======================================================================= -// Function: getLineColors -// Purpose : -//======================================================================= +/*! + \return colors of line + \param nc - variable for normal color + \param hc - variable for hilighting color + \param sc - variable for selection color +*/ void GLViewer_AspectLine::getLineColors( QColor& nc, QColor& hc, QColor& sc ) const { nc = myNColor; @@ -117,10 +116,9 @@ void GLViewer_AspectLine::getLineColors( QColor& nc, QColor& hc, QColor& sc ) co sc = mySColor; } -//======================================================================= -// Function: getByteCopy -// Purpose : -//======================================================================= +/*! + \return binary representation of line aspect +*/ QByteArray GLViewer_AspectLine::getByteCopy() const { int anISize = sizeof( int ); @@ -174,10 +172,9 @@ QByteArray GLViewer_AspectLine::getByteCopy() const return aResult; } -//======================================================================= -// Function: fromByteCopy -// Purpose : -//======================================================================= +/*! + Sets line aspect from binary representation +*/ GLViewer_AspectLine* GLViewer_AspectLine::fromByteCopy( QByteArray theBytes ) { diff --git a/src/GLViewer/GLViewer_AspectLine.h b/src/GLViewer/GLViewer_AspectLine.h index 800b166bb..23320b46f 100644 --- a/src/GLViewer/GLViewer_AspectLine.h +++ b/src/GLViewer/GLViewer_AspectLine.h @@ -34,9 +34,9 @@ #endif /*! - * Class GLViewer_AspectLine - * Substitution of Prs2d_AspectLine for OpenGL - */ + \Class GLViewer_AspectLine + Substitution of Prs2d_AspectLine for OpenGL +*/ class GLVIEWER_API GLViewer_AspectLine { diff --git a/src/GLViewer/GLViewer_BaseDrawers.cxx b/src/GLViewer/GLViewer_BaseDrawers.cxx index a43a5930e..5a8b6030e 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.cxx +++ b/src/GLViewer/GLViewer_BaseDrawers.cxx @@ -33,16 +33,12 @@ #include #endif -/*************************************************************************** -** Class: GLViewer_MarkerDrawer -** Descr: Drawer for GLViewer_MarkerSet -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ - GLfloat sin_table[SEGMENTS]; GLfloat cos_table[SEGMENTS]; +/*! + Default constructor +*/ GLViewer_MarkerDrawer::GLViewer_MarkerDrawer() : GLViewer_Drawer() { @@ -56,10 +52,18 @@ GLViewer_MarkerDrawer::GLViewer_MarkerDrawer() myObjectType = "GLViewer_MarkerSet"; } +/*! + Destructor +*/ GLViewer_MarkerDrawer::~GLViewer_MarkerDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_MarkerDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator it; @@ -134,6 +138,13 @@ void GLViewer_MarkerDrawer::create( float xScale, float yScale, bool onlyUpdate } } +/*! Draws marker + \param theXCoord - X position + \param theYCoord - Y position + \param theRadius - radius + \param theColor - color + \param theAspectLine - line aspect +*/ void GLViewer_MarkerDrawer::drawMarker( float& theXCoord, float& theYCoord, float& theRadius, QColor& theColor, GLViewer_AspectLine* theAspectLine ) { @@ -154,23 +165,28 @@ void GLViewer_MarkerDrawer::drawMarker( float& theXCoord, float& theYCoord, glEnd(); } -/*************************************************************************** -** Class: GLViewer_PolylineDrawer -** Descr: Drawer for GLViewer_Polyline -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ +/*! + Default constructor +*/ GLViewer_PolylineDrawer::GLViewer_PolylineDrawer() :GLViewer_Drawer() { myObjectType = "GLViewer_Polyline"; } +/*! + Destructor +*/ GLViewer_PolylineDrawer::~GLViewer_PolylineDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_PolylineDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator aObjectIt = myObjects.begin(); @@ -239,23 +255,27 @@ void GLViewer_PolylineDrawer::create( float xScale, float yScale, bool onlyUpdat } } -/*************************************************************************** -** Class: GLViewer_TextDrawer -** Descr: -** Module: GLViewer -** Created: UI team, 27.02.04 -****************************************************************************/ - +/*! + Default constructor +*/ GLViewer_TextDrawer::GLViewer_TextDrawer() : GLViewer_Drawer() { myObjectType = "GLViewer_TextObject"; } +/*! + Destructor +*/ GLViewer_TextDrawer::~GLViewer_TextDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_TextDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator aObjectIt = myObjects.begin(); @@ -297,6 +317,9 @@ void GLViewer_TextDrawer::create( float xScale, float yScale, bool onlyUpdate ) } } +/*! + Updates objects after updating font +*/ void GLViewer_TextDrawer::updateObjects() { QValueList::Iterator aObjectIt = myObjects.begin(); diff --git a/src/GLViewer/GLViewer_BaseDrawers.h b/src/GLViewer/GLViewer_BaseDrawers.h index ce98aa867..2d475f47d 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.h +++ b/src/GLViewer/GLViewer_BaseDrawers.h @@ -40,9 +40,10 @@ class GLViewer_AspectLine; #pragma warning( disable:4251 ) #endif -/*! Class GLViewer_MarkerDrawer -* Drawer for GLViewer_MarkerSet - */ +/*! + \class GLViewer_MarkerDrawer + Drawer for GLViewer_MarkerSet +*/ class GLVIEWER_API GLViewer_MarkerDrawer : public GLViewer_Drawer { @@ -58,8 +59,9 @@ private: void drawMarker( float& x, float& y, float& radius, QColor& color, GLViewer_AspectLine* aspect ); }; -/*! Class GLViewer_PolylineDrawer -* Drawer for GLViewer_Polyline +/*! + \class GLViewer_PolylineDrawer + Drawer for GLViewer_Polyline */ class GLVIEWER_API GLViewer_PolylineDrawer : public GLViewer_Drawer @@ -71,8 +73,9 @@ public: virtual void create( float, float, bool ); }; -/* Class GLViewer_TextDrawer -* Drawer for GLViewer_Text +/*! + \class GLViewer_TextDrawer + Drawer for GLViewer_Text */ class GLVIEWER_API GLViewer_TextDrawer: public GLViewer_Drawer diff --git a/src/GLViewer/GLViewer_BaseObjects.cxx b/src/GLViewer/GLViewer_BaseObjects.cxx index 79c32e3f8..c35c664db 100644 --- a/src/GLViewer/GLViewer_BaseObjects.cxx +++ b/src/GLViewer/GLViewer_BaseObjects.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_BaseObjects -** Descr: Internal OpenGL Objects -** Module: GLViewer -** Created: UI team, 02.09.02 -****************************************************************************/ - //#include #include "GLViewer_BaseObjects.h" #include "GLViewer_BaseDrawers.h" @@ -39,13 +32,9 @@ //#include //using namespace std; -/*************************************************************************** -** Class: GLViewer_MarkerSet -** Descr: OpenGL MarkerSet -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ - +/*! + Constructor +*/ GLViewer_MarkerSet::GLViewer_MarkerSet( int number, float size, const QString& toolTip ) : GLViewer_Object(), myNumber( 0 ), @@ -67,6 +56,9 @@ GLViewer_MarkerSet::GLViewer_MarkerSet( int number, float size, const QString& t setNumMarkers( number ); } +/*! + Destructor +*/ GLViewer_MarkerSet::~GLViewer_MarkerSet() { if ( myXCoord ) @@ -75,6 +67,16 @@ GLViewer_MarkerSet::~GLViewer_MarkerSet() delete[] myYCoord; } +/*! + Adds coords to text buffer in HPGL format + \param buffer - text buffer + \param command - command to be added with coords + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system + \param x - x co-ordinate + \param y - y co-ordinate + \param NewLine - adds new line to buffer +*/ void AddCoordsToHPGL( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true ) { @@ -87,6 +89,16 @@ void AddCoordsToHPGL( QString& buffer, QString command, GLViewer_CoordSystem* aV buffer += ";\n"; } +/*! + Adds coords to text buffer in PostScript format + \param buffer - text buffer + \param command - command to be added with coords + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system + \param x - x co-ordinate + \param y - y co-ordinate + \param NewLine - adds new line to buffer +*/ void AddCoordsToPS( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true ) { @@ -99,6 +111,13 @@ void AddCoordsToPS( QString& buffer, QString command, GLViewer_CoordSystem* aVie buffer += "\n"; } +/*! + Adds line aspect description to text buffer in PostScript format + \param buffer - text buffer + \param anAspect - line aspect + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system +*/ void AddLineAspectToPS( QString& buffer, GLViewer_AspectLine* anAspect, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS ) { @@ -129,6 +148,13 @@ void AddLineAspectToPS( QString& buffer, GLViewer_AspectLine* anAspect, } #ifdef WIN32 +/*! + Adds line aspect description EMF image + \param hDC - descriptor of EMF + \param anAspect - line aspect + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system +*/ HPEN AddLineAspectToEMF( HDC hDC, GLViewer_AspectLine* anAspect, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS ) { @@ -150,6 +176,12 @@ HPEN AddLineAspectToEMF( HDC hDC, GLViewer_AspectLine* anAspect, } #endif +/*! + Saves to file PostScript set of markers + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { int noPoints = 20; @@ -187,6 +219,12 @@ bool GLViewer_MarkerSet::translateToPS( QFile& hFile, GLViewer_CoordSystem* aVie return true; } +/*! + Saves to file HPGL set of markers + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { @@ -221,6 +259,12 @@ bool GLViewer_MarkerSet::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aV } #ifdef WIN32 +/*! + Saves to EMF image set of markers + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { int noPoints = 20; @@ -256,7 +300,9 @@ bool GLViewer_MarkerSet::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS } #endif - +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_MarkerSet::compute() { // cout << "GLViewer_MarkerSet::compute" << endl; @@ -282,13 +328,23 @@ void GLViewer_MarkerSet::compute() myRect->setBottom( ya - myYGap ); } +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_MarkerSet::createDrawer() { // cout << "GLViewer_MarkerSet::createDrawer" << endl; return myDrawer = new GLViewer_MarkerDrawer(); } - +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_MarkerSet::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle ) { if( !myIsVisible ) @@ -342,6 +398,9 @@ GLboolean GLViewer_MarkerSet::highlight( GLfloat x, GLfloat y, GLfloat tol, GLbo return update; } +/*! + Unhilights object +*/ GLboolean GLViewer_MarkerSet::unhighlight() { if( !myHNumbers.isEmpty() ) @@ -356,6 +415,15 @@ GLboolean GLViewer_MarkerSet::unhighlight() return GL_FALSE; } +/*! + Selects marker set + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_MarkerSet::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -480,6 +548,9 @@ GLboolean GLViewer_MarkerSet::select( GLfloat x, GLfloat y, GLfloat tol, GLViewe return myIsSel; } +/*! + Unselects marker set +*/ GLboolean GLViewer_MarkerSet::unselect() { if( !mySelNumbers.isEmpty() ) @@ -493,6 +564,10 @@ GLboolean GLViewer_MarkerSet::unselect() return GL_FALSE; } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_MarkerSet::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -510,7 +585,11 @@ GLViewer_Rect* GLViewer_MarkerSet::getUpdateRect() return rect; } - +/*! + Sets array of x coords of points + \param xCoord - array of co-ordinates + \param size - array size +*/ void GLViewer_MarkerSet::setXCoord( GLfloat* xCoord, int size ) { myXCoord = new GLfloat[ size ]; @@ -518,6 +597,11 @@ void GLViewer_MarkerSet::setXCoord( GLfloat* xCoord, int size ) myXCoord[i] = xCoord[i]; } +/*! + Sets array of y coords of points + \param yCoord - array of co-ordinates + \param size - array size +*/ void GLViewer_MarkerSet::setYCoord( GLfloat* yCoord, int size ) { myYCoord = new GLfloat[ size ]; @@ -525,6 +609,10 @@ void GLViewer_MarkerSet::setYCoord( GLfloat* yCoord, int size ) myYCoord[i] = yCoord[i]; } +/*! + Sets number of markers + \param number - new number of markers +*/ void GLViewer_MarkerSet::setNumMarkers( GLint number ) { if ( myNumber == number ) @@ -540,22 +628,10 @@ void GLViewer_MarkerSet::setNumMarkers( GLint number ) myXCoord = new GLfloat[ myNumber ]; myYCoord = new GLfloat[ myNumber ]; } -/* -void GLViewer_MarkerSet::onSelectionDone( bool append) -{ - mySelectedIndexes.Clear(); - QValueList::Iterator it; - //for( it = myMarkers->mySelNumbers.begin(); it != myMarkers->mySelNumbers.end(); ++it ) - // mySelectedIndexes.Append( *it / 2 ); //!!! - emit dvMarkersSelected( mySelectedIndexes ); -} -void GLViewer_MarkerSet::onSelectionCancel() -{ - mySelectedIndexes.Clear(); - emit dvMarkersSelected( mySelectedIndexes ); -} +/*! + Export numbers of highlighted/selected lines */ void GLViewer_MarkerSet::exportNumbers( QValueList& highlight, QValueList& unhighlight, @@ -570,6 +646,10 @@ void GLViewer_MarkerSet::exportNumbers( QValueList& highlight, myUHNumbers = myHNumbers; } +/*! + Adds or remove selected number + \param index - selected index +*/ bool GLViewer_MarkerSet::addOrRemoveSelected( int index ) { if( index < 0 || index > myNumber ) @@ -588,6 +668,10 @@ bool GLViewer_MarkerSet::addOrRemoveSelected( int index ) return TRUE; } +/*! + Adds some selected numbers + \param seq - sequence of indices +*/ void GLViewer_MarkerSet::addSelected( const TColStd_SequenceOfInteger& seq ) { for ( int i = 1; i <= seq.Length(); i++ ) @@ -595,6 +679,10 @@ void GLViewer_MarkerSet::addSelected( const TColStd_SequenceOfInteger& seq ) mySelNumbers.append( seq.Value( i ) - 1 ); } +/*! + Sets some numbers as selected + \param seq - sequence of indices +*/ void GLViewer_MarkerSet::setSelected( const TColStd_SequenceOfInteger& seq ) { // for( QValueList::Iterator it = mySelNumbers.begin(); it != mySelNumbers.end(); ++it ) @@ -608,6 +696,11 @@ void GLViewer_MarkerSet::setSelected( const TColStd_SequenceOfInteger& seq ) mySelNumbers.append( seq.Value( i ) - 1 ); } +/*! Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_MarkerSet::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -623,6 +716,10 @@ void GLViewer_MarkerSet::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes marker set as byte copy + \return byte array +*/ QByteArray GLViewer_MarkerSet::getByteCopy() { int i = 0; @@ -655,6 +752,10 @@ QByteArray GLViewer_MarkerSet::getByteCopy() return aResult; } +/*! + Initialize marker set by byte array + \param theArray - byte array +*/ bool GLViewer_MarkerSet::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -701,16 +802,20 @@ bool GLViewer_MarkerSet::initializeFromByteCopy( QByteArray theArray ) return true; } -/*************************************************************************** -** Class: GLViewer_Polyline -** Descr: OpenGL Polyline -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ +/*! + \class GLViewer_Polyline + OpenGL Polyline +*/ #define SECTIONS 100 #define DISTANTION 5 +/*! + Constructor + \param number - number of segments + \param size - size of polyline + \param toolTip - tool tip of polyline +*/ GLViewer_Polyline::GLViewer_Polyline( int number, float size, const QString& toolTip ): GLViewer_Object(), myNumber( 0 ), @@ -732,6 +837,9 @@ GLViewer_Polyline::GLViewer_Polyline( int number, float size, const QString& too myToolTipText = toolTip; } +/*! + Destructor, destroys internal arrays of co-ordinates +*/ GLViewer_Polyline::~GLViewer_Polyline() { if ( myXCoord ) @@ -740,6 +848,12 @@ GLViewer_Polyline::~GLViewer_Polyline() delete[] myYCoord; } +/*! + Saves polyline to file PostScript + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QString aBuffer = "newpath\n"; @@ -762,6 +876,12 @@ bool GLViewer_Polyline::translateToPS( QFile& hFile, GLViewer_CoordSystem* aView return true; } +/*! + Saves polyline to file HPGL + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { QString aBuffer = ""; @@ -783,6 +903,12 @@ bool GLViewer_Polyline::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aVi } #ifdef WIN32 +/*! + Saves polyline to EMF image + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { if( !aViewerCS || !aEMFCS ) @@ -819,6 +945,9 @@ bool GLViewer_Polyline::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, } #endif +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_Polyline::compute() { // cout << "GLViewer_MarkerSet::compute" << endl; @@ -844,6 +973,10 @@ void GLViewer_Polyline::compute() myRect->setBottom( ya - yGap ); } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_Polyline::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -856,12 +989,23 @@ GLViewer_Rect* GLViewer_Polyline::getUpdateRect() return rect; } +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_Polyline::createDrawer() { // cout << "GLViewer_MarkerSet::createDrawer" << endl; return myDrawer = new GLViewer_PolylineDrawer(); } +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_Polyline::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle ) { if( !myIsVisible ) @@ -916,6 +1060,9 @@ GLboolean GLViewer_Polyline::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboo return update; } +/*! + Unhilights object +*/ GLboolean GLViewer_Polyline::unhighlight() { // if( !myHNumbers.isEmpty() ) @@ -934,6 +1081,15 @@ GLboolean GLViewer_Polyline::unhighlight() return GL_FALSE; } +/*! + Selects polyline + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_Polyline::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -994,6 +1150,9 @@ GLboolean GLViewer_Polyline::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer return myIsSel; } +/*! + Unselects polyline +*/ GLboolean GLViewer_Polyline::unselect() { // if( !mySelNumbers.isEmpty() ) @@ -1013,6 +1172,11 @@ GLboolean GLViewer_Polyline::unselect() return GL_FALSE; } +/*! + Sets array of abscisses for points of polyline + \param xCoord - array of of abscisses + \param size - size of array +*/ void GLViewer_Polyline::setXCoord( GLfloat* xCoord, int size ) { myXCoord = new GLfloat[ size ]; @@ -1020,6 +1184,11 @@ void GLViewer_Polyline::setXCoord( GLfloat* xCoord, int size ) myXCoord[i] = xCoord[i]; } +/*! + Sets array of ordinates for points of polyline + \param xCoord - array of of ordinates + \param size - size of array +*/ void GLViewer_Polyline::setYCoord( GLfloat* yCoord, int size ) { myYCoord = new GLfloat[ size ]; @@ -1027,6 +1196,10 @@ void GLViewer_Polyline::setYCoord( GLfloat* yCoord, int size ) myYCoord[i] = yCoord[i]; } +/*! + Sets number of points + \param number - new number of points +*/ void GLViewer_Polyline::setNumber( GLint number ) { if ( myNumber == number ) @@ -1042,19 +1215,9 @@ void GLViewer_Polyline::setNumber( GLint number ) myXCoord = new GLfloat[ myNumber ]; myYCoord = new GLfloat[ myNumber ]; } -/* -void GLViewer_Polyline::onSelectionDone( bool append) -{ - mySelectedIndexes.Clear(); - QValueList::Iterator it; - //for( it = myMarkers->mySelNumbers.begin(); it != myMarkers->mySelNumbers.end(); ++it ) - // mySelectedIndexes.Append( *it / 2 ); //!!! -} -void GLViewer_Polyline::onSelectionCancel() -{ - mySelectedIndexes.Clear(); -} +/*! + Export numbers of highlighted/selected lines */ void GLViewer_Polyline::exportNumbers( QValueList& highlight, QValueList& unhighlight, @@ -1067,6 +1230,12 @@ void GLViewer_Polyline::exportNumbers( QValueList& highlight, unselect = myUSelNumbers; } +/*! + Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_Polyline::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -1082,6 +1251,10 @@ void GLViewer_Polyline::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes polyline as byte copy + \return byte array +*/ QByteArray GLViewer_Polyline::getByteCopy() { int i = 0; @@ -1118,6 +1291,10 @@ QByteArray GLViewer_Polyline::getByteCopy() } +/*! + Initialize polyline by byte array + \param theArray - byte array +*/ bool GLViewer_Polyline::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -1167,13 +1344,16 @@ bool GLViewer_Polyline::initializeFromByteCopy( QByteArray theArray ) return true; } -/*************************************************************************** -** Class: GLViewer_TextObject -** Descr: Text as Object for OpenGL -** Module: GLViewer -** Created: UI team, 12.02.04 -****************************************************************************/ + +/*! + Constructor + \param theStr - text string + \param xPos - x position + \param yPos - y position + \param color - color of text + \param toolTip - tooltip of text object +*/ GLViewer_TextObject::GLViewer_TextObject( const QString& theStr, float xPos, float yPos, const QColor& color, const QString& toolTip ) : GLViewer_Object() @@ -1186,12 +1366,22 @@ GLViewer_TextObject::GLViewer_TextObject( const QString& theStr, float xPos, flo myToolTipText = toolTip; } + +/*! + Destructor +*/ GLViewer_TextObject::~GLViewer_TextObject() { if ( myGLText ) delete myGLText; } +/*! + Saves text object to file PostScript + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QString aText = myGLText->getText(); @@ -1209,6 +1399,12 @@ bool GLViewer_TextObject::translateToPS( QFile& hFile, GLViewer_CoordSystem* aVi return true; } +/*! + Saves text object to file HPGL + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { QString aText = myGLText->getText(); @@ -1226,6 +1422,12 @@ bool GLViewer_TextObject::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* a } #ifdef WIN32 +/*! + Saves text object to EMF image + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { QString aText = myGLText->getText(); @@ -1276,6 +1478,9 @@ bool GLViewer_TextObject::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerC } #endif +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_TextObject::createDrawer() { myDrawer = new GLViewer_TextDrawer(); @@ -1283,6 +1488,9 @@ GLViewer_Drawer* GLViewer_TextObject::createDrawer() return myDrawer; } +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_TextObject::compute() { float xPos, yPos; @@ -1297,12 +1505,20 @@ void GLViewer_TextObject::compute() myRect->setBottom( yPos ); } +/*! + Installing already exist drawer with same type + \param theDrawer - new drawer +*/ void GLViewer_TextObject::setDrawer( GLViewer_Drawer* theDrawer ) { myDrawer = theDrawer; //compute(); } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_TextObject::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -1319,6 +1535,14 @@ GLViewer_Rect* GLViewer_TextObject::getUpdateRect() return rect; } +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_TextObject::highlight( GLfloat theX, GLfloat theY, GLfloat theTol, GLboolean isCircle ) { if( !myIsVisible ) @@ -1366,6 +1590,9 @@ GLboolean GLViewer_TextObject::highlight( GLfloat theX, GLfloat theY, GLfloat th return myIsHigh; } +/*! + Unhilights object +*/ GLboolean GLViewer_TextObject::unhighlight() { if( myIsHigh ) @@ -1377,6 +1604,15 @@ GLboolean GLViewer_TextObject::unhighlight() return GL_FALSE; } +/*! + Selects text object + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_TextObject::select( GLfloat theX, GLfloat theY, GLfloat theTol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -1415,6 +1651,9 @@ GLboolean GLViewer_TextObject::select( GLfloat theX, GLfloat theY, GLfloat theTo return myIsSel; } +/*! + Unselects text object +*/ GLboolean GLViewer_TextObject::unselect() { if( myIsSel ) @@ -1426,6 +1665,12 @@ GLboolean GLViewer_TextObject::unselect() return GL_FALSE; } +/*! + Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_TextObject::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -1441,6 +1686,10 @@ void GLViewer_TextObject::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes text object as byte copy + \return byte array +*/ QByteArray GLViewer_TextObject::getByteCopy() { QByteArray aObject = GLViewer_Object::getByteCopy(); @@ -1448,6 +1697,10 @@ QByteArray GLViewer_TextObject::getByteCopy() return aObject; } +/*! + Initialize text object by byte array + \param theArray - byte array +*/ bool GLViewer_TextObject::initializeFromByteCopy( QByteArray theArray ) { if( !GLViewer_Object::initializeFromByteCopy( theArray ) || myType != "GLViewer_TextObject" ) diff --git a/src/GLViewer/GLViewer_BaseObjects.h b/src/GLViewer/GLViewer_BaseObjects.h index 6e464ef04..c5dea1285 100644 --- a/src/GLViewer/GLViewer_BaseObjects.h +++ b/src/GLViewer/GLViewer_BaseObjects.h @@ -38,10 +38,9 @@ #endif /*! - * Class GLViewer_MarkerSet - * OpenGL MarkerSet - */ - + \class GLViewer_MarkerSet + OpenGL MarkerSet +*/ class GLVIEWER_API GLViewer_MarkerSet : public GLViewer_Object { public: @@ -120,10 +119,9 @@ protected: }; /*! - * Class GLViewer_Polyline - * OpenGL Polyline - */ - + \class GLViewer_Polyline + OpenGL Polyline +*/ class GLVIEWER_API GLViewer_Polyline: public GLViewer_Object { public: @@ -178,7 +176,7 @@ public: //! Checks highlight as whole object status GLboolean isHighSelAll() const { return myHighSelAll; } - //! Export numbers of heghlighted/selected lines + //! Export numbers of highlighted/selected lines void exportNumbers( QValueList& high, QValueList& unhigh, QValueList& sel, QValueList& unsel ); @@ -203,9 +201,10 @@ protected: GLboolean myHighFlag; }; -// Class: GLViewer_TextObject -// Descr: Text as Object for OpenGL - +/*! + \class GLViewer_TextObject + Text as Object for OpenGL +*/ class GLVIEWER_API GLViewer_TextObject : public GLViewer_Object { public: diff --git a/src/GLViewer/GLViewer_Compass.cxx b/src/GLViewer/GLViewer_Compass.cxx index 919641e7c..99c3f463a 100644 --- a/src/GLViewer/GLViewer_Compass.cxx +++ b/src/GLViewer/GLViewer_Compass.cxx @@ -22,18 +22,19 @@ // File: GLViewer_Compass.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_Compass -// Description : Class implement representatiof of compass in one of corner in GLViewer -//================================================================ - #include "GLViewer_Compass.h" #include "GLViewer_Drawer.h" -//======================================================================= -// Function: GLViewer_Compass -// Purpose : -//======================================================================= +/*! + Constructor + \param color - a color of compass + \param size - a diameter of compass + \param pos - a position + \param WidthTop - width of wide part of arrow + \param WidthBottom - width of base part of arrow + \param HeightTop - height of arrow header + \param HeightBottom - height of arrow cut on bottom +*/ GLViewer_Compass::GLViewer_Compass ( const QColor& color, const int size, const Position pos, const int WidthTop, const int WidthBottom, const int HeightTop, const int HeightBottom ) @@ -52,19 +53,20 @@ GLViewer_Compass::GLViewer_Compass ( const QColor& color, const int size, const //myFont->generateTexture(); } -//======================================================================= -// Function: ~GLViewer_Compass -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Compass::~GLViewer_Compass() { delete myFont; } -//======================================================================= -// Function: setCompass -// Purpose : -//======================================================================= +/*! + Sets parameters of compass + \param color - a color of compass + \param size - a diameter of compass + \param pos - a position +*/ void GLViewer_Compass::setCompass( const QColor& color, const int size, const Position pos ) { myCol = color; @@ -72,29 +74,29 @@ void GLViewer_Compass::setCompass( const QColor& color, const int size, const Po myPos = pos; } -//======================================================================= -// Function: setVisible -// Purpose : -//======================================================================= +/*! + Sets visibility of compass + \param vis - new visibility state +*/ void GLViewer_Compass::setVisible( const bool vis ) { myIsVisible = vis; } -//======================================================================= -// Function: setSize -// Purpose : -//======================================================================= +/*! + Sets size of compass + \param size - new size +*/ void GLViewer_Compass::setSize( const int size ) { if( size > 0 ) mySize=size; } -//======================================================================= -// Function: setArrowWidthTop -// Purpose : -//======================================================================= +/*! + Sets arrow width top + \param WidthTop - new arrow width top +*/ void GLViewer_Compass::setArrowWidthTop( const int WidthTop ) { if( WidthTop < myArrowWidthBottom || WidthTop > mySize ) @@ -102,10 +104,10 @@ void GLViewer_Compass::setArrowWidthTop( const int WidthTop ) myArrowWidthTop=WidthTop; } -//======================================================================= -// Function: setArrowWidthBottom -// Purpose : -//======================================================================= +/*! + Sets arrow width bottom + \param WidthBot - new arrow width bottom +*/ void GLViewer_Compass::setArrowWidthBottom( const int WidthBot ) { if( WidthBot > myArrowWidthTop || WidthBot < 1 ) @@ -113,10 +115,10 @@ void GLViewer_Compass::setArrowWidthBottom( const int WidthBot ) myArrowWidthBottom=WidthBot; } -//======================================================================= -// Function: setArrowHeightTop -// Purpose : -//======================================================================= +/*! + Sets arrow height top + \param HeightTop - new arrow height top +*/ void GLViewer_Compass::setArrowHeightTop( const int HeightTop ) { if( HeightTop > (2*mySize-myArrowHeightBottom ) || HeightTop < 1 ) @@ -124,10 +126,10 @@ void GLViewer_Compass::setArrowHeightTop( const int HeightTop ) myArrowHeightTop=HeightTop; } -//======================================================================= -// Function: setArrowHeightBottom -// Purpose : -//======================================================================= +/*! + Sets arrow height bottom + \param HeightBot - new arrow height bottom +*/ void GLViewer_Compass::setArrowHeightBottom( const int HeightBot ) { if( HeightBot > ( 2*mySize-myArrowHeightTop ) || HeightBot < 1) @@ -135,10 +137,9 @@ void GLViewer_Compass::setArrowHeightBottom( const int HeightBot ) myArrowHeightBottom=HeightBot; } -//======================================================================= -// Function: getFont -// Purpose : -//======================================================================= +/*! + \return font of compass +*/ GLViewer_TexFont* GLViewer_Compass::getFont() { if(!isGenereted) @@ -149,10 +150,10 @@ GLViewer_TexFont* GLViewer_Compass::getFont() return myFont; } -//======================================================================= -// Function: setFont -// Purpose : -//======================================================================= +/*! + Sets font of compass + \param theFont - new font +*/ void GLViewer_Compass::setFont( QFont theFont ) { delete myFont; diff --git a/src/GLViewer/GLViewer_Compass.h b/src/GLViewer/GLViewer_Compass.h index abdec0e01..bb3b98913 100644 --- a/src/GLViewer/GLViewer_Compass.h +++ b/src/GLViewer/GLViewer_Compass.h @@ -33,14 +33,13 @@ #pragma warning( disable:4251 ) #endif +class GLViewer_TexFont; + /*! Class GLViewer_Compass * Class implement representatiof of compass in one of corner in GLViewer. * Compass it's a some round visual pointer rotated with view window and * located in fixed place (in one fixed corner) */ - -class GLViewer_TexFont; - class GLVIEWER_API GLViewer_Compass { public: diff --git a/src/GLViewer/GLViewer_Context.cxx b/src/GLViewer/GLViewer_Context.cxx index 7fc5fcf20..9b3842a48 100644 --- a/src/GLViewer/GLViewer_Context.cxx +++ b/src/GLViewer/GLViewer_Context.cxx @@ -22,10 +22,10 @@ // File: GLViewer_Context.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_AspectLine -// Description : Class for manage of presentations in GLViewer -//================================================================ +/*! + \class GLViewer_AspectLine + \brief Class for manage of presentations in GLViewer +*/ #include "GLViewer_Context.h" @@ -38,10 +38,9 @@ #define TOLERANCE 12 -//======================================================================= -// Function: GLViewer_Context -// Purpose : -//======================================================================= +/*! + Constructor +*/ GLViewer_Context::GLViewer_Context( GLViewer_Viewer2d* v ) : myGLViewer2d( v ), myHighlightColor( Quantity_NOC_CYAN1 ), @@ -59,10 +58,9 @@ GLViewer_Context::GLViewer_Context( GLViewer_Viewer2d* v ) : mySelCurIndex = 0; } -//======================================================================= -// Function: ~GLViewer_Context -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Context::~GLViewer_Context() { myActiveObjects.clear(); @@ -70,10 +68,13 @@ GLViewer_Context::~GLViewer_Context() mySelectedObjects.clear(); } -//======================================================================= -// Function: MoveTo -// Purpose : -//======================================================================= +/*! + Hiilights objects under cursor + \param x - X coord of mouse cursor + \param y - Y coord of mouse cursor + \param byCircle - true if needs round sensitive area around mouse cursor, else rectangle + function search object rectangle which intersect with sensitive area and call object highlight method +*/ int GLViewer_Context::MoveTo( int xi, int yi, bool byCircle ) { GLfloat x = (GLfloat)xi; @@ -180,10 +181,10 @@ int GLViewer_Context::MoveTo( int xi, int yi, bool byCircle ) return 0; } -//======================================================================= -// Function: Select -// Purpose : -//======================================================================= +/*! Selects already highlighting object by calling object method select + \param Append - true if new selection will be append to existing selection, false - another + \param byCircle - true if needs round selection area in complex object +*/ int GLViewer_Context::Select( bool Append, bool byCircle ) { ObjList::Iterator it, itEnd, oit, oitEnd; @@ -322,10 +323,11 @@ int GLViewer_Context::Select( bool Append, bool byCircle ) return SS_NoChanged; } -//======================================================================= -// Function: SelectByRect -// Purpose : -//======================================================================= +/*! Selects objects on scene by rectangle + \param theRect - rectangle of selection + \param Append - true if new selection will be append to existing selection, false - another + function search object rectangle which intersect with theRect and call object select method +*/ int GLViewer_Context::SelectByRect( const QRect& theRect, bool Append ) { GLfloat aXScale; @@ -384,10 +386,10 @@ int GLViewer_Context::SelectByRect( const QRect& theRect, bool Append ) return status; } -//======================================================================= -// Function: SetHighlightColor -// Purpose : -//======================================================================= +/*! + Sets color of hilighting + \param aCol - new color of highlighting +*/ void GLViewer_Context::SetHighlightColor( Quantity_NameOfColor aCol ) { myHighlightColor = aCol; @@ -407,10 +409,10 @@ void GLViewer_Context::SetHighlightColor( Quantity_NameOfColor aCol ) myGLViewer2d->updateColors( colH, colS); } -//======================================================================= -// Function: SetSelectionColor -// Purpose : -//======================================================================= +/*! + Sets color of selection + \param aCol - new color of selection +*/ void GLViewer_Context::SetSelectionColor( Quantity_NameOfColor aCol ) { mySelectionColor = aCol; @@ -430,37 +432,33 @@ void GLViewer_Context::SetSelectionColor( Quantity_NameOfColor aCol ) myGLViewer2d->updateColors( colH, colS); } -//======================================================================= -// Function: NbSelected -// Purpose : -//======================================================================= +/*! + \return number of selected objects +*/ int GLViewer_Context::NbSelected() { return mySelectedObjects.count(); } -//======================================================================= -// Function: InitSelected -// Purpose : -//======================================================================= +/*! + Inits iteration through selected objects +*/ void GLViewer_Context::InitSelected() { mySelCurIndex = 0; } -//======================================================================= -// Function: MoreSelected -// Purpose : -//======================================================================= +/*! + Checks if iteration through selected objects may be continued +*/ bool GLViewer_Context::MoreSelected() { return ( mySelCurIndex < NbSelected() ); } -//======================================================================= -// Function: NextSelected -// Purpose : -//======================================================================= +/*! + Iterates to next selected object +*/ bool GLViewer_Context::NextSelected() { if ( mySelCurIndex >= 0 && mySelCurIndex < NbSelected() ) @@ -472,28 +470,28 @@ bool GLViewer_Context::NextSelected() return FALSE; } -//======================================================================= -// Function: SelectedObject -// Purpose : -//======================================================================= +/*! + \return current selected object (must be used only in cycle as "for( InitSelected(); MoreSelected(); NextSelected() ) {...}" ) +*/ GLViewer_Object* GLViewer_Context::SelectedObject() { return mySelectedObjects[ mySelCurIndex ]; } -//======================================================================= -// Function: isSelected -// Purpose : -//======================================================================= +/*! + \return true if object is selected + \param theObj - object to be checked +*/ bool GLViewer_Context::isSelected( GLViewer_Object* theObj ) { return mySelectedObjects.contains( theObj ); } -//======================================================================= -// Function: insertObject -// Purpose : -//======================================================================= +/*! Inserts new object in context + \param theObject - object to be inserted + \param display - true if needs display object immediatly after inserting, else false + \param isActive - true if needs inserting object in active list +*/ int GLViewer_Context::insertObject( GLViewer_Object* object, bool display, bool isActive ) { // cout << "GLViewer_Context::insertObject" << endl; @@ -517,10 +515,11 @@ int GLViewer_Context::insertObject( GLViewer_Object* object, bool display, bool return myActiveObjects.count() + myInactiveObjects.count(); } -//======================================================================= -// Function: replaceObject -// Purpose : -//======================================================================= +/*! + Replaces object in context + \param oldObject - object to be replaced + \param newObject - object for replacing +*/ bool GLViewer_Context::replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject ) { if( !oldObject || !newObject ) @@ -543,10 +542,9 @@ bool GLViewer_Context::replaceObject( GLViewer_Object* oldObject, GLViewer_Objec return false; } -//======================================================================= -// Function: updateScales -// Purpose : -//======================================================================= +/*! + Updates scales of all objects in context +*/ void GLViewer_Context::updateScales( GLfloat scX, GLfloat scY ) { if( scX <= 0 || scY <= 0 ) @@ -561,10 +559,10 @@ void GLViewer_Context::updateScales( GLfloat scX, GLfloat scY ) (*it)->setScale( scX, scY ); } -//======================================================================= -// Function: clearHighlighted -// Purpose : -//======================================================================= +/*! + Clears hilighting of objects + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::clearHighlighted( bool updateViewer ) { if( myHFlag && myLastPicked ) @@ -577,10 +575,10 @@ void GLViewer_Context::clearHighlighted( bool updateViewer ) } } -//======================================================================= -// Function: clearSelected -// Purpose : -//======================================================================= +/*! + Clears selection of objects + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::clearSelected( bool updateViewer ) { if( !mySFlag ) @@ -600,10 +598,10 @@ void GLViewer_Context::clearSelected( bool updateViewer ) mySelectedObjects.clear(); } -//======================================================================= -// Function: setSelected -// Purpose : -//======================================================================= +/*! + Selects object, other selected objects are left as selected + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::setSelected( GLViewer_Object* object, bool updateViewer ) { if( !object ) @@ -619,10 +617,10 @@ void GLViewer_Context::setSelected( GLViewer_Object* object, bool updateViewer ) myGLViewer2d->activateDrawer( object, TRUE, TRUE ); } -//======================================================================= -// Function: remSelected -// Purpose : -//======================================================================= +/*! + Unselects object, other selected objects are left as selected + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::remSelected( GLViewer_Object* object, bool updateViewer ) { if( !object || !mySelectedObjects.contains( object ) ) @@ -635,10 +633,10 @@ void GLViewer_Context::remSelected( GLViewer_Object* object, bool updateViewer ) myGLViewer2d->activateDrawer( object, TRUE, TRUE ); } -//======================================================================= -// Function: eraseObject -// Purpose : -//======================================================================= +/*! + Erases object in viewer + \param theUpdateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::eraseObject( GLViewer_Object* theObject, bool theUpdateViewer ) { if( !theObject || !myActiveObjects.contains( theObject ) ) @@ -652,10 +650,10 @@ void GLViewer_Context::eraseObject( GLViewer_Object* theObject, bool theUpdateVi myGLViewer2d->updateAll(); } -//======================================================================= -// Function: deleteObject -// Purpose : -//======================================================================= +/*! + Deletes object in + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::deleteObject( GLViewer_Object* theObject, bool updateViewer ) { if( !theObject || @@ -683,10 +681,10 @@ void GLViewer_Context::deleteObject( GLViewer_Object* theObject, bool updateView myGLViewer2d->updateAll(); } -//======================================================================= -// Function: setActive -// Purpose : -//======================================================================= +/*! + Installs active status to object + \param theObject +*/ bool GLViewer_Context::setActive( GLViewer_Object* theObject ) { if( !theObject || !myInactiveObjects.contains( theObject ) ) @@ -697,10 +695,10 @@ bool GLViewer_Context::setActive( GLViewer_Object* theObject ) return true; } -//======================================================================= -// Function: setInactive -// Purpose : -//======================================================================= +/*! + Installs inactive status to object + \param theObject +*/ bool GLViewer_Context::setInactive( GLViewer_Object* theObject ) { if( !theObject || !myActiveObjects.contains( theObject ) ) diff --git a/src/GLViewer/GLViewer_Context.h b/src/GLViewer/GLViewer_Context.h index f8c76eb50..d339782f6 100644 --- a/src/GLViewer/GLViewer_Context.h +++ b/src/GLViewer/GLViewer_Context.h @@ -23,10 +23,6 @@ // Created: November, 2004 -/*! Class GLViewer_Context - * Class for manage of presentations in GLViewer - */ - #ifndef GLVIEWER_CONTEXT_H #define GLVIEWER_CONTEXT_H @@ -52,6 +48,9 @@ class GLViewer_Viewer2d; #pragma warning( disable:4251 ) #endif +/*! \class GLViewer_Context + * Class for manage of presentations in GLViewer + */ class GLVIEWER_API GLViewer_Context { public: @@ -73,14 +72,12 @@ public: *function search object rectangle which intersect with sensitive area and call object highlight method */ int MoveTo( int x, int y, bool byCircle = FALSE ); - //! A function selecting already highlighting object by calling object method select - /*! + /*! A function selecting already highlighting object by calling object method select *\param Append - true if new selection will be append to existing selection, false - another *\param byCircle - true if needs round selection area in complex object */ int Select( bool Append = FALSE, bool byCircle = FALSE ); - //! A function selecting objects on scene by rectangle - /*! + /*! A function selecting objects on scene by rectangle *\param theRect - rectangle of selection *\param Append - true if new selection will be append to existing selection, false - another *function search object rectangle which intersect with theRect and call object select method @@ -119,7 +116,7 @@ public: int insertObject( GLViewer_Object* theObject, bool display = false, bool isActive = true ); //! Replacing objects in context /*! - * Function search activ and incative objects + * Function search active and incative objects */ bool replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject ); //! A function updating scales of all objects in context @@ -129,7 +126,7 @@ public: //! Returns list of context objects /*! - * Returns active objects if isActive = true, else inactive objects + * \return active objects if isActive = true, else inactive objects */ const ObjList& getObjects( bool isActive = true ) { return isActive ? myActiveObjects : myInactiveObjects; } diff --git a/src/GLViewer/GLViewer_CoordSystem.cxx b/src/GLViewer/GLViewer_CoordSystem.cxx index 947ac6036..405c22b96 100644 --- a/src/GLViewer/GLViewer_CoordSystem.cxx +++ b/src/GLViewer/GLViewer_CoordSystem.cxx @@ -22,17 +22,18 @@ // File: GLViewer_Context.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_CoordSystem -// Description : Class implementing mathematical model of 2D coordinate system -//================================================================ #include "GLViewer_CoordSystem.h" #include -//======================================================================= -// Function: GLViewer_CoordSystem -// Purpose : -//======================================================================= +/*! + Constructor + \param aType - type of CS + \param X0 - X of origin in reference CS + \param Y0 - Y of origin in reference CS + \param XUnit - X unit in reference CS + \param YUnit - Y unit in reference CS + \param Rotation - rotation relative reference CS +*/ GLViewer_CoordSystem::GLViewer_CoordSystem( CSType aType, double X0, double Y0, double XUnit, double YUnit, double Rotation ) { @@ -42,40 +43,36 @@ GLViewer_CoordSystem::GLViewer_CoordSystem( CSType aType, double X0, double Y0, setRotation( Rotation ); } -//======================================================================= -// Function: getOrigin -// Purpose : -//======================================================================= +/*! + \return origin in reference CS +*/ void GLViewer_CoordSystem::getOrigin( double& x, double& y ) const { x = myX0; y = myY0; } -//======================================================================= -// Function: setOrigin -// Purpose : -//======================================================================= +/*! + Sets origin in reference CS +*/ void GLViewer_CoordSystem::setOrigin( double x, double y ) { myX0 = x; myY0 = y; } -//======================================================================= -// Function: getUnits -// Purpose : -//======================================================================= +/*! + \return units +*/ void GLViewer_CoordSystem::getUnits( double& x, double& y ) const { x = myXUnit; y = myYUnit; } -//======================================================================= -// Function: setUnits -// Purpose : -//======================================================================= +/*! + Sets units +*/ void GLViewer_CoordSystem::setUnits( double x, double y ) { if( x>0 ) @@ -88,46 +85,43 @@ void GLViewer_CoordSystem::setUnits( double x, double y ) else myYUnit = 1.0; } -//======================================================================= -// Function: getRotation -// Purpose : -//======================================================================= + +/*! + \return rotation +*/ double GLViewer_CoordSystem::getRotation() const { return myRotation; } -//======================================================================= -// Function: setRotation -// Purpose : -//======================================================================= +/*! + Sets rotation +*/ void GLViewer_CoordSystem::setRotation( double rotation ) { myRotation = rotation; } -//======================================================================= -// Function: getType -// Purpose : -//======================================================================= +/*! + \return type +*/ GLViewer_CoordSystem::CSType GLViewer_CoordSystem::getType() const { return myType; } -//======================================================================= -// Function: setType -// Purpose : -//======================================================================= +/*! + Sets type +*/ void GLViewer_CoordSystem::setType( CSType type ) { myType = type; } -//======================================================================= -// Function: toReference -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates to reference co-ordinates + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::toReference( double& x, double& y ) { if( myType==Cartesian ) @@ -145,10 +139,10 @@ void GLViewer_CoordSystem::toReference( double& x, double& y ) } } -//======================================================================= -// Function: fromReference -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates from reference co-ordinates + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::fromReference( double& x, double& y ) { x = (x - myX0) / myXUnit; @@ -185,20 +179,20 @@ void GLViewer_CoordSystem::fromReference( double& x, double& y ) } } -//======================================================================= -// Function: transform -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates to co-ordinates of other CS + \param aSystem - other CS + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::transform( GLViewer_CoordSystem& aSystem, double& x, double& y ) { toReference( x, y ); aSystem.fromReference( x, y ); } -//======================================================================= -// Function: getStretching -// Purpose : -//======================================================================= +/*! + \return stretching of CS along X and Y axis +*/ void GLViewer_CoordSystem::getStretching( GLViewer_CoordSystem& aSystem, double& theX, double& theY ) { theX = myXUnit / aSystem.myXUnit; diff --git a/src/GLViewer/GLViewer_CoordSystem.h b/src/GLViewer/GLViewer_CoordSystem.h index ca571daab..4ea7795b1 100644 --- a/src/GLViewer/GLViewer_CoordSystem.h +++ b/src/GLViewer/GLViewer_CoordSystem.h @@ -35,6 +35,10 @@ #pragma warning( disable:4251 ) #endif +/*! + \class GLViewer_CoordSystem + \brief Class implementing mathematical model of 2D coordinate system +*/ class GLVIEWER_API GLViewer_CoordSystem { public: diff --git a/src/GLViewer/GLViewer_Drawer.cxx b/src/GLViewer/GLViewer_Drawer.cxx index 9a0f3ef6b..1b6912b81 100644 --- a/src/GLViewer/GLViewer_Drawer.cxx +++ b/src/GLViewer/GLViewer_Drawer.cxx @@ -48,10 +48,7 @@ GLfloat modelMatrix[16]; -//================================================================ -// Class : GLViewer_TexFont -// Description : -//================================================================ + //! code of first font symbol static int FirstSymbolNumber = 32; //! code of last font symbol @@ -60,10 +57,9 @@ static int LastSymbolNumber = 127; QMap GLViewer_TexFont::TexFontBase; QMap GLViewer_TexFont::BitmapFontCache; -//======================================================================= -// Function: clearTextBases -// Purpose : -//======================================================================= +/*! + Clears all generated fonts +*/ void GLViewer_TexFont::clearTextBases() { //cout << "Clear font map" << endl; @@ -71,10 +67,9 @@ void GLViewer_TexFont::clearTextBases() BitmapFontCache.clear(); } -//====================================================================== -// Function: GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Default constructor +*/ GLViewer_TexFont::GLViewer_TexFont() : myMaxRowWidth( 0 ), myFontHeight( 0 ) { @@ -86,10 +81,13 @@ GLViewer_TexFont::GLViewer_TexFont() init(); } -//====================================================================== -// Function: GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Constructor + \param theFont - a base font + \param theSeparator - separator between letters + \param theIsResizeable - specifies whether text drawn by this object can be scaled along with the scene + \param theMinMagFilter - min/mag filter, affects text sharpness +*/ GLViewer_TexFont::GLViewer_TexFont( QFont* theFont, int theSeparator, bool theIsResizeable, GLuint theMinMagFilter ) : myMaxRowWidth( 0 ), myFontHeight( 0 ) { @@ -101,20 +99,18 @@ GLViewer_TexFont::GLViewer_TexFont( QFont* theFont, int theSeparator, bool theIs init(); } -//====================================================================== -// Function: ~GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_TexFont::~GLViewer_TexFont() { delete[] myWidths; delete[] myPositions; } -//====================================================================== -// Function: init -// Purpose : -//======================================================================= +/*! + Initializes font parameters +*/ void GLViewer_TexFont::init() { myNbSymbols = LastSymbolNumber - FirstSymbolNumber + 1; @@ -148,10 +144,9 @@ void GLViewer_TexFont::init() myTexFontHeight = 0; } -//====================================================================== -// Function: generateTexture -// Purpose : -//======================================================================= +/*! + Generating font texture +*/ bool GLViewer_TexFont::generateTexture() { GLViewer_TexFindId aFindFont; @@ -160,7 +155,7 @@ bool GLViewer_TexFont::generateTexture() aFindFont.myIsItal = myQFont.italic(); aFindFont.myIsUndl = myQFont.underline(); aFindFont.myPointSize = myQFont.pointSize(); - aFindFont.myViewPortId = (int)QGLContext::currentContext(); + aFindFont.myViewPortId = size_t(QGLContext::currentContext()); if( TexFontBase.contains( aFindFont ) ) { @@ -265,10 +260,13 @@ bool GLViewer_TexFont::generateTexture() return true; } -//====================================================================== -// Function: drawString -// Purpose : -//======================================================================= +/*! + Drawing string in viewer + \param theStr - string to be drawn + \param theX - X position + \param theY - Y position + \param theScale - scale coefficient +*/ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY, GLfloat theScale ) { // Adding some pixels to have a gap between rows @@ -334,10 +332,9 @@ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY glPopAttrib(); } -//====================================================================== -// Function: getStringWidth -// Purpose : -//======================================================================= +/*! + \return width of string in pixels +*/ int GLViewer_TexFont::getStringWidth( QString theStr ) { int aWidth = 0; @@ -351,17 +348,18 @@ int GLViewer_TexFont::getStringWidth( QString theStr ) return aWidth; } -//====================================================================== -// Function: getStringHeight -// Purpose : -//======================================================================= +/*! + \return height of string in pixels +*/ int GLViewer_TexFont::getStringHeight() { QFontMetrics aFM( myQFont ); return aFM.height(); } -//! function for generation list base for bitmap fonts +/*! + Generates list base for bitmap fonts +*/ static GLuint displayListBase( QFont* theFont ) { if ( !theFont ) @@ -421,7 +419,7 @@ static GLuint displayListBase( QFont* theFont ) return aList; } - aFindFont.myViewPortId = (int)aCont; + aFindFont.myViewPortId = size_t(aCont); if ( GLViewer_TexFont::BitmapFontCache.contains( aFindFont ) ) aList = GLViewer_TexFont::BitmapFontCache[aFindFont]; @@ -431,7 +429,7 @@ static GLuint displayListBase( QFont* theFont ) QMap::iterator it = GLViewer_TexFont::BitmapFontCache.begin(); for ( ; it != GLViewer_TexFont::BitmapFontCache.end(); ++it ) { - if ( it.key().myViewPortId == (int)aCont && it.data() > listBase ) + if ( it.key().myViewPortId == size_t(aCont) && it.data() > listBase ) listBase = it.data(); } listBase += 256; @@ -473,16 +471,9 @@ static GLuint displayListBase( QFont* theFont ) return aList; } -/*************************************************************************** -** Class: GLViewer_Drawer -** Descr: Drawer for GLViewer_Object -** Module: GLViewer -** Created: UI team, 01.10.01 -****************************************************************************/ -//====================================================================== -// Function: GLViewer_Drawer -// Purpose : -//======================================================================= +/*! + Default constructor +*/ GLViewer_Drawer::GLViewer_Drawer() : myFont( "Helvetica", 10, QFont::Bold ) { @@ -495,20 +486,18 @@ GLViewer_Drawer::GLViewer_Drawer() myTextScale = 0.125; } -//====================================================================== -// Function: ~GLViewer_Drawer -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Drawer::~GLViewer_Drawer() { myObjects.clear(); glDeleteLists( myTextList, 1 ); } -//====================================================================== -// Function: destroyAllTextures -// Purpose : -//======================================================================= +/*! + Clears all generated textures +*/ void GLViewer_Drawer::destroyAllTextures() { QMap::Iterator anIt= GLViewer_TexFont::TexFontBase.begin(); @@ -518,10 +507,10 @@ void GLViewer_Drawer::destroyAllTextures() glDeleteTextures( 1, &(anIt.data().myTexFontId) ); } -//======================================================================= -// Function: setAntialiasing -// Purpose : The function enables and disables antialiasing in Open GL (for points, lines and polygons). -//======================================================================= +/*! + Enables and disables antialiasing in Open GL (for points, lines and polygons). + \param on - if it is true, antialiasing is enabled +*/ void GLViewer_Drawer::setAntialiasing(const bool on) { if (on) @@ -545,10 +534,12 @@ void GLViewer_Drawer::setAntialiasing(const bool on) } } -//====================================================================== -// Function: loadTexture -// Purpose : -//======================================================================= +/*! Loads texture from file + \param fileName - the name of texture file + \param x_size - the horizontal size of picture ( less or equal texture horizontal size ) + \param y_size - the vertical size of picture ( less or equal texture vertical size ) + \param t_size - the size of texture ( texture vertical size equals texture horizontal size ) +*/ GLuint GLViewer_Drawer::loadTexture( const QString& fileName, GLint* x_size, GLint* y_size, @@ -620,10 +611,12 @@ GLuint GLViewer_Drawer::loadTexture( const QString& fileName, return texture; } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw square texture + \param texture - the texture ID + \param size - the size of square texture + \param x - x coord + \param y - y coord +*/ void GLViewer_Drawer::drawTexture( GLuint texture, GLint size, GLfloat x, GLfloat y ) { /*float xScale = myXScale; @@ -660,10 +653,13 @@ void GLViewer_Drawer::drawTexture( GLuint texture, GLint size, GLfloat x, GLfloa drawTexture( texture, size, size, x, y ); } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw texture + \param texture - the texture ID + \param x_size - the horizontal size of texture + \param y_size - the vertical size of texture + \param x - x coord + \param y - y coord +*/ void GLViewer_Drawer::drawTexture( GLuint texture, GLint x_size, GLint y_size, GLfloat x, GLfloat y ) { /*float xScale = myXScale; @@ -699,10 +695,16 @@ void GLViewer_Drawer::drawTexture( GLuint texture, GLint x_size, GLint y_size, G drawTexturePart( texture, 1.0, 1.0, x_size, y_size, x, y ); } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw texture part + \param texture - the texture ID + \param x_ratio - the horizontal ratio of texture part + \param y_ratio - the vertical ratio of texture part + \param x_size - the horizontal size of texture + \param y_size - the vertical size of texture + \param x - x coord + \param y - y coord + \param scale - common scale factor ( if = 0, use drawer scales ) +*/ void GLViewer_Drawer::drawTexturePart( GLuint texture, GLfloat x_ratio, GLfloat y_ratio, @@ -750,10 +752,16 @@ void GLViewer_Drawer::drawTexturePart( GLuint texture, glDisable( GL_TEXTURE_2D ); } -//====================================================================== -// Function: drawText -// Purpose : -//======================================================================= +/*! + Draw text + \param text - text to be drawn + \param xPos - x position + \param yPos - y position + \param color - color of text + \param theFont - font of text + \param theSeparator - letter separator + \param theFormat - text format (by default DTF_BITMAP) +*/ void GLViewer_Drawer::drawText( const QString& text, GLfloat xPos, GLfloat yPos, const QColor& color, QFont* theFont, int theSeparator, DisplayTextFormat theFormat ) { @@ -781,10 +789,9 @@ void GLViewer_Drawer::drawText( const QString& text, GLfloat xPos, GLfloat yPos, } } -//====================================================================== -// Function: drawText -// Purpose : -//======================================================================= +/*! + Draws object-text +*/ void GLViewer_Drawer::drawText( GLViewer_Object* theObject ) { if( !theObject ) @@ -801,16 +808,21 @@ void GLViewer_Drawer::drawText( GLViewer_Object* theObject ) drawText( aText->getText(), aPosX, aPosY, aText->getColor(), &aTmpVarFont, aText->getSeparator(), aText->getDisplayTextFormat() ); } -//====================================================================== -// Function: drawGLText -// Purpose : -//======================================================================= +/*! Draw text + \param text - the text string + \param x - x coord + \param y - y coord + \param hPosition - horizontal alignment + \param vPosition - vertical alignment + \param color - text color + \param smallFont - font format +*/ void GLViewer_Drawer::drawGLText( QString text, float x, float y, int hPosition, int vPosition, QColor color, bool smallFont ) { QFont aFont( myFont ); if( smallFont ) - aFont.setPointSize( aFont.pointSize() * 0.8 ); + aFont.setPointSize( int(aFont.pointSize() * 0.8) ); GLfloat scale = textScale() > 0. ? textScale() : 1.; @@ -838,10 +850,9 @@ void GLViewer_Drawer::drawGLText( QString text, float x, float y, drawText( text, x, y, color, &aFont, 2, myTextFormat ); } -//====================================================================== -// Function: textRect -// Purpose : -//======================================================================= +/*! + \return a rectangle of text (without viewer scale) +*/ GLViewer_Rect GLViewer_Drawer::textRect( const QString& text ) const { GLfloat scale = textScale() > 0. ? textScale() : 1.; @@ -853,10 +864,11 @@ GLViewer_Rect GLViewer_Drawer::textRect( const QString& text ) const return GLViewer_Rect( 0, width, height, 0 ); } -//====================================================================== -// Function: drawRectangle -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of primitive + \param color - color of primitive +*/ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, QColor color ) { if( !rect ) @@ -880,10 +892,12 @@ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, QColor color ) glEnd(); } -//====================================================================== -// Function: translateToHPGL -// Purpose : -//======================================================================= +/*! + Saves object to file with format of HPGL + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aHPGLCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { bool result = true; @@ -892,10 +906,12 @@ bool GLViewer_Drawer::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aView return result; } -//====================================================================== -// Function: translateToPS -// Purpose : -//======================================================================= +/*! + Saves object to file with format of PostScript + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { bool result = true; @@ -905,10 +921,12 @@ bool GLViewer_Drawer::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewer } #ifdef WIN32 -//====================================================================== -// Function: translateToEMF -// Purpose : -//======================================================================= +/*! + Saves object to file with format of EMF + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aEMFCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToEMF( HDC hDC, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { bool result = true; @@ -918,10 +936,15 @@ bool GLViewer_Drawer::translateToEMF( HDC hDC, GLViewer_CoordSystem* aViewerCS, } #endif -//====================================================================== -// Function: drawRectangle -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of primitive + \param lineWidth - width of line + \param gap - gap of rectangle + \param color - color of primitive + \param filled - if it is true, then rectangle will be drawn filled with color "fillingColor" + \param fillingColor - color of filling +*/ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, GLfloat lineWidth, GLfloat gap, QColor color, bool filled, QColor fillingColor ) { @@ -959,10 +982,12 @@ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, GLfloat lineWidth, GLf glEnd(); } -//====================================================================== -// Function: drawContour -// Purpose : -//======================================================================= +/*! + Draws contour + \param pntList - list of points + \param color - color of contour + \param lineWidth - width of line +*/ void GLViewer_Drawer::drawContour( const GLViewer_PntList& pntList, QColor color, GLfloat lineWidth ) { glColor3f( ( GLfloat )color.red() / 255, @@ -977,10 +1002,14 @@ void GLViewer_Drawer::drawContour( const GLViewer_PntList& pntList, QColor color glEnd(); } -//====================================================================== -// Function: drawContour -// Purpose : -//======================================================================= +/*! + Draws rectangular contour + \param rect - instance of rectangle + \param color - color of primitive + \param lineWidth - width of line + \param pattern - pattern of line + \param isStripe - enables line stipple +*/ void GLViewer_Drawer::drawContour( GLViewer_Rect* rect, QColor color, GLfloat lineWidth, GLushort pattern, bool isStripe ) { @@ -1011,10 +1040,11 @@ void GLViewer_Drawer::drawContour( GLViewer_Rect* rect, QColor color, GLfloat li glDisable( GL_LINE_STIPPLE ); } -//====================================================================== -// Function: drawPolygon -// Purpose : -//======================================================================= +/*! + Draws polygon + \param pntList - list of points + \param color - color of polygon +*/ void GLViewer_Drawer::drawPolygon( const GLViewer_PntList& pntList, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, @@ -1027,10 +1057,13 @@ void GLViewer_Drawer::drawPolygon( const GLViewer_PntList& pntList, QColor color glEnd(); } -//====================================================================== -// Function: drawPolygon -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of rectangle + \param color - color of polygon + \param pattern - pattern of line + \param isStripe - enables line stipple +*/ void GLViewer_Drawer::drawPolygon( GLViewer_Rect* rect, QColor color, GLushort pattern, bool isStripe ) { @@ -1058,11 +1091,14 @@ void GLViewer_Drawer::drawPolygon( GLViewer_Rect* rect, QColor color, glDisable( GL_LINE_STIPPLE ); } -//====================================================================== -// Function: drawVertex -// Purpose : -//======================================================================= GLubyte rasterVertex[5] = { 0x70, 0xf8, 0xf8, 0xf8, 0x70 }; + +/*! + Draws vertex + \param x - x position + \param y - y position + \param color - color of vertex +*/ void GLViewer_Drawer::drawVertex( GLfloat x, GLfloat y, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 ); @@ -1070,11 +1106,14 @@ void GLViewer_Drawer::drawVertex( GLfloat x, GLfloat y, QColor color ) glBitmap( 5, 5, 2, 2, 0, 0, rasterVertex ); } -//====================================================================== -// Function: drawCross -// Purpose : -//======================================================================= GLubyte rasterCross[7] = { 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82 }; + +/*! + Draws cross + \param x - x position + \param y - y position + \param color - color of cross +*/ void GLViewer_Drawer::drawCross( GLfloat x, GLfloat y, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 ); @@ -1082,10 +1121,18 @@ void GLViewer_Drawer::drawCross( GLfloat x, GLfloat y, QColor color ) glBitmap( 7, 7, 3, 3, 0, 0, rasterCross ); } -//====================================================================== -// Function: drawArrow -// Purpose : -//======================================================================= +/*! + Draws arrow + \param red, green, blue - components of color + \param lineWidth - width of line + \param staff - + \param length - length of arrow + \param width - width of arrow + \param x - x position + \param y - y position + \param angle - angle of arrow + \param filled - drawn as filled +*/ void GLViewer_Drawer::drawArrow( const GLfloat red, const GLfloat green, const GLfloat blue, GLfloat lineWidth, GLfloat staff, GLfloat length, GLfloat width, diff --git a/src/GLViewer/GLViewer_Drawer.h b/src/GLViewer/GLViewer_Drawer.h index 4b66e7b20..189560e0b 100644 --- a/src/GLViewer/GLViewer_Drawer.h +++ b/src/GLViewer/GLViewer_Drawer.h @@ -98,17 +98,11 @@ struct GLVIEWER_API GLViewer_TexFindId } }; -/*************************************************************************** -** Class: GLViewer_TexFont -** Descr: Font for GLViewer_Drawer -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ +/*! + \class GLViewer_TexFont + Font for GLViewer_Drawer, Drawing bitmap and texture fonts in GLViewer +*/ -/*! - * Class GLViewer_TexFont - * Drawing bitmap and texture fonts in GLViewer - */ class GLVIEWER_API GLViewer_TexFont { public: @@ -185,17 +179,11 @@ private: int myMaxRowWidth; }; -/*************************************************************************** -** Class: GLViewer_Drawer -** Descr: Drawer for GLObject -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ /*! - * Class GLViewer_Drawer - * Drawer for GLViewer_Objects. - * Drawer creates only one times per one type of object - */ + \class GLViewer_Drawer + Drawer for GLViewer_Objects. + Drawer creates only one times per one type of object +*/ class GLVIEWER_API GLViewer_Drawer { public: diff --git a/src/GLViewer/GLViewer_Geom.cxx b/src/GLViewer/GLViewer_Geom.cxx index cd0ef5cae..b5b1852cd 100644 --- a/src/GLViewer/GLViewer_Geom.cxx +++ b/src/GLViewer/GLViewer_Geom.cxx @@ -19,23 +19,15 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Geom -** Descr: -** Module: GLViewer -** Created: UI team, 16.11.04 -****************************************************************************/ - //#include #include #define FAR_POINT 1e10 // Value used as a "very distant" co-ordinate #define TOLERANCE 1e-3 -//================================================================ -// Function : GLViewer_Segment -// Purpose : constructs a real segment bounded by two points -//================================================================ +/*! + constructs a real segment bounded by two points +*/ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt1, const GLViewer_Pnt& thePnt2 ) : myPnt1( thePnt1 ), @@ -46,11 +38,9 @@ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt1, myC = myPnt1.x() * myPnt2.y() - myPnt2.x() * myPnt1.y(); } -//================================================================ -// Function : GLViewer_Segment -// Purpose : constructs a ray starting at and directed -// along positive X axis direction (or Y axis if vertical ) -//================================================================ +/*! + constructs a ray starting at and directed along positive X axis direction (or Y axis if vertical ) +*/ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt, const GLfloat theA, const GLfloat theB, @@ -66,18 +56,16 @@ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt, myPnt2 = GLViewer_Pnt( FAR_POINT, - myA / myB * FAR_POINT - myC / myB ); } -//================================================================ -// Function : GLViewer_Segment -// Purpose : destructor, does nothing -//================================================================ +/*! + destructor, does nothing +*/ GLViewer_Segment::~GLViewer_Segment() { } -//================================================================ -// Function : HasIntersection -// Purpose : detects intersection with segment -//================================================================ +/*! + detects intersection with segment +*/ bool GLViewer_Segment::HasIntersection( const GLViewer_Segment& theOther ) const { bool aRes = false; @@ -113,27 +101,24 @@ bool GLViewer_Segment::HasIntersection( const GLViewer_Segment& theOther ) const return aRes; } -//================================================================ -// Function : GLViewer_Poly -// Purpose : constructs a closed polygon from the given ordered list of points -//================================================================ +/*! + constructs a closed polygon from the given ordered list of points +*/ GLViewer_Poly::GLViewer_Poly( const GLViewer_PntList* thePoints ) : myPoints( (GLViewer_PntList*)thePoints ) { } -//================================================================ -// Function : ~GLViewer_Poly -// Purpose : destructor, mustn't be deleted here! -//================================================================ +/*! + destructor, mustn't be deleted here! +*/ GLViewer_Poly::~GLViewer_Poly() { } -//================================================================ -// Function : IsIn -// Purpose : returns true if lies within this polygon -//================================================================ +/*! + \return true if lies within this polygon +*/ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt ) const { if ( !myPoints ) @@ -159,11 +144,10 @@ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt ) const return ( aNbInter % 2 == 1 ); } +/*! + \return true if lies within this polygon +*/ /* -//================================================================ -// Function : IsIn -// Purpose : returns true if lies within this polygon -//================================================================ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt, const float tolerance ) const { if ( !myPoints ) @@ -184,10 +168,9 @@ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt, const float tolerance ) co return res; } */ -//================================================================ -// Function : IsCovers -// Purpose : returns true if covers this polygon -//================================================================ +/*! + \return true if covers this polygon +*/ bool GLViewer_Poly::IsCovers( const GLViewer_Poly& thePoly ) const { if ( !myPoints || !thePoly.Count() ) @@ -204,10 +187,9 @@ bool GLViewer_Poly::IsCovers( const GLViewer_Poly& thePoly ) const return true; } -//================================================================ -// Function : IsCovers -// Purpose : returns true if covers this polygon -//================================================================ +/*! + \return true if covers this polygon +*/ bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const { if ( !myPoints ) //needs check for @@ -224,10 +206,10 @@ bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const return IsCovers( GLViewer_Poly( &aList ) ); } -//================================================================ -// Function : HasIntersection -// Purpose : looks for any -//================================================================ +/*! + \return true if polygon has intersection with segment or ray + \param theSegment - segment to check intersection +*/ bool GLViewer_Poly::HasIntersection( const GLViewer_Segment& theSegment ) const { if ( !myPoints ) diff --git a/src/GLViewer/GLViewer_Grid.cxx b/src/GLViewer/GLViewer_Grid.cxx index 85dfac4ba..cf483c965 100644 --- a/src/GLViewer/GLViewer_Grid.cxx +++ b/src/GLViewer/GLViewer_Grid.cxx @@ -29,6 +29,9 @@ #include #include +/*! + Default constructor +*/ GLViewer_Grid::GLViewer_Grid() : myGridList( 0 ), myGridHeight( (GLfloat)0.0 ), myGridWidth( (GLfloat)0.0 ), myWinW( (GLfloat)0.0 ), myWinH( (GLfloat)0.0 ), myXSize( (GLfloat)0.0 ), myYSize( (GLfloat)0.0 ), @@ -44,6 +47,14 @@ GLViewer_Grid::GLViewer_Grid() : myAxisColor[2] = 0.75; } +/*! + Constructor + \param width and \param height - width and height of grid + \param winW and \param winH - width and height of window + \param xSize and \param ySize - steps along x and y direction + \param xPan and \param yPan - offsets along x and y direction + \param xScale and \param yScal - scale factors along x and y direction +*/ GLViewer_Grid::GLViewer_Grid( GLfloat width, GLfloat height, GLfloat winW, GLfloat winH, GLfloat xSize, GLfloat ySize, @@ -63,10 +74,16 @@ GLViewer_Grid::GLViewer_Grid( GLfloat width, GLfloat height, myAxisColor[2] = 0.75; } +/*! + Destructor +*/ GLViewer_Grid::~GLViewer_Grid() { } +/*! + Performs OpenGL drawing +*/ void GLViewer_Grid::draw() { if ( myGridList == 0 || myIsUpdate ) @@ -75,6 +92,10 @@ void GLViewer_Grid::draw() glCallList( myGridList ); } +/*! + Changes color of grid + \param r, g, b - components of color +*/ void GLViewer_Grid::setGridColor( GLfloat r, GLfloat g, GLfloat b ) { if( myGridColor[0] == r && myGridColor[1] == g && myGridColor[2] == b ) @@ -86,6 +107,10 @@ void GLViewer_Grid::setGridColor( GLfloat r, GLfloat g, GLfloat b ) myIsUpdate = GL_TRUE; } +/*! + Changes color of axis + \param r, g, b - components of color +*/ void GLViewer_Grid::setAxisColor( GLfloat r, GLfloat g, GLfloat b ) { if( myAxisColor[0] == r && myAxisColor[1] == g && myAxisColor[2] == b ) @@ -97,6 +122,10 @@ void GLViewer_Grid::setAxisColor( GLfloat r, GLfloat g, GLfloat b ) myIsUpdate = GL_TRUE; } +/*! + Changes grid width + \param w - new grid width +*/ void GLViewer_Grid::setGridWidth( float w ) { if( myGridWidth == w ) @@ -106,6 +135,10 @@ void GLViewer_Grid::setGridWidth( float w ) myIsUpdate = GL_TRUE; } +/*! + Sets Radius of center point( begin coords ) + \param r - new radius +*/ void GLViewer_Grid::setCenterRadius( int r ) { if( myCenterRadius == r ) @@ -115,6 +148,11 @@ void GLViewer_Grid::setCenterRadius( int r ) myIsUpdate = GL_TRUE; } +/*! + Sets grid size along X and Y axis + \param xSize - size along X axis + \param ySize - size along Y axis +*/ void GLViewer_Grid::setSize( float xSize, float ySize ) { if( myXSize == xSize && myYSize == ySize ) @@ -125,6 +163,11 @@ void GLViewer_Grid::setSize( float xSize, float ySize ) myIsUpdate = GL_TRUE; } +/*! + Sets panning of grid + \param xPan - panning along X axis + \param yPan - panning along Y axis +*/ void GLViewer_Grid::setPan( float xPan, float yPan ) { if( myXPan == xPan && myYPan == yPan ) @@ -135,6 +178,10 @@ void GLViewer_Grid::setPan( float xPan, float yPan ) myIsUpdate = GL_TRUE; } +/*! + Sets zoom + \param zoom - new coefficient of zooming +*/ bool GLViewer_Grid::setZoom( float zoom ) { if( zoom == 1.0 ) @@ -160,6 +207,12 @@ bool GLViewer_Grid::setZoom( float zoom ) return true; } +/*! + Sets parameters of grid by zoom coefficient and window size + \param WinW - window width + \param WinH - window height + \param zoom - zoom coefficient +*/ void GLViewer_Grid::setResize( float WinW, float WinH, float zoom ) { if( myWinW == WinW && myWinH == WinH && zoom == 1.0 ) @@ -173,24 +226,42 @@ void GLViewer_Grid::setResize( float WinW, float WinH, float zoom ) myIsUpdate = GL_TRUE; } +/*! + \return grid size along x and y axis + \param xSize - for size along x axis + \param ySize - for size along y axis +*/ void GLViewer_Grid::getSize( float& xSize, float& ySize ) const { xSize = myXSize; ySize = myYSize; } +/*! + \return panning along x and y axis + \param xPan - for panning along x axis + \param yPan - for panning along y axis +*/ void GLViewer_Grid::getPan( float& xPan, float& yPan ) const { xPan = myXPan; yPan = myYPan; } +/*! + \return scaling along x and y axis + \param xScale - for scaling along x axis + \param yScale - for scaling along y axis +*/ void GLViewer_Grid::getScale( float& xScale, float& yScale ) const { xScale = myXScale; yScale = myYScale; } +/*! + Initialize grid display list +*/ bool GLViewer_Grid::initList() { myIsUpdate = GL_FALSE; diff --git a/src/GLViewer/GLViewer_Group.cxx b/src/GLViewer/GLViewer_Group.cxx index 6377e9ecd..ab32135c1 100644 --- a/src/GLViewer/GLViewer_Group.cxx +++ b/src/GLViewer/GLViewer_Group.cxx @@ -26,52 +26,40 @@ #include "GLViewer_Group.h" #include "GLViewer_Object.h" -/*************************************************************************** -** Class: GLViewer_Group -** Descr: Group of GLViewer_Objects -** Module: GLViewer -** Created: UI team, 25.03.05 -****************************************************************************/ - -//-------------------------------------------------------------------------- -//Function: GLViewer_Group() -//Description: constructor -//-------------------------------------------------------------------------- +/*! + constructor +*/ GLViewer_Group::GLViewer_Group() { mySelObjNum = 0; } -//-------------------------------------------------------------------------- -//Function: GLViewer_Group() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + destructor +*/ GLViewer_Group::~GLViewer_Group() { } -//-------------------------------------------------------------------------- -//Function: isEmpty -//Description: detection of empty group -//-------------------------------------------------------------------------- +/*! + detection of empty group +*/ bool GLViewer_Group::isEmpty() { return myList.empty(); } -//-------------------------------------------------------------------------- -//Function: count -//Description: number of elements -//-------------------------------------------------------------------------- +/*! + \return number of elements +*/ int GLViewer_Group::count() { return myList.size(); } -//-------------------------------------------------------------------------- -//Function: contains -//Description: return the position of object, else -1 -//-------------------------------------------------------------------------- +/*! + \return the position of object if group contains it, else -1 +*/ int GLViewer_Group::contains( GLViewer_Object* theObject ) { if( !theObject ) @@ -86,10 +74,9 @@ int GLViewer_Group::contains( GLViewer_Object* theObject ) return -1; } -//-------------------------------------------------------------------------- -//Function: addObject -//Description: adding object to group -//-------------------------------------------------------------------------- +/*! + adding object to group +*/ int GLViewer_Group::addObject( GLViewer_Object* theObject ) { if( theObject && contains( theObject ) == -1 ) @@ -100,10 +87,9 @@ int GLViewer_Group::addObject( GLViewer_Object* theObject ) return count(); } -//-------------------------------------------------------------------------- -//Function: removeObject -//Description: removing object from group -//-------------------------------------------------------------------------- +/*! + removing object from group +*/ int GLViewer_Group::removeObject( GLViewer_Object* theObject ) { if( theObject ) @@ -122,10 +108,11 @@ int GLViewer_Group::removeObject( GLViewer_Object* theObject ) return count(); } -//-------------------------------------------------------------------------- -//Function: dragingObjects -//Description: -//-------------------------------------------------------------------------- +/*! + Dragging operation + \param Once is true, if this operation calls only one time for all object + \param x, y - dragging position +*/ void GLViewer_Group::dragingObjects( float x, float y, bool once ) { if( !once ) @@ -154,10 +141,11 @@ void GLViewer_Group::dragingObjects( float x, float y, bool once ) (*it)->moveObject( x, y, true ); } -//-------------------------------------------------------------------------- -//Function: updateZoom -//Description: -//-------------------------------------------------------------------------- +/*! + Updates zoom of object + \param sender - object to be updated + \param zoom - zoom coefficient +*/ void GLViewer_Group::updateZoom( GLViewer_Object* sender, float zoom ) { OGIterator it = myList.begin(); diff --git a/src/GLViewer/GLViewer_MimeSource.cxx b/src/GLViewer/GLViewer_MimeSource.cxx index e43ee5f51..5338ca7dd 100644 --- a/src/GLViewer/GLViewer_MimeSource.cxx +++ b/src/GLViewer/GLViewer_MimeSource.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_MimeSource -** Descr: Needs for a work with QClipboard -** Module: GLViewer -** Created: UI team, 22.03.04 -****************************************************************************/ - //#include #include "GLViewer_MimeSource.h" #include "GLViewer_BaseObjects.h" @@ -33,10 +26,17 @@ //#include //using namespace std; +/*! + Destructor +*/ GLViewer_MimeSource::~GLViewer_MimeSource() { } +/*! + Translate objects to byte array + \param theObjects - list of objects +*/ bool GLViewer_MimeSource::setObjects( QValueList theObjects ) { if( !theObjects.empty() ) @@ -109,9 +109,12 @@ bool GLViewer_MimeSource::setObjects( QValueList theObjects ) return false; } -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -//If you want to use new class, following two method must be redefined -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +/*! + Creates object by it's representation (byte array) + \param theArray - byte array + \param theType - type of object +*/ GLViewer_Object* GLViewer_MimeSource::getObject( QByteArray theArray, QString theType ) { if( !theArray.isEmpty() ) @@ -139,6 +142,11 @@ GLViewer_Object* GLViewer_MimeSource::getObject( QByteArray theArray, QString th return NULL; } +/*! + Creates list of objects by its representation (byte array) + \param theArray - byte array + \param theType - type of object +*/ QValueList GLViewer_MimeSource::getObjects( QByteArray theArray, QString theType ) { if( !theArray.isEmpty() ) @@ -210,6 +218,10 @@ QValueList GLViewer_MimeSource::getObjects( QByteArray theArra return QValueList(); } +/*! + \return format by index + \param theIndex - index +*/ const char* GLViewer_MimeSource::format( int theIndex ) const { switch( theIndex ) @@ -223,6 +235,9 @@ const char* GLViewer_MimeSource::format( int theIndex ) const } +/*! + \return internal byte array +*/ QByteArray GLViewer_MimeSource::encodedData( const char* theObjectType ) const { if( theObjectType == "GLViewer_Objects" ) diff --git a/src/GLViewer/GLViewer_MimeSource.h b/src/GLViewer/GLViewer_MimeSource.h index 4fca3c9d7..01e59b508 100644 --- a/src/GLViewer/GLViewer_MimeSource.h +++ b/src/GLViewer/GLViewer_MimeSource.h @@ -40,10 +40,10 @@ class GLViewer_Object; -/*! Class GLViewer_MimeSource -* Needs for a work with QClipboard +/*! + \class GLViewer_MimeSource + Needs for a work with QClipboard */ - class GLVIEWER_API GLViewer_MimeSource: public QMimeSource { public: diff --git a/src/GLViewer/GLViewer_Object.cxx b/src/GLViewer/GLViewer_Object.cxx index f5972674b..37fdca053 100644 --- a/src/GLViewer/GLViewer_Object.cxx +++ b/src/GLViewer/GLViewer_Object.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Object -** Descr: OpenGL Object -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ - //#include #include "GLViewer_Object.h" #include "GLViewer_Drawer.h" @@ -37,6 +30,9 @@ //#include //using namespace std; +/*! + Default constructor +*/ GLViewer_Object::GLViewer_Object() { myXScale = 1.0; @@ -65,6 +61,9 @@ GLViewer_Object::GLViewer_Object() myGroup = NULL; } +/*! + Destructor +*/ GLViewer_Object::~GLViewer_Object() { if( myRect ) @@ -80,16 +79,27 @@ GLViewer_Object::~GLViewer_Object() delete myAspectLine; } +/*! + \return priority of object +*/ int GLViewer_Object::getPriority() const { return myDrawer ? myDrawer->getPriority() : 0; } +/*! + \return true if object is inside rectangle + \param theRect - rectangle +*/ GLboolean GLViewer_Object::isInside( GLViewer_Rect theRect ) { return theRect.toQRect().contains( myRect->toQRect() ); } +/*! + Sets zoom factor + \param zoom - zoom factor +*/ GLboolean GLViewer_Object::setZoom( GLfloat zoom, bool, bool ) { if( myZoom == zoom ) @@ -99,6 +109,10 @@ GLboolean GLViewer_Object::setZoom( GLfloat zoom, bool, bool ) return GL_TRUE; } +/*! + Performs zoom change by step + \param zoomIn - to increase to decrease zoom +*/ GLboolean GLViewer_Object::updateZoom( bool zoomIn ) { float newZoom; @@ -118,6 +132,10 @@ GLboolean GLViewer_Object::updateZoom( bool zoomIn ) return setZoom( newZoom, true ); } +/*! + Codes object as byte copy + \return byte array +*/ QByteArray GLViewer_Object::getByteCopy() { int i = 0; @@ -185,6 +203,10 @@ QByteArray GLViewer_Object::getByteCopy() return aResult; } +/*! + Initialize object by byte array + \param theArray - byte array +*/ bool GLViewer_Object::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -281,6 +303,10 @@ bool GLViewer_Object::initializeFromByteCopy( QByteArray theArray ) return true; } +/*! + Sets object's group + \param theGroup - group +*/ void GLViewer_Object::setGroup( GLViewer_Group* theGroup ) { if ( myGroup == theGroup ) @@ -294,6 +320,9 @@ void GLViewer_Object::setGroup( GLViewer_Group* theGroup ) myGroup->addObject( this ); } +/*! + \return object's group +*/ GLViewer_Group* GLViewer_Object::getGroup() const { return myGroup; diff --git a/src/GLViewer/GLViewer_Object.h b/src/GLViewer/GLViewer_Object.h index 6cd21b294..d6abc6ea9 100644 --- a/src/GLViewer/GLViewer_Object.h +++ b/src/GLViewer/GLViewer_Object.h @@ -45,10 +45,6 @@ #pragma warning( disable:4251 ) #endif -/*! - * Class GLViewer_Object - * Base Object for GLViewer - */ class GLViewer_Drawer; class GLViewer_AspectLine; class GLViewer_Group; @@ -56,6 +52,10 @@ class GLViewer_CoordSystem; class GLViewer_Text; class GLViewer_Owner; +/*! + * Class GLViewer_Object + * Base Object for all GLViewer objects + */ class GLVIEWER_API GLViewer_Object { public: diff --git a/src/GLViewer/GLViewer_Selector.cxx b/src/GLViewer/GLViewer_Selector.cxx index 5df29eb89..2bf702e18 100644 --- a/src/GLViewer/GLViewer_Selector.cxx +++ b/src/GLViewer/GLViewer_Selector.cxx @@ -22,13 +22,6 @@ // File: GLViewer_Selector.cxx // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector -** Descr: Base class for object selection in QAD-based application -** Module: GLViewer -** Created: UI team, 22.09.00 -*****************************************************************************/ - //#include #include "GLViewer_Selector.h" diff --git a/src/GLViewer/GLViewer_Selector.h b/src/GLViewer/GLViewer_Selector.h index ad40ab124..3458451f0 100644 --- a/src/GLViewer/GLViewer_Selector.h +++ b/src/GLViewer/GLViewer_Selector.h @@ -22,12 +22,6 @@ // File: GLViewer_Selector.h // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector -** Descr: Base class for object selection in QAD-based application -** Module: GLViewer -** Created: UI team, 22.09.00 -*****************************************************************************/ #ifndef GLVIEWER_SELECTOR_H #define GLVIEWER_SELECTOR_H @@ -41,10 +35,10 @@ class GLViewer_Viewer; -/*! Class GLViewer_Selector -* Based select manager for GLViewer +/*! + \Class GLViewer_Selector + Base class for object selection in SUIT-based application */ - class GLVIEWER_API GLViewer_Selector : public QObject { Q_OBJECT diff --git a/src/GLViewer/GLViewer_Selector2d.cxx b/src/GLViewer/GLViewer_Selector2d.cxx index e8a414d46..d2037d272 100644 --- a/src/GLViewer/GLViewer_Selector2d.cxx +++ b/src/GLViewer/GLViewer_Selector2d.cxx @@ -22,19 +22,15 @@ // File: GLViewer_Selector2d.cxx // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector2d -** Descr: OpenGL Selector 2D -** Module: GLViewer -** Created: UI team, 20.09.02 -*****************************************************************************/ - //#include #include "GLViewer_Selector2d.h" #include "GLViewer_Viewer2d.h" #include "GLViewer_Context.h" #include "GLViewer_ViewPort2d.h" +/*! + Constructor +*/ GLViewer_Selector2d::GLViewer_Selector2d( GLViewer_Viewer2d* v2d, GLViewer_Context* glc ) : GLViewer_Selector( v2d ), myGLContext( glc ) @@ -43,20 +39,35 @@ myGLContext( glc ) // myGLContext->SetSelectionColor( Quantity_NOC_RED ); } +/*! + Destructor +*/ GLViewer_Selector2d::~GLViewer_Selector2d() { } +/*! + Changes hilight color of context + \param color - new hilight color +*/ void GLViewer_Selector2d::setHilightColor( Quantity_NameOfColor color ) { myGLContext->SetHighlightColor( color ); } +/*! + Changes selection color of context + \param color - new selection color +*/ void GLViewer_Selector2d::setSelectColor( Quantity_NameOfColor color ) { myGLContext->SetSelectionColor( color ); } +/*! + Detects object at point + \param x, y - point co-ordinates +*/ void GLViewer_Selector2d::detect( int x, int y ) { //cout << "GLViewer_Selector2d : detect ( " << x << " , " << y << " )" << endl; @@ -71,6 +82,9 @@ void GLViewer_Selector2d::detect( int x, int y ) myGLContext->MoveTo( x, y ); } +/*! + Undetects all objects +*/ void GLViewer_Selector2d::undetectAll() { if ( myLocked || !myGLContext || !myViewer || !myViewer->getActiveView() || @@ -84,6 +98,10 @@ void GLViewer_Selector2d::undetectAll() myGLContext->clearHighlighted( true ); } +/*! + Selects previously hilighted objects + \param append - append objects to selection +*/ void GLViewer_Selector2d::select( bool append ) { //cout << "GLViewer_Selector2d : select ( " << (int)append << " )" << endl; @@ -104,6 +122,11 @@ void GLViewer_Selector2d::select( bool append ) checkSelection( selBefore, append, status ); } +/*! + Selects objects in rectangle + \param selRect - selection rectangle + \param append - append objects to selection +*/ void GLViewer_Selector2d::select( const QRect& selRect, bool append ) { GLViewer_Viewer::SelectionMode selMode = myViewer->getSelectionMode(); @@ -123,6 +146,9 @@ void GLViewer_Selector2d::select( const QRect& selRect, bool append ) checkSelection( selBefore, append, aStatus ); } +/*! + Unselects all objects +*/ void GLViewer_Selector2d::unselectAll() { if ( myLocked || !myViewer ) @@ -137,8 +163,10 @@ void GLViewer_Selector2d::unselectAll() if ( hadSelection ) emit selSelectionCancel(); } -/* Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel' - Should be called by after non-interactive selection. */ +/*! + Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel' + Should be called by after non-interactive selection. +*/ void GLViewer_Selector2d::checkSelection( int selBefore, bool append, int aStatus ) { int selAfter = numSelected(); @@ -158,6 +186,9 @@ void GLViewer_Selector2d::checkSelection( int selBefore, bool append, int aStatu } } +/*! + \return number of selected objects +*/ int GLViewer_Selector2d::numSelected() const { return myGLContext->NbSelected(); diff --git a/src/GLViewer/GLViewer_Selector2d.h b/src/GLViewer/GLViewer_Selector2d.h index cce3cc37e..2f21920ae 100644 --- a/src/GLViewer/GLViewer_Selector2d.h +++ b/src/GLViewer/GLViewer_Selector2d.h @@ -22,12 +22,6 @@ // File: GLViewer_Selector2d.h // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector2d -** Descr: OpenGL Selector 2D -** Module: GLViewer -** Created: UI team, 20.09.02 -*****************************************************************************/ #ifndef GLVIEWER_SELECTOR2D_H #define GLVIEWER_SELECTOR2D_H @@ -42,8 +36,9 @@ class GLViewer_Viewer2d; class GLViewer_Context; -/*! Class GLViewer_Selector2d -* 2D select manager for GLViewer +/*! + \class GLViewer_Selector2d + 2D select manager for GLViewer */ class GLVIEWER_API GLViewer_Selector2d : public GLViewer_Selector { diff --git a/src/GLViewer/GLViewer_Text.cxx b/src/GLViewer/GLViewer_Text.cxx index bafa33ec1..63a00fd00 100644 --- a/src/GLViewer/GLViewer_Text.cxx +++ b/src/GLViewer/GLViewer_Text.cxx @@ -19,16 +19,12 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Text -** Descr: Substitution of Prs3d_Text for OpenGL -** Module: GLViewer -** Created: UI team, 10.07.03 -****************************************************************************/ - //#include #include "GLViewer_Text.h" +/*! + Constructor +*/ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color ) { myText = text; @@ -40,6 +36,9 @@ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const myDTF = DTF_BITMAP; } +/*! + Constructor +*/ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color, QFont theFont, int theSeparator ) { myText = text; @@ -51,10 +50,16 @@ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const myDTF = DTF_BITMAP; } +/*! + Destructor +*/ GLViewer_Text::~GLViewer_Text() { } +/*! + \return width of text +*/ int GLViewer_Text::getWidth() { int aResult = 0; @@ -64,12 +69,19 @@ int GLViewer_Text::getWidth() return aResult; } +/*! + \return height of text +*/ int GLViewer_Text::getHeight() { QFontMetrics aFM( myQFont ); return aFM.height(); } +/*! + Codes object as byte copy + \return byte array +*/ QByteArray GLViewer_Text::getByteCopy() const { int i; @@ -121,6 +133,10 @@ QByteArray GLViewer_Text::getByteCopy() const return aResult; } +/*! + Initialize text from binary representation + \param theBuf - byte array +*/ GLViewer_Text* GLViewer_Text::fromByteCopy( QByteArray theBuf ) { int i = 0; diff --git a/src/GLViewer/GLViewer_Text.h b/src/GLViewer/GLViewer_Text.h index ef3512ca9..41f2869c8 100644 --- a/src/GLViewer/GLViewer_Text.h +++ b/src/GLViewer/GLViewer_Text.h @@ -43,9 +43,10 @@ #pragma warning( disable:4251 ) #endif -/* Class GLViewer_Text -* Substitution of Prs3d_Text for OpenGL */ - +/*! + \class GLViewer_Text + Substitution of Prs3d_Text for OpenGL +*/ class GLVIEWER_API GLViewer_Text { public: diff --git a/src/GLViewer/GLViewer_ToolTip.cxx b/src/GLViewer/GLViewer_ToolTip.cxx index 0521ff19f..e43eede36 100644 --- a/src/GLViewer/GLViewer_ToolTip.cxx +++ b/src/GLViewer/GLViewer_ToolTip.cxx @@ -34,17 +34,9 @@ #include #include -/*************************************************************************** -** Class: GLViewer_ToolTip -** Descr: ToolTip of GLViewer_Objects -** Module: GLViewer -** Created: UI team, 25.03.05 -****************************************************************************/ - -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: constructor -//-------------------------------------------------------------------------- +/*! + constructor +*/ GLViewer_ObjectTip::GLViewer_ObjectTip( GLViewer_ViewPort2d* theParent ) :QObject(), myText(), @@ -69,10 +61,9 @@ GLViewer_ObjectTip::GLViewer_ObjectTip( GLViewer_ViewPort2d* theParent ) connect( mypTimer, SIGNAL( timeout() ), this, SLOT( showTip() ) ); } -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + destructor +*/ GLViewer_ObjectTip::~GLViewer_ObjectTip() { // delete mypRect; @@ -87,10 +78,10 @@ GLViewer_ObjectTip::~GLViewer_ObjectTip() } -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + It is called when there is a possibility that a tool tip should be shown + \param p - position of tooltip +*/ bool GLViewer_ObjectTip::maybeTip( const QPoint &p ) { @@ -138,6 +129,9 @@ bool GLViewer_ObjectTip::maybeTip( const QPoint &p ) */ } +/*! + Custom event filter +*/ bool GLViewer_ObjectTip::eventFilter( QObject* theObj, QEvent* e ) { hideTipAndSleep(); @@ -175,7 +169,9 @@ bool GLViewer_ObjectTip::eventFilter( QObject* theObj, QEvent* e ) return false; } - +/*! + Hides tooltip and stops timer +*/ void GLViewer_ObjectTip::hideTipAndSleep() { //if( mypPoint ) @@ -191,6 +187,9 @@ void GLViewer_ObjectTip::hideTipAndSleep() mypTimer->stop(); } +/*! + Shows tooltip +*/ void GLViewer_ObjectTip::showTip() { if( maybeTip( myPoint ) ) @@ -218,6 +217,9 @@ void GLViewer_ObjectTip::showTip() } } +/*! + Restarts timer +*/ void GLViewer_ObjectTip::wakeup( int theTime ) { if( mypTimer->isActive() ) diff --git a/src/GLViewer/GLViewer_ToolTip.h b/src/GLViewer/GLViewer_ToolTip.h index 9dcb71f68..7700b61b1 100644 --- a/src/GLViewer/GLViewer_ToolTip.h +++ b/src/GLViewer/GLViewer_ToolTip.h @@ -35,12 +35,10 @@ class GLViewer_ViewPort2d; class QLabel; -/*************************************************************************** -** Class: GLViewer_ObjectTip -** Descr: ToolTip of GLViewer_Objects -** Module: GLViewer -** Created: UI team, 28.03.05 -****************************************************************************/ +/*! + \class GLViewer_ObjectTip + ToolTip of GLViewer_Objects +*/ class GLVIEWER_API GLViewer_ObjectTip: public QObject//QToolTip//QtxToolTip { Q_OBJECT diff --git a/src/GLViewer/GLViewer_Tools.cxx b/src/GLViewer/GLViewer_Tools.cxx index a54ad837f..9d8739175 100644 --- a/src/GLViewer/GLViewer_Tools.cxx +++ b/src/GLViewer/GLViewer_Tools.cxx @@ -29,12 +29,10 @@ #include -/**************************************************************************** -** Class: GLViewer_LineList -** Descr: Tools for distinct line -** Module: GLViewer -** Created: UI team, 27.10.05 -*****************************************************************************/ +/*! + Constructor + \param size - size of internal array +*/ GLViewer_LineList::GLViewer_LineList( int size ) { myRealSize = 2*size; @@ -52,11 +50,18 @@ GLViewer_LineList::GLViewer_LineList( int size ) memset( myArray, 0, myRealSize*sizeof(double) ); } +/*! + Destructor +*/ GLViewer_LineList::~GLViewer_LineList() { delete myArray; } +/*! + Adds new line segment to list + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::addSegment( double coord1, double coord2 ) { if( coord1 > coord2 ) @@ -158,6 +163,11 @@ bool GLViewer_LineList::addSegment( double coord1, double coord2 ) return true; } +/*! + Gets info about segment + \param theIndex - index of segment + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::readSegment( int theIndex, double& coord1, double& coord2 ) { if( theIndex > mySegmentNumber || !myArray) @@ -169,6 +179,10 @@ bool GLViewer_LineList::readSegment( int theIndex, double& coord1, double& coord return true; } +/*! + \return true if line list covers point + \param thePoint - point co-ordinate +*/ int GLViewer_LineList::contains( double thePoint ) const { if( !myArray || mySegmentNumber == 0 ) @@ -182,6 +196,10 @@ int GLViewer_LineList::contains( double thePoint ) const } +/*! + Removes segment + \param theIndex - segment index +*/ bool GLViewer_LineList::removeSegment( int theIndex ) { if( theIndex > mySegmentNumber || !myArray) @@ -198,6 +216,10 @@ bool GLViewer_LineList::removeSegment( int theIndex ) return true; } +/*! + Removes segment from line list + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::removeSegment( double coord1, double coord2 ) { if( coord1 > coord2 ) @@ -350,12 +372,18 @@ bool GLViewer_LineList::removeSegment( double coord1, double coord2 ) return true; } +/*! + Clears line list +*/ void GLViewer_LineList::clear() { if( myArray ) memset( myArray, 0, myRealSize*sizeof(double) ); } +/*! + Prints debug info about line list +*/ void GLViewer_LineList::print() { cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::"; @@ -365,6 +393,10 @@ void GLViewer_LineList::print() cout << endl; } +/*! + Draws line list with help of OpenGL + \param theDim - dimension +*/ void GLViewer_LineList::show( FieldDim theDim ) { if( !myArray ) @@ -393,12 +425,10 @@ void GLViewer_LineList::show( FieldDim theDim ) } } -/**************************************************************************** -** Class: GLViewer_LineField -** Descr: Tools for solving -** Module: GLViewer -** Created: UI team, 27.10.05 -*****************************************************************************/ + +/*! + Constructor +*/ GLViewer_LineField::GLViewer_LineField() { myCurArrayIndex = 0; @@ -412,6 +442,10 @@ GLViewer_LineField::GLViewer_LineField() myXLineArray = NULL; myYLineArray = NULL; } + +/*! + Constructor +*/ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, const int theYN ) { myCurArrayIndex = 0; @@ -443,6 +477,9 @@ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, c } } +/*! + Destructor +*/ GLViewer_LineField::~GLViewer_LineField() { if( myXLineArray ) @@ -468,11 +505,21 @@ GLViewer_LineField::~GLViewer_LineField() delete myGraphArray2; } +/*! + Adds line +*/ void GLViewer_LineField::addLine( FieldDim theDim, GLViewer_LineList* ) { //not implemented } +/*! + Adds line + \param theDim - dimension + \param theMC - main co-ordinate + \param theBegin - start co-ordinate + \param theEnd - end co-ordinate +*/ void GLViewer_LineField:: addLine( FieldDim theDim, double theMC, double theBegin, double theEnd ) { GLViewer_LineList* aLL = new GLViewer_LineList( 1 ); @@ -481,7 +528,12 @@ void GLViewer_LineField:: addLine( FieldDim theDim, double theMC, double theBegi addLine( theDim, aLL ); } - +/*! + Adds line + \param theDim - dimension + \param theLL - main co-ordinate + \param thePosition - index in list +*/ int GLViewer_LineField::insertLine( FieldDim theDim, GLViewer_LineList* theLL, int thePosition ) { if( !myXLineArray || !myYLineArray ) @@ -533,6 +585,14 @@ int GLViewer_LineField::insertLine( FieldDim theDim, GLViewer_LineList* theLL, i return -1; } +/*! + Adds line + \param theDim - dimension + \param theMainCoord - main co-ordinate + \param theBegin - start co-ordinate + \param theEnd - end co-ordinate + \param thePosition - index in list +*/ int GLViewer_LineField::insertLine( FieldDim theDim, double theMainCoord, double theBegin, double theEnd, int thePosition ) { GLViewer_LineList* aLL = new GLViewer_LineList( 1 ); @@ -541,7 +601,9 @@ int GLViewer_LineField::insertLine( FieldDim theDim, double theMainCoord, double return insertLine( theDim, aLL, thePosition ); } - +/*! + \return other dimension +*/ FieldDim GLViewer_LineField::invertDim( FieldDim theFD ) { if( theFD == FD_X ) @@ -550,6 +612,11 @@ FieldDim GLViewer_LineField::invertDim( FieldDim theFD ) return FD_X; } +/*! + \return line list + \param theIndex - index in list + \param tehFD - dimension +*/ GLViewer_LineList* GLViewer_LineField::getLine( int theIndex, FieldDim theFD ) { if( !myXLineArray || !myYLineArray ) @@ -573,6 +640,11 @@ GLViewer_LineList* GLViewer_LineField::getLine( int theIndex, FieldDim theFD ) return NULL; } +/*! + Sets borders of field + \param X1, X2 - minimal and maximal abscisses + \param Y1, Y2 - minimal and maximal ordinates +*/ void GLViewer_LineField::setBorders( double X1, double X2, double Y1, double Y2 ) { if( !myXLineArray || !myYLineArray ) @@ -593,6 +665,11 @@ void GLViewer_LineField::setBorders( double X1, double X2, double Y1, double Y2 } } +/*! + Adds rectangle + \param top, right - a corner of rectangle + \param bottom, left - other corner of rectangle +*/ void GLViewer_LineField::addRectangle( double top, double right, double bottom, double left ) { if( !myXLineArray || !myYLineArray ) @@ -612,6 +689,9 @@ void GLViewer_LineField::addRectangle( double top, double right, double bottom, } } +/*! + Prints debug info about line field +*/ void GLViewer_LineField::print() { cout << "My X matrix Number: " << myXSize << endl; @@ -623,6 +703,9 @@ void GLViewer_LineField::print() myYLineArray[j]->print(); } +/*! + Draws field with help of OpenGL +*/ void GLViewer_LineField::show() { for( int i = 0; i < myXSize; i++ ) @@ -644,6 +727,10 @@ void GLViewer_LineField::show() cout << "Show function" << endl; } +/*! + \return size + \param theDim - dimension +*/ int GLViewer_LineField::getDimSize( FieldDim theDim ) { if( theDim == FD_X ) @@ -654,6 +741,13 @@ int GLViewer_LineField::getDimSize( FieldDim theDim ) return -1; } +/*! + \return array of intersected indexes + \param theDim - dimension + \param theIndex - index + \param theLL - line with that intersection is checked + \param theSize - to return value of array size +*/ int* GLViewer_LineField::intersectIndexes( FieldDim theDim, int theIndex, const GLViewer_LineList* theLL, int& theSize ) { theSize = 0; @@ -678,7 +772,11 @@ int* GLViewer_LineField::intersectIndexes( FieldDim theDim, int theIndex, const return anArray; } - +/*! + Sets start/end search point + \param thePoint - type of point (start: FP_Start; end: FP_End ) + \param theX, theY - point co-ordinates +*/ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY ) { if( !myXLineArray || !myYLineArray ) @@ -730,6 +828,9 @@ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY return false; } +/*! + \return number of segments +*/ int GLViewer_LineField::segmentNumber() { if( !(myXLineArray || myYLineArray) ) @@ -743,6 +844,9 @@ int GLViewer_LineField::segmentNumber() return aNumber; } +/*! + Removes all multiple segments +*/ void GLViewer_LineField::optimize() { if( !myXLineArray || !myYLineArray ) @@ -790,6 +894,10 @@ void GLViewer_LineField::optimize() } } +/*! + Some prepare actions + Needs call setPoint before +*/ void GLViewer_LineField::initialize() { if( !myXLineArray || !myYLineArray ) @@ -843,6 +951,9 @@ void GLViewer_LineField::initialize() } } +/*! + One iteration of algorithm +*/ void GLViewer_LineField::iteration() { int aParam = myCurCount; @@ -874,6 +985,9 @@ void GLViewer_LineField::iteration() delete[] aNodes; } +/*! + Checks for complete status +*/ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete() { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -924,6 +1038,9 @@ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete() return IS_NOT_SOLVED; } +/*! + Finds LineList by counts and returns indexes +*/ int* GLViewer_LineField::findByCount( int& theParam ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -948,6 +1065,9 @@ int* GLViewer_LineField::findByCount( int& theParam ) return anArray; } +/*! + Finds LineList by segment and dimension +*/ int GLViewer_LineField::findBySegment( FieldDim theDim, int theLineIndex, int theSegment, bool inCurArray ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 || getDimSize( theDim ) <= theLineIndex ) @@ -969,6 +1089,9 @@ int GLViewer_LineField::findBySegment( FieldDim theDim, int theLineIndex, int th return -1; } +/*! + Main method, performs algorithm execution +*/ GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm() { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -990,6 +1113,9 @@ GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm() return ES_SOLVED; } +/*! + \return solution and size of solution +*/ double* GLViewer_LineField::solution( int& theSize ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -1033,6 +1159,9 @@ double* GLViewer_LineField::solution( int& theSize ) return anArray; } +/*! + \return current solution array +*/ GraphNode* GLViewer_LineField::getCurArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1044,6 +1173,9 @@ GraphNode* GLViewer_LineField::getCurArray() return myGraphArray2; } +/*! + \return other solution array +*/ GraphNode* GLViewer_LineField::getSecArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1055,6 +1187,9 @@ GraphNode* GLViewer_LineField::getSecArray() return myGraphArray1; } +/*! + \return maximum segment number +*/ int GLViewer_LineField::maxSegmentNum() { if( !myXLineArray || !myYLineArray ) @@ -1074,6 +1209,10 @@ int GLViewer_LineField::maxSegmentNum() return max_num; } +/*! + \return list of LileList by dimension + \param theDim - dimension +*/ GLViewer_LineList** GLViewer_LineField::getLLArray( FieldDim theDim ) { if( theDim == FD_X ) diff --git a/src/GLViewer/GLViewer_Tools.h b/src/GLViewer/GLViewer_Tools.h index 3acdd879b..65a640f0e 100644 --- a/src/GLViewer/GLViewer_Tools.h +++ b/src/GLViewer/GLViewer_Tools.h @@ -34,12 +34,10 @@ class GLViewer_LineField; -/**************************************************************************** -** Class: GLViewer_Tools -** Descr: Tools for Viewer -** Module: GLViewer -** Created: UI team, 27.10.05 -*****************************************************************************/ +/*! + \class GLViewer_Tools + Tools for Viewer +*/ class GLVIEWER_API GLViewer_Tools { public: @@ -57,7 +55,7 @@ enum FieldDim }; /*! - Class GLViewer_LineList + \class GLViewer_LineList Tools for distinct line This class implmented interface for segment operations: add, cut, remove and etc. @@ -122,9 +120,10 @@ struct SearchPoint int mySolveIndex; }; -/*! Class GLViewer_LineField -* Tools for solving algorithm of finding shortest path on rare grid with minimum of -* line turns number +/*! + \class GLViewer_LineField + Tools for solving algorithm of finding shortest path on rare grid with minimum of + line turns number */ class GLViewer_LineField { @@ -212,9 +211,9 @@ protected: //! Checks for complete status IterationStatus checkComplete(); - //! Finds LileList by counts and returns indexes + //! Finds LineList by counts and returns indexes int* findByCount( int& theParam ); - //! Finds LileList by segment and dimension + //! Finds LineList by segment and dimension int findBySegment( FieldDim, int coord1, int coord2, bool inCurArray = true ); //! Returns current solution array diff --git a/src/GLViewer/GLViewer_ViewFrame.cxx b/src/GLViewer/GLViewer_ViewFrame.cxx index a466d7b2f..7cc29afba 100644 --- a/src/GLViewer/GLViewer_ViewFrame.cxx +++ b/src/GLViewer/GLViewer_ViewFrame.cxx @@ -22,13 +22,6 @@ // File: GLViewer_ViewFrame.cxx // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewFrame -** Descr: Frame window for viewport in QAD-based application -** Module: QAD -** Created: UI team, 05.09.00 -****************************************************************************/ - //#include #include "GLViewer_ViewFrame.h" #include "GLViewer_Viewer.h" @@ -82,10 +75,9 @@ GLViewer_ViewFrame::~GLViewer_ViewFrame() { } -//================================================================ -// Function : createActions -// Purpose : -//================================================================ +/*! + Creates actions of GL view frame +*/ void GLViewer_ViewFrame::createActions() { if (!myActionsMap.isEmpty()) return; @@ -148,10 +140,9 @@ void GLViewer_ViewFrame::createActions() myActionsMap[ ResetId ] = aAction; } -//================================================================ -// Function : createToolBar -// Purpose : -//================================================================ +/*! + Creates toolbar of GL view frame +*/ void GLViewer_ViewFrame::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -248,7 +239,7 @@ QSize GLViewer_ViewFrame::sizeHint() const { QWidget* p = parentWidget(); if ( p && p->inherits( "QWorkspaceChild" ) ) - p = p->parentWidget(); /* QWorkspaceChild: internal impl class in QWorkspace */ + p = p->parentWidget(); if ( !p ) return QMainWindow::sizeHint(); return QSize( 9 * p->width() / 10 , 9 * p->height() / 10 ); @@ -263,6 +254,9 @@ void GLViewer_ViewFrame::onUpdate( int ) //#include +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void GLViewer_ViewFrame::onViewDump() { GLViewer_Widget* aWidget = ((GLViewer_ViewPort2d*)myVP)->getGLWidget(); @@ -448,50 +442,73 @@ void GLViewer_ViewFrame::onViewDump() } } +/*! + Start panning +*/ void GLViewer_ViewFrame::onViewPan() { myViewer->activateTransform( GLViewer_Viewer::Pan ); } +/*! + Start zooming +*/ void GLViewer_ViewFrame::onViewZoom() { myViewer->activateTransform( GLViewer_Viewer::Zoom ); } +/*! + Start fit all +*/ void GLViewer_ViewFrame::onViewFitAll() { myViewer->activateTransform( GLViewer_Viewer::FitAll ); } +/*! + Start fit area +*/ void GLViewer_ViewFrame::onViewFitArea() { myViewer->activateTransform( GLViewer_Viewer::FitRect ); } +/*! + Start fit selected +*/ void GLViewer_ViewFrame::onViewFitSelect() { myViewer->activateTransform( GLViewer_Viewer::FitSelect ); } +/*! + Start global panning +*/ void GLViewer_ViewFrame::onViewGlobalPan() { myViewer->activateTransform( GLViewer_Viewer::PanGlobal ); } +/*! + Start rotating +*/ void GLViewer_ViewFrame::onViewRotate() { //myViewer->activateTransform( GLViewer_Viewer::Rotate ); } +/*! + Start reset default view aspects +*/ void GLViewer_ViewFrame::onViewReset() { myViewer->activateTransform( GLViewer_Viewer::Reset ); } - -//================================================================ -// Function : mouseEvent -// Purpose : dispatches mouse events -//================================================================ + +/*! + Dispatches mouse events +*/ void GLViewer_ViewFrame::mouseEvent( QMouseEvent* e ) { switch ( e->type() ) @@ -513,10 +530,9 @@ void GLViewer_ViewFrame::mouseEvent( QMouseEvent* e ) } } -//================================================================ -// Function : keyEvent -// Purpose : dispatches key events -//================================================================ +/*! + Dispatches key events +*/ void GLViewer_ViewFrame::keyEvent( QKeyEvent* e ) { switch ( e->type() ) @@ -532,10 +548,9 @@ void GLViewer_ViewFrame::keyEvent( QKeyEvent* e ) } } -//================================================================ -// Function : wheelEvent -// Purpose : dispatches wheel events -//================================================================ +/*! + Dispatches wheel events +*/ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e ) { switch ( e->type() ) @@ -548,8 +563,9 @@ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e ) } } -/*! The method returns the visual parameters of this view as a formated string - */ +/*! + \return the visual parameters of this view as a formated string +*/ QString GLViewer_ViewFrame::getVisualParameters() { QString retStr; @@ -563,8 +579,9 @@ QString GLViewer_ViewFrame::getVisualParameters() return retStr; } -/* The method restors visual parameters of this view from a formated string - */ +/*! + The method restores visual parameters of this view from a formated string +*/ void GLViewer_ViewFrame::setVisualParameters( const QString& parameters ) { QStringList paramsLst = QStringList::split( '*', parameters, true ); diff --git a/src/GLViewer/GLViewer_ViewFrame.h b/src/GLViewer/GLViewer_ViewFrame.h index 8b9267a42..d2686dfc6 100644 --- a/src/GLViewer/GLViewer_ViewFrame.h +++ b/src/GLViewer/GLViewer_ViewFrame.h @@ -22,12 +22,6 @@ // File: GLViewer_ViewFrame.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewFrame -** Descr: Frame window for viewport in QAD-based application -** Module: QAD -** Created: UI team, 05.09.00 -****************************************************************************/ #ifndef GLVIEWER_VIEWFRAME_H #define GLVIEWER_VIEWFRAME_H @@ -47,8 +41,9 @@ class GLViewer_ViewPort; #pragma warning( disable:4251 ) #endif -/*! Class GLViewer_ViewFrame -* Frame window for viewport in GLViewer +/*! + \class GLViewer_ViewFrame + Frame window for viewport in QAD-based application */ class GLVIEWER_API GLViewer_ViewFrame: public SUIT_ViewWindow diff --git a/src/GLViewer/GLViewer_ViewManager.cxx b/src/GLViewer/GLViewer_ViewManager.cxx index 91150147a..2083ff4d5 100644 --- a/src/GLViewer/GLViewer_ViewManager.cxx +++ b/src/GLViewer/GLViewer_ViewManager.cxx @@ -30,7 +30,7 @@ int GLViewer_ViewManager::myMaxId = 0; -//*************************************************************** +/*!Constructor.*/ GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop ) : SUIT_ViewManager( theStudy, theDesktop ) { @@ -38,19 +38,19 @@ GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* setViewModel( new GLViewer_Viewer2d( "GLViewer" ) ); } -//*************************************************************** +/*!Destructor.*/ GLViewer_ViewManager::~GLViewer_ViewManager() { } -//*************************************************************** +/*!Sets view name for view window \a theView.*/ void GLViewer_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( QString( "GL scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1)); } -//*************************************************************** +/*!Context menu popup for \a popup.*/ void GLViewer_ViewManager::contextMenuPopup( QPopupMenu* popup ) { SUIT_ViewManager::contextMenuPopup( popup ); diff --git a/src/GLViewer/GLViewer_ViewPort.cxx b/src/GLViewer/GLViewer_ViewPort.cxx index 78767afa1..b6416e9c6 100644 --- a/src/GLViewer/GLViewer_ViewPort.cxx +++ b/src/GLViewer/GLViewer_ViewPort.cxx @@ -22,13 +22,6 @@ // File: GLViewer_ViewPort.cxx // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewPort -** Descr: Visualisation canvas of QAD-based application -** Module: QAD -** Created: UI team, 05.09.00 -****************************************************************************/ - //#include #if !(defined WNT) && !(defined QT_CLEAN_NAMESPACE) @@ -60,6 +53,11 @@ #include #include +/*! + \struct CMapEntry + Map of indexed colors + For internal purposes +*/ struct CMapEntry { CMapEntry(); @@ -69,6 +67,9 @@ struct CMapEntry XStandardColormap scmap; }; +/*! + Constructor +*/ CMapEntry::CMapEntry() { cmap = 0; @@ -76,6 +77,9 @@ CMapEntry::CMapEntry() scmap.colormap = 0; } +/*! + Destructor +*/ CMapEntry::~CMapEntry() { if ( alloc ) @@ -587,6 +591,9 @@ void GLViewer_ViewPort::onChangeBgColor() setBackgroundColor( selColor ); } +/*! + Custom context menu event handler +*/ void GLViewer_ViewPort::contextMenuEvent( QContextMenuEvent* e ) { //if ( e->reason() != QContextMenuEvent::Mouse ) diff --git a/src/GLViewer/GLViewer_ViewPort.h b/src/GLViewer/GLViewer_ViewPort.h index 02ef4edaf..3174121d1 100644 --- a/src/GLViewer/GLViewer_ViewPort.h +++ b/src/GLViewer/GLViewer_ViewPort.h @@ -22,11 +22,6 @@ // File: GLViewer_ViewPort.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewPort -** Descr: Visualisation canvas of GLViewer -** Created: UI team, 05.09.04 -****************************************************************************/ #ifndef GLVIEWER_VIEWPORT_H #define GLVIEWER_VIEWPORT_H @@ -57,10 +52,10 @@ enum BlockStatus BS_Dragging = 0x0004 }; -/*! - * Class GLViewer_ViewPort - * Visualisation canvas of GLViewer - */ +/*! + \class GLViewer_ViewPort + Visualisation canvas of GLViewer +*/ class GLVIEWER_API GLViewer_ViewPort: public QWidget { Q_OBJECT diff --git a/src/GLViewer/GLViewer_ViewPort2d.cxx b/src/GLViewer/GLViewer_ViewPort2d.cxx index 17d9d68da..a81bc0763 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.cxx +++ b/src/GLViewer/GLViewer_ViewPort2d.cxx @@ -63,6 +63,9 @@ void rotate_point( float& theX, float& theY, float theAngle ) theY = aTempY; } +/*! + Constructor +*/ GLViewer_ViewPort2d::GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* theViewFrame ) : GLViewer_ViewPort( parent ), myMargin( MARGIN ), myWidth( WIDTH ), myHeight( HEIGHT ), @@ -105,6 +108,9 @@ GLViewer_ViewPort2d::GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* t // myGLWidget->installEventFilter( myObjectTip ); } +/*! + Destructor +*/ GLViewer_ViewPort2d::~GLViewer_ViewPort2d() { if( myCompass ) @@ -117,6 +123,9 @@ GLViewer_ViewPort2d::~GLViewer_ViewPort2d() delete myGLWidget; } +/*! + SLOT: initializes drag process +*/ void GLViewer_ViewPort2d::onStartDragObject( ) { if( myIsDragProcess == noDrag ) @@ -132,6 +141,9 @@ void GLViewer_ViewPort2d::onStartDragObject( ) } } +/*! + SLOT: cuts object to clipboard +*/ void GLViewer_ViewPort2d::onCutObject() { /*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject(); @@ -167,6 +179,9 @@ void GLViewer_ViewPort2d::onCutObject() } } +/*! + SLOT: copies object to clipboard +*/ void GLViewer_ViewPort2d::onCopyObject() { /*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject(); @@ -198,6 +213,9 @@ void GLViewer_ViewPort2d::onCopyObject() } } +/*! + SLOT: pastes object from clipboard +*/ void GLViewer_ViewPort2d::onPasteObject() { /*QClipboard *aClipboard = QApplication::clipboard(); @@ -243,6 +261,9 @@ void GLViewer_ViewPort2d::onPasteObject() */ } +/*! + SLOT: called when object is being dragged +*/ void GLViewer_ViewPort2d::onDragObject( QMouseEvent* e ) { //cout << "---GLViewer_ViewPort2d::onDragObject()---" << endl; @@ -401,6 +422,9 @@ void GLViewer_ViewPort2d::mouseReleaseEvent( QMouseEvent* e ) } } +/*! + Custom mouse double click event handler +*/ void GLViewer_ViewPort2d::mouseDoubleClickEvent( QMouseEvent * e ) { //redefined to block mouse release after mouse double click @@ -409,6 +433,10 @@ void GLViewer_ViewPort2d::mouseDoubleClickEvent( QMouseEvent * e ) GLViewer_ViewPort::mouseDoubleClickEvent( e ); } +/*! + Creates or deletes compass + \param on - if it is true, then to create +*/ void GLViewer_ViewPort2d::turnCompass( GLboolean on ) { if( on ) @@ -417,6 +445,10 @@ void GLViewer_ViewPort2d::turnCompass( GLboolean on ) delete myCompass; } +/*! + Creates or deletes grid + \param on - if it is true, then to create +*/ void GLViewer_ViewPort2d::turnGrid( GLboolean on ) { if( on ) @@ -431,6 +463,11 @@ void GLViewer_ViewPort2d::turnGrid( GLboolean on ) delete myGrid; } +/*! + Changes grid color + \param gridColor - new grid color + \param axisColor - new axis color +*/ void GLViewer_ViewPort2d::setGridColor( const QColor gridColor, const QColor axisColor ) { if( myGrid ) @@ -444,6 +481,10 @@ void GLViewer_ViewPort2d::setGridColor( const QColor gridColor, const QColor axi } } +/*! + Changes background color + \param color - new background color +*/ void GLViewer_ViewPort2d::setBackgroundColor( const QColor& color ) { GLViewer_ViewPort::setBackgroundColor( color ); @@ -454,11 +495,17 @@ void GLViewer_ViewPort2d::setBackgroundColor( const QColor& color ) myGLWidget->repaint(); } +/*! + \return background color +*/ QColor GLViewer_ViewPort2d::backgroundColor() const { return GLViewer_ViewPort::backgroundColor(); } +/*! + Resize view +*/ void GLViewer_ViewPort2d::initResize( int x, int y ) { float xa, xb, ya, yb; @@ -509,6 +556,9 @@ void GLViewer_ViewPort2d::initResize( int x, int y ) myGLWidget->setScale( myXScale, myYScale, 1.0 ); } +/*! + Custom paint event handler +*/ void GLViewer_ViewPort2d::paintEvent( QPaintEvent* e ) { //cout << "GLViewer_ViewPort2d::paintEvent" << endl; @@ -516,12 +566,18 @@ void GLViewer_ViewPort2d::paintEvent( QPaintEvent* e ) GLViewer_ViewPort::paintEvent( e ); } +/*! + Custom resize event handler +*/ void GLViewer_ViewPort2d::resizeEvent( QResizeEvent* e ) { //cout << "GLViewer_ViewPort2d::resizeEvent" << endl; GLViewer_ViewPort::resizeEvent( e ); } +/*! + Resets view to start state +*/ void GLViewer_ViewPort2d::reset() { //cout << "GLViewer_ViewPort2d::reset" << endl; @@ -557,6 +613,11 @@ void GLViewer_ViewPort2d::reset() myGLWidget->updateGL(); } +/*! + Sets offset to view + \param dx - X offset + \param dy - Y offset +*/ void GLViewer_ViewPort2d::pan( int dx, int dy ) { //cout << "GLViewer_ViewPort2d::pan " << dx << " " << dy << endl; @@ -588,6 +649,10 @@ void GLViewer_ViewPort2d::pan( int dx, int dy ) myGLWidget->updateGL(); } +/*! + Sets view center in global coords + \param x, y - global co-ordinates of center +*/ void GLViewer_ViewPort2d::setCenter( int x, int y ) { //cout << "GLViewer_ViewPort2d::setCenter" << endl; @@ -617,6 +682,9 @@ void GLViewer_ViewPort2d::setCenter( int x, int y ) myGLWidget->updateGL(); } +/*! + Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 ) +*/ void GLViewer_ViewPort2d::zoom( int x0, int y0, int x, int y ) { //cout << "GLViewer_ViewPort2d::zoom" << endl; @@ -659,6 +727,10 @@ void GLViewer_ViewPort2d::zoom( int x0, int y0, int x, int y ) } } +/*! + Transforms view by rectangle + \param rect - rectangle +*/ void GLViewer_ViewPort2d::fitRect( const QRect& rect ) { float x0, x1, y0, y1; @@ -711,6 +783,9 @@ void GLViewer_ViewPort2d::fitRect( const QRect& rect ) myGLWidget->updateGL(); } +/*! + Transforms view by selection +*/ void GLViewer_ViewPort2d::fitSelect() { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -732,6 +807,10 @@ void GLViewer_ViewPort2d::fitSelect() } } +/*! + Transform view by view borders + \param keepScale - if it is true, zoom does not change +*/ void GLViewer_ViewPort2d::fitAll( bool keepScale, bool withZ ) { //cout << "GLViewer_ViewPort2d::fitAll" << endl; @@ -820,11 +899,19 @@ void GLViewer_ViewPort2d::fitAll( bool keepScale, bool withZ ) emit vpUpdateValues(); } +/*! + Begins rotation + \param x, y - start point +*/ void GLViewer_ViewPort2d::startRotation( int x, int y ) { myGLWidget->setRotationStart( x, y, 1.0 ); } +/*! + Performs rotation + \param intX, intY - current point +*/ void GLViewer_ViewPort2d::rotate( int intX, int intY ) { GLint val[4]; @@ -871,6 +958,9 @@ void GLViewer_ViewPort2d::rotate( int intX, int intY ) myGLWidget->updateGL(); } +/*! + Finishes rotation +*/ void GLViewer_ViewPort2d::endRotation() { float ra, rx, ry, rz; @@ -878,6 +968,9 @@ void GLViewer_ViewPort2d::endRotation() myGLWidget->setRotationAngle( ra ); } +/*! + Draws compass +*/ void GLViewer_ViewPort2d::drawCompass() { if( !myCompass->getVisible() ) @@ -1038,6 +1131,9 @@ void GLViewer_ViewPort2d::drawCompass() glCallList( aTextList ); } +/*! + \return blocking status for current started operations +*/ BlockStatus GLViewer_ViewPort2d::currentBlock() { if( myIsDragProcess == inDrag && myCurDragPosX != NULL && myCurDragPosY != NULL) @@ -1049,6 +1145,10 @@ BlockStatus GLViewer_ViewPort2d::currentBlock() return BS_NoBlock; } +/*! + Initializes rectangle selection + \param x, y - start point +*/ void GLViewer_ViewPort2d::startSelectByRect( int x, int y ) { if( !mypFirstPoint && !mypLastPoint ) @@ -1057,6 +1157,11 @@ void GLViewer_ViewPort2d::startSelectByRect( int x, int y ) mypLastPoint = new QPoint( x, y ); } } + +/*! + Draws rectangle selection + \param x, y - current point +*/ void GLViewer_ViewPort2d::drawSelectByRect( int x, int y ) { if( mypFirstPoint && mypLastPoint ) @@ -1075,6 +1180,10 @@ void GLViewer_ViewPort2d::drawSelectByRect( int x, int y ) } } + +/*! + Finishes rectangle selection +*/ void GLViewer_ViewPort2d::finishSelectByRect() { if( mypFirstPoint && mypLastPoint ) @@ -1094,6 +1203,9 @@ void GLViewer_ViewPort2d::finishSelectByRect() } } +/*! + \return rectangle selection +*/ QRect GLViewer_ViewPort2d::selectionRect() { QRect aRect; @@ -1108,6 +1220,8 @@ QRect GLViewer_ViewPort2d::selectionRect() return aRect; } +/*! +*/ bool GLViewer_ViewPort2d::startPulling( GLViewer_Pnt point ) { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -1131,6 +1245,8 @@ bool GLViewer_ViewPort2d::startPulling( GLViewer_Pnt point ) return false; } +/*! +*/ void GLViewer_ViewPort2d::drawPulling( GLViewer_Pnt point ) { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -1156,6 +1272,8 @@ void GLViewer_ViewPort2d::drawPulling( GLViewer_Pnt point ) myPullingObject->pull( point, aLockedObject ); } +/*! +*/ void GLViewer_ViewPort2d::finishPulling() { myIsPulling = false; @@ -1163,6 +1281,10 @@ void GLViewer_ViewPort2d::finishPulling() setCursor( *getDefaultCursor() ); } +/*! + Convert rectangle in window co-ordinates to GL co-ordinates + \return converted rectangle +*/ GLViewer_Rect GLViewer_ViewPort2d::win2GLV( const QRect& theRect ) const { GLViewer_Rect aRect; @@ -1189,6 +1311,10 @@ GLViewer_Rect GLViewer_ViewPort2d::win2GLV( const QRect& theRect ) const return aRect; } +/*! + Convert rectangle in GL co-ordinates to window co-ordinates + \return converted rectangle +*/ QRect GLViewer_ViewPort2d::GLV2win( const GLViewer_Rect& theRect ) const { QRect aRect; @@ -1215,6 +1341,9 @@ QRect GLViewer_ViewPort2d::GLV2win( const GLViewer_Rect& theRect ) const return aRect; } +/*! + SLOT: called when tooltip should be shown +*/ void GLViewer_ViewPort2d::onMaybeTip( QPoint thePoint, QString& theText, QFont& theFont, QRect& theTextReg, QRect& theRegion ) { GLViewer_Context* aContext = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext(); diff --git a/src/GLViewer/GLViewer_ViewPort2d.h b/src/GLViewer/GLViewer_ViewPort2d.h index 128cdbe06..4c39051ce 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.h +++ b/src/GLViewer/GLViewer_ViewPort2d.h @@ -178,7 +178,7 @@ protected: virtual void setCenter( int x, int y ); //! Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 ) virtual void zoom( int x0, int y0, int x1, int y1 ); - //! Transforms view by certangle + //! Transforms view by rectangle virtual void fitRect( const QRect& ); //! Transforms view by selection virtual void fitSelect(); diff --git a/src/GLViewer/GLViewer_Viewer.cxx b/src/GLViewer/GLViewer_Viewer.cxx index 9ca9ed73e..78a16398f 100644 --- a/src/GLViewer/GLViewer_Viewer.cxx +++ b/src/GLViewer/GLViewer_Viewer.cxx @@ -22,13 +22,6 @@ // File: GLViewer_Viewer.cxx // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_Viewer -** Descr: Viewer for QAD-based application -** Module: QAD -** Created: UI team, 05.09.00 -****************************************************************************/ - //#include #include "GLViewer_Viewer.h" #include "GLViewer_Selector.h" @@ -66,10 +59,10 @@ GLViewer_Viewer::~GLViewer_Viewer() delete mySelector; } -//================================================================ -// Function : setViewManager -// Purpose : -//================================================================ +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void GLViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -89,10 +82,9 @@ void GLViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) } } -//================================================================ -// Function : contextMenuPopup -// Purpose : -//================================================================ +/*! + Builds popup for GL viewer +*/ void GLViewer_Viewer::contextMenuPopup( QPopupMenu* thePopup ) { if( thePopup->count() > 0 ) @@ -530,10 +522,6 @@ void GLViewer_Viewer::handleWheel( QWheelEvent* e ) startOperations( e ); } -/**************************************************************** -** Class: GLViewer_ViewTransformer -** Level: Public -*****************************************************************/ int GLViewer_ViewTransformer::panBtn = Qt::MidButton; int GLViewer_ViewTransformer::zoomBtn = Qt::LeftButton; int GLViewer_ViewTransformer::fitRectBtn = Qt::LeftButton; @@ -758,10 +746,6 @@ int GLViewer_ViewTransformer::type() const } -/**************************************************************** -** Class: GLViewer_ViewSketcher -** Level: Public -*****************************************************************/ int GLViewer_ViewSketcher::sketchBtn = LeftButton; /*! diff --git a/src/GLViewer/GLViewer_Viewer.h b/src/GLViewer/GLViewer_Viewer.h index dfd16c2fa..fa6a36f35 100644 --- a/src/GLViewer/GLViewer_Viewer.h +++ b/src/GLViewer/GLViewer_Viewer.h @@ -46,9 +46,9 @@ class SUIT_ViewWindow; #endif /*! - * Class GLViewer_Object - * Base Viewer for GLViewer - */ + \class GLViewer_Object + Base Viewer for GLViewer +*/ class GLVIEWER_API GLViewer_Viewer: public SUIT_ViewModel { Q_OBJECT @@ -128,10 +128,6 @@ protected: GLViewer_ViewTransformer* myTransformer; /* transform manipulator */ }; -/**************************************************************** -** Class: GLViewer_ViewTransformer -** -*****************************************************************/ class GLVIEWER_API GLViewer_ViewTransformer : public QObject { public: @@ -188,10 +184,6 @@ protected: int myMajorBtn; }; -/**************************************************************** -** Class: GLViewer_ViewSketcher -** -*****************************************************************/ class GLVIEWER_API GLViewer_ViewSketcher : public QObject { public: diff --git a/src/GLViewer/GLViewer_Viewer2d.cxx b/src/GLViewer/GLViewer_Viewer2d.cxx index f98f5e2ae..77fdf4972 100644 --- a/src/GLViewer/GLViewer_Viewer2d.cxx +++ b/src/GLViewer/GLViewer_Viewer2d.cxx @@ -22,13 +22,6 @@ // File: GLViewer_Viewer2d.cxx // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_Viewer2d -** Descr: OpenGL Viewer 2D -** Module: GLViewer -** Created: UI team, 04.09.02 -****************************************************************************/ - //#include #include "GLViewer_Viewer2d.h" #include "GLViewer_Object.h" @@ -50,6 +43,10 @@ #include #include +/*! + Constructor + \param title - viewer title +*/ GLViewer_Viewer2d::GLViewer_Viewer2d( const QString& title) : GLViewer_Viewer( title ) { @@ -64,6 +61,9 @@ GLViewer_Viewer( title ) myDrawers.clear(); } +/*! + Destructor +*/ GLViewer_Viewer2d::~GLViewer_Viewer2d() { //myGLSketcher = 0; @@ -71,11 +71,18 @@ GLViewer_Viewer2d::~GLViewer_Viewer2d() GLViewer_TexFont::clearTextBases(); } +/*!Create new instance of view window on desktop \a theDesktop. + *\retval SUIT_ViewWindow* - created view window pointer. + */ SUIT_ViewWindow* GLViewer_Viewer2d::createView( SUIT_Desktop* theDesktop ) { return new GLViewer_ViewFrame( theDesktop, this ); } +/*! + Adds item for change background color + \param thePopup - menu +*/ void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup ) { // CTH8434. "Change background color" menu item is available if there are no selected objects @@ -87,6 +94,9 @@ void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup ) } } +/*! + Changes background color +*/ void GLViewer_Viewer2d::onChangeBgColor() { if( !getActiveView() ) @@ -99,6 +109,9 @@ void GLViewer_Viewer2d::onChangeBgColor() } } +/*! + Updates colors for all drawers (does not work) +*/ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) { // cout << "GLViewer_Viewer2d::updateColors" << endl; @@ -126,6 +139,10 @@ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) activateAllDrawers( TRUE ); } +/*! + Updates rect of global scene by adding new rectangle + \param theRect - rectangle +*/ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) { QPtrVector views = getViewManager()->getViews(); @@ -140,6 +157,9 @@ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) } } +/*! + Recomputes global scene rect +*/ void GLViewer_Viewer2d::updateBorders() { QPtrVector views = getViewManager()->getViews(); @@ -178,6 +198,9 @@ void GLViewer_Viewer2d::updateBorders() } } +/*! + Redraws all active objects by updating all drawers in all views +*/ void GLViewer_Viewer2d::updateAll() { if ( !getActiveView() ) @@ -188,6 +211,9 @@ void GLViewer_Viewer2d::updateAll() ( ( GLViewer_ViewPort2d* )( ( GLViewer_ViewFrame* )views[i] )->getViewPort() )->getGLWidget()->updateGL(); } +/*! + \param onlyUpdate is passed to method activateAllDrawers drawers +*/ void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat scY ) { // cout << "GLViewer_Viewer2d::updateDrawers" << endl; @@ -197,6 +223,9 @@ void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat sc activateAllDrawers( update ); } +/*! + Activates drawers for objects from list \param theObjects only +*/ void GLViewer_Viewer2d::activateDrawers( QValueList& theObjects, bool onlyUpdate, GLboolean swap ) { //cout << "GLViewer_Viewer2d::activateDrawers " << (int)onlyUpdate << " " << (int)swap << endl; @@ -282,6 +311,9 @@ void GLViewer_Viewer2d::activateDrawers( QValueList& theObject ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent(); } +/*! + Activates drawer for \param theObject +*/ void GLViewer_Viewer2d::activateDrawer( GLViewer_Object* theObject, bool onlyUpdate, GLboolean swap ) { ObjList aList; @@ -289,6 +321,9 @@ void GLViewer_Viewer2d::activateDrawer( GLViewer_Object* theObject, bool onlyUpd activateDrawers( aList, onlyUpdate, swap ); } +/*! + \param onlyUpdate is passed to drawers +*/ void GLViewer_Viewer2d::activateAllDrawers( bool onlyUpdate, GLboolean swap ) { if ( !getActiveView() ) @@ -306,6 +341,11 @@ void GLViewer_Viewer2d::activateAllDrawers( bool onlyUpdate, GLboolean swap ) activateDrawers( anActiveObjs, onlyUpdate, swap ); } +/*! + Creates set of marker + \param theMarkersNum - number of markers + \param theMarkersRad - radius of markers +*/ void GLViewer_Viewer2d::onCreateGLMarkers( int theMarkersNum, int theMarkersRad ) { if ( !getActiveView() ) @@ -341,6 +381,12 @@ void GLViewer_Viewer2d::onCreateGLMarkers( int theMarkersNum, int theMarkersRad delete[] anYCoord; } +/*! + Creates GL polyline + \param theAnglesNum - number of angles + \param theRadius - radius + \param thePolylineNumber - number +*/ void GLViewer_Viewer2d::onCreateGLPolyline( int theAnglesNum, int theRadius, int thePolylineNumber ) { if ( !getActiveView() ) @@ -384,6 +430,11 @@ void GLViewer_Viewer2d::onCreateGLPolyline( int theAnglesNum, int theRadius, int delete[] anYCoord; } +/*! + Creates text + \param theStr - text string + \param theTextNumber - number +*/ void GLViewer_Viewer2d::onCreateGLText( QString theStr, int theTextNumber ) { if ( !getActiveView() ) @@ -414,6 +465,10 @@ void GLViewer_Viewer2d::onCreateGLText( QString theStr, int theTextNumber ) activateAllDrawers( false ); } +/*! + Translates point from global CS to curreent viewer CS + \param x, y - co-ordinates to be translated +*/ void GLViewer_Viewer2d::transPoint( GLfloat& x, GLfloat& y ) { if ( !getActiveView() ) @@ -442,6 +497,10 @@ void GLViewer_Viewer2d::transPoint( GLfloat& x, GLfloat& y ) y -= yPan; } +/*! + \return object rect in window CS + \param theObject - object +*/ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) { if ( !getActiveView() ) @@ -497,6 +556,11 @@ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) return newRect; } +/*! + Translates rect in window CS to rect in global CS + \param theRect - rectangle to be translated + \return transformed rect +*/ GLViewer_Rect GLViewer_Viewer2d::getGLVRect( const QRect& theRect ) const { if ( !getActiveView() ) @@ -510,6 +574,11 @@ GLViewer_Rect GLViewer_Viewer2d::getGLVRect( const QRect& theRect ) const return vp->win2GLV( theRect ); } +/*! + Translates rect in global CS to rect in window CS + \param theRect - rectangle to be translated + \return transformed rect +*/ QRect GLViewer_Viewer2d::getQRect( const GLViewer_Rect& theRect ) const { if ( !getActiveView() ) @@ -523,87 +592,25 @@ QRect GLViewer_Viewer2d::getQRect( const GLViewer_Rect& theRect ) const return vp->GLV2win( theRect ); } +/*! + \return new selector +*/ GLViewer_Selector* GLViewer_Viewer2d::createSelector() { return new GLViewer_Selector2d( this, getGLContext() ); } +/*! + \return new Transformer + \param type - type of new transformer +*/ GLViewer_ViewTransformer* GLViewer_Viewer2d::createTransformer( int type ) { return new GLViewer_View2dTransformer( this, type ); } -/* -GLViewer_Sketcher* GLViewer_Viewer2d::createGLSketcher( int type ) -{ - return new GLViewer_Sketcher( this, type ); -} -void GLViewer_Viewer2d::activateGLSketching( int type ) -{ - GLViewer_ViewPort2d* vp = 0; - if ( !getActiveView() || !( vp = ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() ) ) - return; - - // Finish current sketching - if ( type == None ) - { - if ( myGLSketcher->getType() != None ) - { - myGLSketcher->setType( None ); - finishSketching(); - } - } - // Activate new sketching - else - { - activateGLSketching( None ); // concurrency not supported - myGLSketcher->setType( type ); - startSketching(); - } -} - -void GLViewer_Viewer2d::startSketching() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getSketchCursor() ); - //avp->enablePopup( false ); - myGLSketcher->startSketching(); -} - -void GLViewer_Viewer2d::finishSketching() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getDefaultCursor() ); - //avp->enablePopup( true ); - myGLSketcher->finishSketching(); -} - -bool GLViewer_Viewer2d::isSketchingActive() -{ - return myGLSketcher->getType() != None; -} - -int GLViewer_Viewer2d::getSketchingType() -{ - return myGLSketcher->getType(); -} - -void GLViewer_Viewer2d::onSketchDelObject() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getDefaultCursor() ); - myGLSketcher->finishSketching( true ); -} - -void GLViewer_Viewer2d::onSketchUndoLast() -{ - -} - -void GLViewer_Viewer2d::onSketchFinish() -{ - finishSketching(); -} +/*! + Custom mouse event handler */ void GLViewer_Viewer2d::onMouseEvent( SUIT_ViewWindow*, QMouseEvent* e ) { @@ -626,6 +633,9 @@ void GLViewer_Viewer2d::onMouseEvent( SUIT_ViewWindow*, QMouseEvent* e ) GLViewer_Viewer::onMouseEvent( 0, e ); } +/*! + Rotation transformation +*/ bool GLViewer_Viewer2d::testRotation( QMouseEvent* e ) { if ( ( e->button() == GLViewer_View2dTransformer::rotateButton() ) && @@ -638,7 +648,11 @@ bool GLViewer_Viewer2d::testRotation( QMouseEvent* e ) return false; } - +/*! + Inserts text lines as header for file + \param aType - file type + \param hFile - file instance +*/ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) { if( aType == POST_SCRIPT ) @@ -671,6 +685,11 @@ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) } } +/*! + Inserts text lines as ending for file + \param aType - file type + \param hFile - file instance +*/ void GLViewer_Viewer2d::insertEnding( VectorFileType aType, QFile& hFile ) { if( aType == POST_SCRIPT ) @@ -698,6 +717,13 @@ inline void mm2custom( GLViewer_Viewer2d::VectorFileType aType, double& value ) #endif } +/*! + Translates current view content to vector file + \param aType - type of file + \param FileName - name of file, + \param aPType - paper size type + \param mmLeft, mmRight, mmTop, mmBottom - margins +*/ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, PaperType aPType, double mmLeft, double mmRight, double mmTop, double mmBottom ) { @@ -821,7 +847,10 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap return true; } - +/*! + Repaints view + \param theView - view to be repainted. If it is NULL then all views will be repainted +*/ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurrent ) { GLViewer_ViewFrame* aCurView; @@ -897,6 +926,9 @@ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurre // ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent(); } +/*! + Starts some operation on mouse event +*/ void GLViewer_Viewer2d::startOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -913,6 +945,9 @@ void GLViewer_Viewer2d::startOperations( QMouseEvent* e ) vp->startSelectByRect( e->x(), e->y() ); } +/*! + Updates started operation on mouse event +*/ bool GLViewer_Viewer2d::updateOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -936,6 +971,9 @@ bool GLViewer_Viewer2d::updateOperations( QMouseEvent* e ) return false; } +/*! + Completes started operation on mouse event +*/ void GLViewer_Viewer2d::finishOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -959,6 +997,9 @@ void GLViewer_Viewer2d::finishOperations( QMouseEvent* e ) } } +/*! + Starts some operation on mouse wheel event +*/ void GLViewer_Viewer2d::startOperations( QWheelEvent* e ) { bool zoomIn = e->delta() > 0; @@ -976,13 +1017,11 @@ void GLViewer_Viewer2d::startOperations( QWheelEvent* e ) } -/**************************************************************** -** Class: GLViewer_View2dTransformer -** -*****************************************************************/ - int GLViewer_View2dTransformer::rotateBtn = RightButton; +/*! + Constructor +*/ GLViewer_View2dTransformer::GLViewer_View2dTransformer( GLViewer_Viewer* viewer, int typ ) : GLViewer_ViewTransformer( viewer, typ ) { @@ -990,6 +1029,9 @@ GLViewer_View2dTransformer::GLViewer_View2dTransformer( GLViewer_Viewer* viewer, initTransform( true ); } +/*! + Destructor +*/ GLViewer_View2dTransformer::~GLViewer_View2dTransformer() { if ( type() == GLViewer_Viewer::Rotate ) diff --git a/src/GLViewer/GLViewer_Viewer2d.h b/src/GLViewer/GLViewer_Viewer2d.h index 21840335f..3682633e1 100644 --- a/src/GLViewer/GLViewer_Viewer2d.h +++ b/src/GLViewer/GLViewer_Viewer2d.h @@ -22,12 +22,6 @@ // File: GLViewer_Viewer2d.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_Viewer2d -** Descr: OpenGL Viewer 2D -** Module: GLViewer -** Created: UI team, 04.09.04 -****************************************************************************/ #ifndef GLVIEWER_VIEWER2D_H #define GLVIEWER_VIEWER2D_H @@ -68,10 +62,11 @@ const double Sizes[2*5] = { #pragma warning( disable:4251 ) #endif -/*! - * Class GLViewer_Object - * 2D viewer for GLViewer - */ +/*! + \class GLViewer_Viewer2d + OpenGL Viewer 2D +*/ + class GLVIEWER_API GLViewer_Viewer2d : public GLViewer_Viewer { Q_OBJECT @@ -234,10 +229,6 @@ protected: //GLViewer_Sketcher* myGLSketcher; }; -/**************************************************************** -** Class: GLViewer_View2dTransformer -** -*****************************************************************/ class GLVIEWER_API GLViewer_View2dTransformer : public GLViewer_ViewTransformer { public: diff --git a/src/GLViewer/GLViewer_Widget.cxx b/src/GLViewer/GLViewer_Widget.cxx index b29a9fb52..616e57546 100644 --- a/src/GLViewer/GLViewer_Widget.cxx +++ b/src/GLViewer/GLViewer_Widget.cxx @@ -22,11 +22,6 @@ // File: GLViewer_Widget.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_Widget -// Description : OpenGL QWidget for GLViewer -//================================================================ - #include "GLViewer_Widget.h" #include "GLViewer_ViewPort2d.h" #include "GLViewer_Viewer2d.h" @@ -49,10 +44,10 @@ using namespace std; #include #include -//======================================================================= -// Function: GLViewer_Widget -// Purpose : -//======================================================================= +/*! + A constructor + Parameters using for QOGLWidget as is +*/ GLViewer_Widget::GLViewer_Widget( QWidget* parent, const char* name ): QGLWidget( parent, 0/*, WRepaintNoErase | WResizeNoErase*/ ) { @@ -78,18 +73,16 @@ QGLWidget( parent, 0/*, WRepaintNoErase | WResizeNoErase*/ ) setMouseTracking( true ); } -//======================================================================= -// Function: GLViewer_Widget -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Widget::~GLViewer_Widget() { } -//======================================================================= -// Function: ~GLViewer_Widget -// Purpose : -//======================================================================= +/*! + \return offset parameters of Window in OpenGL global scene +*/ void GLViewer_Widget::getPan( GLfloat& xPan, GLfloat& yPan, GLfloat& zPan ) { xPan = myXPan; @@ -97,10 +90,9 @@ void GLViewer_Widget::getPan( GLfloat& xPan, GLfloat& yPan, GLfloat& zPan ) zPan = myZPan; } -//======================================================================= -// Function: setPan -// Purpose : -//======================================================================= +/*! + A function for installing the offset parameters of Window in OpenGL global scene +*/ void GLViewer_Widget::setPan( GLfloat xPan, GLfloat yPan, GLfloat zPan ) { myXPan = xPan; @@ -108,10 +100,9 @@ void GLViewer_Widget::setPan( GLfloat xPan, GLfloat yPan, GLfloat zPan ) myZPan = zPan; } -//======================================================================= -// Function: getScale -// Purpose : -//======================================================================= +/*! + \return scales on OpenGL scene along 3 directions in 2d scene zScale = 1.0 +*/ void GLViewer_Widget::getScale( GLfloat& xScale, GLfloat& yScale, GLfloat& zScale ) { xScale = myXScale; @@ -119,10 +110,9 @@ void GLViewer_Widget::getScale( GLfloat& xScale, GLfloat& yScale, GLfloat& zScal zScale = myZScale; } -//======================================================================= -// Function: setScale -// Purpose : -//======================================================================= +/*! + A function for installing the scales of OpenGL scene +*/ void GLViewer_Widget::setScale( GLfloat xScale, GLfloat yScale, GLfloat zScale ) { if ( xScale > 0 && yScale > 0 && zScale > 0 ) @@ -133,10 +123,9 @@ void GLViewer_Widget::setScale( GLfloat xScale, GLfloat yScale, GLfloat zScale ) } } -//======================================================================= -// Function: getRotationStart -// Purpose : -//======================================================================= +/*! + \return start point of curren rotation of Window in OpenGL global scene +*/ void GLViewer_Widget::getRotationStart( GLfloat& rotationStartX, GLfloat& rotationStartY, GLfloat& rotationStartZ ) @@ -146,10 +135,9 @@ void GLViewer_Widget::getRotationStart( GLfloat& rotationStartX, rotationStartZ = myRotationStartZ; } -//======================================================================= -// Function: setRotationStart -// Purpose : -//======================================================================= +/*! + A function for installing the rotation angle of Window in OpenGL global scene in degree (Only in 2D) +*/ void GLViewer_Widget::setRotationStart( GLfloat rotationStartX, GLfloat rotationStartY, GLfloat rotationStartZ ) @@ -159,10 +147,13 @@ void GLViewer_Widget::setRotationStart( GLfloat rotationStartX, myRotationStartZ = rotationStartZ; } -//======================================================================= -// Function: getRotation -// Purpose : -//======================================================================= +/*! + \return parameters of rotation + \param rotationAngle - angle + \param rotationCenterX - center x + \param rotationCenterY - center y + \param rotationCenterZ - center z +*/ void GLViewer_Widget::getRotation( GLfloat& rotationAngle, GLfloat& rotationCenterX, GLfloat& rotationCenterY, @@ -174,10 +165,13 @@ void GLViewer_Widget::getRotation( GLfloat& rotationAngle, rotationCenterZ = myRotationCenterZ; } -//======================================================================= -// Function: setRotation -// Purpose : -//======================================================================= +/*! + Sets parameters of rotation + \param rotationAngle - angle + \param rotationCenterX - center x + \param rotationCenterY - center y + \param rotationCenterZ - center z +*/ void GLViewer_Widget::setRotation( GLfloat rotationAngle, GLfloat rotationCenterX, GLfloat rotationCenterY, @@ -189,10 +183,11 @@ void GLViewer_Widget::setRotation( GLfloat rotationAngle, myRotationCenterZ = rotationCenterZ; } -//======================================================================= -// Function: setBackground -// Purpose : -//======================================================================= + +/*! + Sets image as background + \param filename - name of file +*/ void GLViewer_Widget::setBackground( QString filename ) { @@ -245,29 +240,28 @@ void GLViewer_Widget::setBackground( QString filename ) } } -//======================================================================= -// Function: addToolTip -// Purpose : -//======================================================================= +/*! + Adds tooltip + \param theString - tooltip text + \param theRect - tooltip rectangle +*/ void GLViewer_Widget::addToolTip( QString theString, QRect theRect ) { myToolTipRect = theRect; QToolTip::add( this, myToolTipRect, theString ); } -//======================================================================= -// Function: removeToolTip -// Purpose : -//======================================================================= +/*! + Removes tooltip +*/ void GLViewer_Widget::removeToolTip() { QToolTip::remove( this, myToolTipRect ); } -//======================================================================= -// Function: initializeGL -// Purpose : -//======================================================================= +/*! + Initialization (redefined virtual from QGLWidget) +*/ void GLViewer_Widget::initializeGL() { setAutoBufferSwap( true ); @@ -289,10 +283,9 @@ void GLViewer_Widget::initializeGL() isLoadBackground = false; } -//======================================================================= -// Function: paintGL -// Purpose : -//======================================================================= +/*! + Paints content +*/ void GLViewer_Widget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -335,10 +328,11 @@ void GLViewer_Widget::paintGL() v->repaintView( getViewPort()->getViewFrame() ); } -//======================================================================= -// Function: resizeGL -// Purpose : -//======================================================================= +/*! + Resets OpenGl parameters after resize + \param w - new width + \param h - new height +*/ void GLViewer_Widget::resizeGL( int w, int h ) { @@ -365,10 +359,9 @@ void GLViewer_Widget::resizeGL( int w, int h ) glLoadIdentity(); } -//======================================================================= -// Function: exportRepaint -// Purpose : -//======================================================================= +/*! + Provides repaint in export mode +*/ void GLViewer_Widget::exportRepaint() { isExportMode = true; @@ -378,65 +371,59 @@ void GLViewer_Widget::exportRepaint() isExportMode = false; } -//======================================================================= -// Function: paintEvent -// Purpose : -//======================================================================= +/*! + Custom paint event handler +*/ void GLViewer_Widget::paintEvent( QPaintEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mouseMoveEvent -// Purpose : -//======================================================================= +/*! + Custom mouse move event handler +*/ void GLViewer_Widget::mouseMoveEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mousePressEvent -// Purpose : -//======================================================================= +/*! + Custom mouse press event handler +*/ void GLViewer_Widget::mousePressEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mouseReleaseEvent -// Purpose : -//======================================================================= +/*! + Custom mouse release event handler +*/ void GLViewer_Widget::mouseReleaseEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: enterEvent -// Purpose : -//======================================================================= +/*! + Custom enter event handler +*/ void GLViewer_Widget::enterEvent( QEvent* e ) { updateGL(); } -//======================================================================= -// Function: leaveEvent -// Purpose : -//======================================================================= +/*! + Custom leave event handler +*/ void GLViewer_Widget::leaveEvent( QEvent* e ) { updateGL(); } -//======================================================================= -//! Function: hex -//! Purpose : Returns the hex code of digit < 16 -//======================================================================= +/*! + \return the hex code of digit < 16 + \param c - digit +*/ inline char hex( uchar c ) { if( c<=9 ) @@ -447,11 +434,23 @@ inline char hex( uchar c ) return ' '; } -//======================================================================= -//! Function: AddImagePart -//! Purpose : Translates path of image to PS format -/*! Image inside rectangle from w1 to w2 and from h2 to h1*/ -//======================================================================= +/*! + Translates part of image inside rectangle from w1 to w2 and from h2 to h1 to PS format + \param hFile - PostScript file + \param image - image to be tarnslated + \param w1 - x start position + \param w2 - x end position + \param h1 - y start position + \param h2 - y end position + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system + \param a + \param b + \param c + \param d + \param dw + \param dh +*/ void AddImagePart( QFile& hFile, QImage& image, int w1, int w2, int h1, int h2, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS, double a, double b, double c, double d, double dw, double dh ) @@ -493,20 +492,21 @@ void AddImagePart( QFile& hFile, QImage& image, int w1, int w2, int h1, int h2, } } -//======================================================================= -// Function: getBackgroundRectInViewerCS -// Purpose : -//======================================================================= +/*! + \return background rectangle in viewer CS +*/ void GLViewer_Widget::getBackgroundRectInViewerCS( double& left, double& top, double& right, double& bottom ) { left = -myIW/2; right = myIW/2; top = myIH/2; bottom = -myIH/2; } -//======================================================================= -// Function: translateBackgroundToPS -// Purpose : -//======================================================================= +/*! + Translates background to PostScript + \param hFile - PostScript file + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ void GLViewer_Widget::translateBackgroundToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QImage buf; @@ -553,10 +553,9 @@ void GLViewer_Widget::translateBackgroundToPS( QFile& hFile, GLViewer_CoordSyste } } -//======================================================================= -//! Function: DecodeScanLine -//! Purpose : Translate image line with one color depth to line wiht other depth -//======================================================================= +/*! + Translates image line with one color depth to line with other depth +*/ void DecodeScanLine( int width, uchar* dest, int dest_depth, uchar* source, int source_depth ) { #ifndef WIN32 @@ -620,11 +619,13 @@ typedef unsigned int WORD; } } -//======================================================================= -// Function: translateBackgroundToEMF -// Purpose : -//======================================================================= #ifdef WIN32 +/*! + Translates background to EMF + \param dc - descriptor of EMF + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ void GLViewer_Widget::translateBackgroundToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { QImage buf; diff --git a/src/GLViewer/GLViewer_Widget.h b/src/GLViewer/GLViewer_Widget.h index c580a9a84..3236c1867 100644 --- a/src/GLViewer/GLViewer_Widget.h +++ b/src/GLViewer/GLViewer_Widget.h @@ -22,9 +22,6 @@ // File: GLViewer_Widget.h // Created: November, 2004 -/*! Class GLViewer_Widget - * Class for visualization OpenGL scene (widget) for GLViewer - */ #ifndef GLVIEWER_WIDGET_H #define GLVIEWER_WIDGET_H @@ -36,6 +33,10 @@ class GLViewer_ViewPort2d; class GLViewer_CoordSystem; +/*! + \class GLViewer_Widget + Widget for visualization of OpenGL scene +*/ class GLVIEWER_API GLViewer_Widget : public QGLWidget { Q_OBJECT diff --git a/src/GLViewer/Makefile.in b/src/GLViewer/Makefile.in index d921dd294..dac27c28a 100644 --- a/src/GLViewer/Makefile.in +++ b/src/GLViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : caf @@ -98,6 +116,6 @@ CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL) -LIBS+= -L${GUI_ROOT_DIR}/lib/salome -lsuit -L/usr/X11R6/lib -lGLU +LIBS+= -lsuit -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lGLU @CONCLUDE@ diff --git a/src/GLViewer/resources/GLViewer_msg_en.po b/src/GLViewer/resources/GLViewer_msg_en.po index 32d5f88cb..f4d048280 100644 --- a/src/GLViewer/resources/GLViewer_msg_en.po +++ b/src/GLViewer/resources/GLViewer_msg_en.po @@ -74,9 +74,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "CHANGE_BGCOLOR" msgstr "Change background..." diff --git a/src/LightApp/LightApp_AboutDlg.h b/src/LightApp/LightApp_AboutDlg.h index c59cc938b..869151599 100644 --- a/src/LightApp/LightApp_AboutDlg.h +++ b/src/LightApp/LightApp_AboutDlg.h @@ -10,12 +10,12 @@ #include -/*! - Descr: LightApp help about dialog -*/ - class QLabel; +/*! + \class LightApp_AboutDlg + LightApp help about dialog +*/ class LIGHTAPP_EXPORT LightApp_AboutDlg : public QtxDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index 051b1c314..1c231df2a 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -81,11 +81,11 @@ #include #endif -#ifndef DISABLE_SUPERVGRAPHVIEWER - #include - #include - #include -#endif +//#ifndef DISABLE_SUPERVGRAPHVIEWER +// #include +// #include +// #include +//#endif #include @@ -103,6 +103,7 @@ #include #include #include +#include #define FIRST_HELP_ID 1000000 @@ -137,6 +138,9 @@ static const char* imageEmptyIcon[] = { int LightApp_Application::lastStudyId = 0; +/*! + \return last global id of study +*/ int LightApp_Application::studyId() { return LightApp_Application::lastStudyId; @@ -148,11 +152,12 @@ extern "C" LIGHTAPP_EXPORT SUIT_Application* createApplication() return new LightApp_Application(); } +/*! \var global preferences of LightApp */ LightApp_Preferences* LightApp_Application::_prefs_ = 0; -/* - Class : LightApp_Application - Description : Application containing LightApp module +/*! + \class LightApp_Application + Application containing LightApp module */ /*!Constructor.*/ @@ -210,6 +215,30 @@ myPrefs( 0 ) #endif connect( mySelMgr, SIGNAL( selectionChanged() ), this, SLOT( onSelection() ) ); + + // Set existing font for the python console in resources + if( !aResMgr->hasValue( "PyConsole", "font" ) ) + return; + + QFont f = aResMgr->fontValue( "PyConsole", "font" ); + QFontDatabase fdb; + QStringList famdb = fdb.families(); + + if ( famdb.contains(f.family()) || !aResMgr->hasValue( "PyConsole", "additional_families" ) ) + return; + + QStringList anAddFamilies = QStringList::split( ";", aResMgr->stringValue( "PyConsole", "additional_families" ) ); + QString aFamily; + for ( QStringList::Iterator it = anAddFamilies.begin(); it != anAddFamilies.end(); ++it ) + { + aFamily = *it; + if ( famdb.contains(aFamily) ) + { + f.setFamily( aFamily ); + aResMgr->setValue( "PyConsole", "font", f ); + break; + } + } } /*!Destructor. @@ -333,6 +362,10 @@ bool LightApp_Application::activateModule( const QString& modName ) return true; } +/*! + Opens other study into active Study. If Study is empty - creates it. + \param theName - name of study +*/ bool LightApp_Application::useStudy(const QString& theName) { createEmptyStudy(); @@ -479,7 +512,10 @@ void LightApp_Application::createActions() for ( it = modList.begin(); it != modList.end(); ++it ) { if ( !isLibExists( *it ) ) + { + qDebug( QString( "Library '%1' cannot be found" ).arg( *it ) ); continue; + } QString iconName; if ( iconMap.contains( *it ) ) @@ -630,10 +666,9 @@ void LightApp_Application::onNewWindow() createViewManager( type ); } -//======================================================================= -// name : onNewDoc -/*! Purpose : SLOT. Create new document*/ -//======================================================================= +/*! + SLOT: Creates new document +*/ void LightApp_Application::onNewDoc() { SUIT_Study* study = activeStudy(); @@ -649,10 +684,9 @@ void LightApp_Application::onNewDoc() } } -//======================================================================= -// name : onOpenDoc -/*! Purpose : SLOT. Open new document*/ -//======================================================================= +/*! + SLOT: Opens new document +*/ void LightApp_Application::onOpenDoc() { SUIT_Study* study = activeStudy(); @@ -668,7 +702,11 @@ void LightApp_Application::onOpenDoc() } #include "SUIT_MessageBox.h" -/*! Purpose : SLOT. Open new document with \a aName.*/ + +/*! + SLOT: Opens new document. + \param aName - name of file +*/ bool LightApp_Application::onOpenDoc( const QString& aName ) { bool isAlreadyOpen = false; @@ -735,10 +773,9 @@ bool LightApp_Application::onOpenDoc( const QString& aName ) return res; } -//======================================================================= -// name : onHelpAbout -/*! Purpose : SLOT. Display "About" message box*/ -//======================================================================= +/*! + SLOT: Displays "About" message box +*/ void LightApp_Application::onHelpAbout() { LightApp_AboutDlg* dlg = new LightApp_AboutDlg( applicationName(), applicationVersion(), desktop() ); @@ -746,7 +783,10 @@ void LightApp_Application::onHelpAbout() delete dlg; } -/*!SLOT. Load document with \a aName.*/ +/*! + SLOT: Loads document + \param aName - name of document +*/ bool LightApp_Application::onLoadDoc( const QString& aName ) { bool res = CAM_Application::onLoadDoc( aName ); @@ -763,7 +803,10 @@ bool LightApp_Application::onLoadDoc( const QString& aName ) return res; } -/*!Private SLOT. Selection.*/ +/*! + Private SLOT: Called on selection is changed + Dispatchs active module that selection is changed +*/ void LightApp_Application::onSelection() { onSelectionChanged(); @@ -772,9 +815,10 @@ void LightApp_Application::onSelection() ((LightApp_Module*)activeModule())->selectionChanged(); } -/*!Set active study. - *\param study - SUIT_Study. - */ +/*! + Sets active study. + \param study - SUIT_Study. +*/ void LightApp_Application::setActiveStudy( SUIT_Study* study ) { CAM_Application::setActiveStudy( study ); @@ -782,10 +826,9 @@ void LightApp_Application::setActiveStudy( SUIT_Study* study ) activateWindows(); } -//======================================================================= -// name : updateCommandsStatus -/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/ -//======================================================================= +/*! + Enables/Disables menu items and toolbar buttons. Rebuild menu +*/ void LightApp_Application::updateCommandsStatus() { CAM_Application::updateCommandsStatus(); @@ -816,18 +859,24 @@ void LightApp_Application::updateCommandsStatus() #endif } -// Helps to execute command +/*! + \class RunBrowser + Runs system command in separate thread +*/ class RunBrowser: public QThread { public: - RunBrowser(QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL): + RunBrowser( LightApp_Application* app, QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL): myApp(theApp), myParams(theParams), #ifdef WIN32 myHelpFile("file://" + theHelpFile + theContext), #else myHelpFile("file:" + theHelpFile + theContext), #endif - myStatus(0) {}; + myStatus(0), + myLApp( app ) +{ +}; virtual void run() { @@ -839,18 +888,12 @@ public: myStatus = system(aCommand); if(myStatus != 0) { - QCustomEvent* ce2000 = new QCustomEvent (2000); - postEvent (qApp, ce2000); + QCustomEvent* ce2000 = new QCustomEvent( 2000 ); + QString* msg = new QString( QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile) ); + ce2000->setData( msg ); + postEvent( myLApp, ce2000 ); } } - if( myStatus != 0) - { - qApp->lock(); - SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile), - QObject::tr("BUT_OK")); - qApp->unlock(); - } } private: @@ -858,13 +901,12 @@ private: QString myParams; QString myHelpFile; int myStatus; - + LightApp_Application* myLApp; }; -//======================================================================= -// name : onHelpContentsModule -/*! Purpose : SLOT. Display help contents for choosen module*/ -//======================================================================= +/*! + SLOT: Displays help contents for choosen module +*/ void LightApp_Application::onHelpContentsModule() { const QAction* obj = (QAction*) sender(); @@ -881,26 +923,55 @@ void LightApp_Application::onHelpContentsModule() QString aParams = resMgr->stringValue("ExternalBrowser", "parameters"); if (!anApp.isEmpty()) { - RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile); + RunBrowser* rs = new RunBrowser( this, anApp, aParams, helpFile ); + rs->start(); + } + else { + if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"), + tr("DEFINE_EXTERNAL_BROWSER"), + tr("BUT_OK"),tr("BUT_CANCEL"),0,1,0 )==0 ) + onPreferences(); + } +} + +/*! + SLOT: Displays help contents for choosen dialog +*/ +void LightApp_Application::onHelpContextModule(const QString& theComponentName, const QString& theFileName) +{ + QCString dir = getenv( theComponentName + "_ROOT_DIR"); + QString homeDir = Qtx::addSlash(Qtx::addSlash(dir)+Qtx::addSlash("doc")+Qtx::addSlash("salome")+Qtx::addSlash("gui")+Qtx::addSlash(theComponentName)); + + QString helpFile = QFileInfo( homeDir + theFileName ).absFilePath(); + SUIT_ResourceMgr* resMgr = resourceMgr(); + QString anApp = resMgr->stringValue("ExternalBrowser", "application"); + QString aParams = resMgr->stringValue("ExternalBrowser", "parameters"); + + if (!anApp.isEmpty()) { + RunBrowser* rs = new RunBrowser( this, anApp, aParams, helpFile ); rs->start(); } else { - SUIT_MessageBox::warn1(desktop(), tr("WRN_WARNING"), + if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"), tr("DEFINE_EXTERNAL_BROWSER"), - tr("BUT_OK")); + tr("BUT_OK"), tr("BUT_CANCEL"),0,1,0)==0 ) + onPreferences(); } } -/*!Sets enable or disable some actions on selection changed.*/ +/*! + Sets enable or disable some actions on selection changed. +*/ void LightApp_Application::onSelectionChanged() { } -/*!Return window. - *\param flag - key for window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + \return window by key + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ QWidget* LightApp_Application::window( const int flag, const int studyId ) const { QWidget* wid = 0; @@ -920,12 +991,13 @@ QWidget* LightApp_Application::window( const int flag, const int studyId ) const return wid; } -/*!Adds window to application. - *\param wid - QWidget - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Adds window to application. + \param wid - QWidget + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int studyId ) { if ( !wid ) @@ -947,6 +1019,8 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st LightApp_WidgetContainer* newWC = new LightApp_WidgetContainer( flag, desktop() ); connect( newWC, SIGNAL( destroyed ( QObject* ) ), this, SLOT( onWCDestroyed( QObject* ) ) ); + // asv: connecting a slot for storing visibility flag of a window + connect( newWC, SIGNAL( visibilityChanged ( bool ) ), SLOT( onVisibilityChanged( bool ) ) ); myWindows.insert( flag, newWC ); if ( winMap.contains( flag ) ) desktop()->moveDockWindow( myWindows[flag], (Dock)winMap[flag] ); @@ -965,10 +1039,10 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st if( resourceMgr()->hasValue( "PyConsole", "font" ) ) f = resourceMgr()->fontValue( "PyConsole", "font" ); else - { - f = ( ( PythonConsole* )wid )->font(); - resourceMgr()->setValue( "PyConsole", "font", f ); - } + { + f = ( ( PythonConsole* )wid )->font(); + resourceMgr()->setValue( "PyConsole", "font", f ); + } } else #endif @@ -980,11 +1054,12 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st setWindowShown( flag, !myWindows[flag]->isEmpty() ); } -/*!Remove window from application. - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Removes window from application. + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ void LightApp_Application::removeWindow( const int flag, const int studyId ) { if ( !myWindows.contains( flag ) ) @@ -1006,11 +1081,12 @@ void LightApp_Application::removeWindow( const int flag, const int studyId ) setWindowShown( flag, !myWindows[flag]->isEmpty() ); } -/*!Gets window. - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Gets window. + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ QWidget* LightApp_Application::getWindow( const int flag, const int studyId ) { QWidget* wid = window( flag, studyId ); @@ -1020,7 +1096,10 @@ QWidget* LightApp_Application::getWindow( const int flag, const int studyId ) return wid; } -/*!Check is window visible?(with identificator \a type)*/ +/*! + \return is window visible + \param type - flag of window +*/ bool LightApp_Application::isWindowVisible( const int type ) const { bool res = false; @@ -1032,10 +1111,11 @@ bool LightApp_Application::isWindowVisible( const int type ) const return res; } -/*!Sets window show or hide. - *\param type - window identificator. - *\param on - true/false (window show/hide) - */ +/*! + Sets window show or hide. + \param type - window identificator. + \param on - true/false (window show/hide) +*/ void LightApp_Application::setWindowShown( const int type, const bool on ) { if ( !desktop() || !myWindows.contains( type ) ) @@ -1043,10 +1123,18 @@ void LightApp_Application::setWindowShown( const int type, const bool on ) QDockWindow* dw = myWindows[type]; desktop()->setAppropriate( dw, on ); - on ? dw->show() : dw->hide(); + if( on ) + dw->show(); + else if( dw->isShown() ) + { + dw->hide(); + myWindowsVisible[ type ] = true; + } } -/*!Gets "ObjectBrowser".*/ +/*! + \return Object Browser +*/ OB_Browser* LightApp_Application::objectBrowser() { OB_Browser* ob = 0; @@ -1056,7 +1144,9 @@ OB_Browser* LightApp_Application::objectBrowser() return ob; } -/*!Gets "LogWindow".*/ +/*! + \return Log Window +*/ LogWindow* LightApp_Application::logWindow() { LogWindow* lw = 0; @@ -1067,7 +1157,9 @@ LogWindow* LightApp_Application::logWindow() } #ifndef DISABLE_PYCONSOLE -/*!Get "PythonConsole"*/ +/*! + \return Python Console +*/ PythonConsole* LightApp_Application::pythonConsole() { PythonConsole* console = 0; @@ -1078,12 +1170,19 @@ PythonConsole* LightApp_Application::pythonConsole() } #endif -/*!Update obect browser*/ +/*! + Updates object browser and maybe data models + \param updateModels - if it is true, then data models are updated +*/ void LightApp_Application::updateObjectBrowser( const bool updateModels ) { // update existing data models if ( updateModels ) { + const bool isAutoUpdate = objectBrowser() ? objectBrowser()->isAutoUpdate() : true; + if( objectBrowser() ) + objectBrowser()->setAutoUpdate( false ); + LightApp_Study* study = dynamic_cast(activeStudy()); if ( study ) { CAM_Study::ModelList dm_list; @@ -1094,6 +1193,9 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) ((LightApp_DataModel*)camDM)->update(); } } + + if( objectBrowser() ) + objectBrowser()->setAutoUpdate( isAutoUpdate ); } if ( objectBrowser() ) { @@ -1102,13 +1204,19 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) } } -/*!Gets preferences.*/ +/*! + \return preferences +*/ LightApp_Preferences* LightApp_Application::preferences() const { return preferences( false ); } -/*!Gets view manager*/ +/*! + \return first view manager of some type + \param vmType - type of view manager + \param create - is it necessary to create view manager in case, when there is no manager of such type +*/ SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, const bool create ) { SUIT_ViewManager* aVM = viewManager( vmType ); @@ -1130,7 +1238,10 @@ SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, c return aVM; } -/*!Create view manager.*/ +/*! + Creates view manager of some type + \param vmType - type of view manager +*/ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType ) { SUIT_ResourceMgr* resMgr = resourceMgr(); @@ -1162,16 +1273,12 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType } } #endif -#ifndef DISABLE_SUPERVGRAPHVIEWER - if( vmType == SUPERVGraph_Viewer::Type() ) - { - viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop() ); - SUPERVGraph_Viewer* vm = new SUPERVGraph_Viewer(); - SUPERVGraph_ViewFrame* view = dynamic_cast( vm->getViewManager()->getActiveView() ); - if( view ) - view->setBackgroundColor( resMgr->colorValue( "SUPERVGraph", "Background", view->backgroundColor() ) ); - } -#endif + //#ifndef DISABLE_SUPERVGRAPHVIEWER + // if( vmType == SUPERVGraph_Viewer::Type() ) + // { + // viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop(), new SUPERVGraph_Viewer() ); + // } + //#endif #ifndef DISABLE_OCCVIEWER if( vmType == OCCViewer_Viewer::Type() ) { @@ -1228,22 +1335,21 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType if ( viewWin && desktop() ) viewWin->resize( (int)( desktop()->width() * 0.6 ), (int)( desktop()->height() * 0.6 ) ); - connect( viewMgr, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), - this, SLOT( onCloseView( SUIT_ViewManager* ) ) ); - return viewMgr; } -//======================================================================= -// name : onCloseView -/*! Purpose : SLOT. Remove view manager from application*/ -//======================================================================= +/*! + SLOT: Removes view manager from application +*/ void LightApp_Application::onCloseView( SUIT_ViewManager* theVM ) { removeViewManager( theVM ); } -/*!Protected SLOT. On study created.*/ +/*! + Protected SLOT: On study created. + \param theStudy - just created study +*/ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) { SUIT_DataObject* aRoot = 0; @@ -1261,7 +1367,10 @@ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) activateWindows(); } -/*!Protected SLOT. On study opened.*/ +/*! + Protected SLOT: On study opened. + \param theStudy - just opened study +*/ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy ) { SUIT_DataObject* aRoot = 0; @@ -1320,7 +1429,9 @@ QString LightApp_Application::getFileFilter() const return "(*.hdf)"; } -/*! Gets file name*/ +/*! + Shows file dialog and return user selected file name +*/ QString LightApp_Application::getFileName( bool open, const QString& initial, const QString& filters, const QString& caption, QWidget* parent ) { @@ -1410,10 +1521,9 @@ void LightApp_Application::updateActions() updateCommandsStatus(); } -//======================================================================= -// name : createNewStudy -/*! Purpose : Create new study*/ -//======================================================================= +/*! + Creates new study +*/ SUIT_Study* LightApp_Application::createNewStudy() { LightApp_Application::lastStudyId++; @@ -1429,7 +1539,10 @@ SUIT_Study* LightApp_Application::createNewStudy() return aStudy; } -/*!Create window.*/ +/*! + Creates window by flag. + \param flag - identificator of window type +*/ QWidget* LightApp_Application::createWindow( const int flag ) { QWidget* wid = 0; @@ -1473,8 +1586,9 @@ QWidget* LightApp_Application::createWindow( const int flag ) return wid; } -/*!Default windows(Object Browser, Python Console). - * Adds to map \a aMap. +/*! + \return default windows( Object Browser, Python Console ) + Adds to map \a aMap. */ void LightApp_Application::defaultWindows( QMap& aMap ) const { @@ -1485,15 +1599,16 @@ void LightApp_Application::defaultWindows( QMap& aMap ) const // aMap.insert( WT_LogWindow, Qt::DockBottom ); } -/*!Default view manager.*/ +/*!Default view managers*/ void LightApp_Application::defaultViewManagers( QStringList& ) const { /*!Do nothing.*/ } -/*!Gets preferences. - * Create preferences, if \a crt = true. - */ +/*! + \return preferences. + Create preferences, if \a crt = true. +*/ LightApp_Preferences* LightApp_Application::preferences( const bool crt ) const { if ( myPrefs ) @@ -1550,7 +1665,9 @@ LightApp_Preferences* LightApp_Application::preferences( const bool crt ) const return myPrefs; } -/*!Add new module to application.*/ +/*! + Adds new module to application +*/ void LightApp_Application::moduleAdded( CAM_Module* mod ) { CAM_Application::moduleAdded( mod ); @@ -1567,7 +1684,9 @@ void LightApp_Application::moduleAdded( CAM_Module* mod ) } } -/*!Create preferences.*/ +/*! + Create preferences +*/ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) { if ( !pref ) @@ -1581,9 +1700,6 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) pref->addPreference( tr( "PREF_MULTI_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "multi_file" ); pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "ascii_file" ); - int undoPref = pref->addPreference( tr( "PREF_UNDO_LEVEL" ), studyGroup, LightApp_Preferences::IntSpin, "Study", "undo_level" ); - pref->setItemProperty( undoPref, "min", 1 ); - pref->setItemProperty( undoPref, "max", 100 ); pref->addPreference( tr( "PREF_STORE_POS" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" ); int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab ); @@ -1619,7 +1735,7 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) LightApp_Preferences::Color, "OCCViewer", "background" ); pref->setItemProperty( occTS, "min", 1 ); - pref->setItemProperty( occTS, "max", 150 ); + pref->setItemProperty( occTS, "max", 1000 ); int isoU = pref->addPreference( tr( "PREF_ISOS_U" ), occGroup, LightApp_Preferences::IntSpin, "OCCViewer", "iso_number_u" ); @@ -1726,7 +1842,11 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) "ObjectBrowser", "auto_size" ); } -/*!Changed preferences */ +/*! + Changes appearance of application according to changed preferences + \param sec - section + \param param - name of changed parameter +*/ void LightApp_Application::preferencesChanged( const QString& sec, const QString& param ) { SUIT_ResourceMgr* resMgr = resourceMgr(); @@ -1805,6 +1925,10 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true ); ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual ); ob->listView()->setColumnWidthMode( 0, autoSizeFirst ? QListView::Maximum : QListView::Manual ); + if( autoSize ) + for( int i=1; ilistView()->columns(); i++ ) + if( ob->listView()->columnWidth( i )>0 ) + ob->listView()->adjustColumn( i ); updateObjectBrowser( false ); } } @@ -1825,7 +1949,9 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString #endif } -/*!Save preferences */ +/*! + Saves preferences +*/ void LightApp_Application::savePreferences() { saveWindowsGeometry(); @@ -1838,7 +1964,9 @@ void LightApp_Application::savePreferences() } } -/*!Update desktop title.*/ +/*! + Updates desktop title +*/ void LightApp_Application::updateDesktopTitle() { QString aTitle = applicationName(); QString aVer = applicationVersion(); @@ -1853,7 +1981,9 @@ void LightApp_Application::updateDesktopTitle() { desktop()->setCaption( aTitle ); } -/*!Update windows after close document.*/ +/*! + Updates windows after close document +*/ void LightApp_Application::afterCloseDoc() { updateWindows(); @@ -1861,7 +1991,9 @@ void LightApp_Application::afterCloseDoc() CAM_Application::afterCloseDoc(); } -/*!Update module action.*/ +/*! + Updates actions of active module +*/ void LightApp_Application::updateModuleActions() { QString modName; @@ -1872,9 +2004,10 @@ void LightApp_Application::updateModuleActions() myActions[modName]->setOn( true ); } -/*!Gets current windows. - *\param winMap - output current windows map. - */ +/*! + Gets current windows. + \param winMap - output current windows map. +*/ void LightApp_Application::currentWindows( QMap& winMap ) const { winMap.clear(); @@ -1887,9 +2020,10 @@ void LightApp_Application::currentWindows( QMap& winMap ) const defaultWindows( winMap ); } -/*!Gets current view managers. - *\param lst - output current view managers list. - */ +/*! + Gets current view managers. + \param lst - output current view managers list. +*/ void LightApp_Application::currentViewManagers( QStringList& lst ) const { lst.clear(); @@ -1902,7 +2036,9 @@ void LightApp_Application::currentViewManagers( QStringList& lst ) const defaultViewManagers( lst ); } -/*!Update windows.*/ +/*! + Updates windows +*/ void LightApp_Application::updateWindows() { QMap winMap; @@ -1917,11 +2053,19 @@ void LightApp_Application::updateWindows() // setWindowShown should be done even if no study is active (open). in this case all open windows // will be hidden, which is neccessary in this case. - for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) + for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) { + + if ( myWindowsVisible.contains( itr.key() ) && + !myWindowsVisible[ itr.key() ] ) + continue; + setWindowShown( itr.key(), !itr.data()->isEmpty() && winMap.contains( itr.key() ) ); + } } -/*!Update view managers.*/ +/*! + Updates view managers +*/ void LightApp_Application::updateViewManagers() { QStringList lst; @@ -1931,7 +2075,9 @@ void LightApp_Application::updateViewManagers() getViewManager( *it, true ); } -/*!Load windows geometry.*/ +/*! + Loads windows geometry +*/ void LightApp_Application::loadWindowsGeometry() { bool store = resourceMgr()->booleanValue( "Study", "store_positions", true ); @@ -1959,7 +2105,9 @@ void LightApp_Application::loadWindowsGeometry() dockMgr->restoreGeometry(); } -/*!Save windows geometry.*/ +/*! + Saves windows geometry +*/ void LightApp_Application::saveWindowsGeometry() { bool store = resourceMgr()->booleanValue( "Study", "store_positions", true ); @@ -1987,7 +2135,9 @@ void LightApp_Application::saveWindowsGeometry() dockMgr->saveGeometry( resourceMgr(), section, false ); } -/*!Activate windows.*/ +/*! + Activates windows +*/ void LightApp_Application::activateWindows() { if ( activeStudy() ) @@ -1997,7 +2147,9 @@ void LightApp_Application::activateWindows() } } -/*!Adds icon names for modules.*/ +/*! + Adds icon names for modules +*/ void LightApp_Application::moduleIconNames( QMap& iconMap ) const { iconMap.clear(); @@ -2025,7 +2177,9 @@ void LightApp_Application::moduleIconNames( QMap& iconMap ) co } } -/*!Insert items in popup, which necessary for current application*/ +/*! + Inserts items in popup, which necessary for current application +*/ void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopup, QString& title ) { CAM_Application::contextMenuPopup( type, thePopup, title ); @@ -2038,7 +2192,9 @@ void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* th thePopup->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) ); } -/*!Create empty study.*/ +/*! + Create empty study +*/ void LightApp_Application::createEmptyStudy() { CAM_Application::createEmptyStudy(); @@ -2046,7 +2202,10 @@ void LightApp_Application::createEmptyStudy() objectBrowser()->updateTree(); } -/*!Activate module \a mod.*/ +/*! + Activates module + \param mod - module to be activated +*/ bool LightApp_Application::activateModule( CAM_Module* mod ) { bool res = CAM_Application::activateModule( mod ); @@ -2055,13 +2214,17 @@ bool LightApp_Application::activateModule( CAM_Module* mod ) return res; } -/*!return keyborad accelerators manager object */ +/*! + \return keyborad accelerators manager object +*/ SUIT_Accel* LightApp_Application::accel() const { return myAccel; } -/*! remove dead widget container from map */ +/*! + Removes dead widget container from map +*/ void LightApp_Application::onWCDestroyed( QObject* ob ) { // remove destroyed widget container from windows map @@ -2076,7 +2239,19 @@ void LightApp_Application::onWCDestroyed( QObject* ob ) } } -/*! redefined to remove view manager from memory */ +/*! + Connects just added view manager +*/ +void LightApp_Application::addViewManager( SUIT_ViewManager* vm ) +{ + connect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), + this, SLOT( onCloseView( SUIT_ViewManager* ) ) ); + STD_Application::addViewManager( vm ); +} + +/*! + Remove view manager from memory +*/ void LightApp_Application::removeViewManager( SUIT_ViewManager* vm ) { disconnect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), @@ -2085,7 +2260,9 @@ void LightApp_Application::removeViewManager( SUIT_ViewManager* vm ) delete vm; } -/*! rename active window of desktop */ +/*! + Renames active window of desktop +*/ void LightApp_Application::onRenameWindow() { if( !desktop() ) @@ -2101,6 +2278,10 @@ void LightApp_Application::onRenameWindow() w->setCaption( name ); } +/*! + \return if the library of module exists + \param moduleTitle - title of module +*/ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const { if( moduleTitle.isEmpty() ) @@ -2124,7 +2305,9 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const return false; } -/*! default name for an active study */ +/*! + \return default name for an active study +*/ void LightApp_Application::setDefaultStudyName( const QString& theName ) { QStringList anInfoList; @@ -2138,3 +2321,36 @@ void LightApp_Application::setDefaultStudyName( const QString& theName ) updateDesktopTitle(); } } + +/*! slot, called on show/hide of a dock window */ +void LightApp_Application::onVisibilityChanged( bool visible ) +{ + const QObject* win = sender(); + + for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) + if ( itr.data() == win ) + { + myWindowsVisible[ itr.key() ] = visible; + return; + } +} + +/*! + Custom event handler +*/ +bool LightApp_Application::event( QEvent* e ) +{ + if( e && e->type()==2000 ) + { + QCustomEvent* ce = ( QCustomEvent* )e; + QString* d = ( QString* )ce->data(); + if( SUIT_MessageBox::warn2(0, tr("WRN_WARNING"), + d ? *d : "", + tr("BUT_OK"), tr("BUT_CANCEL"), 0, 1, 0 )==0 ) + onPreferences(); + if( d ) + delete d; + return true; + } + return CAM_Application::event( e ); +} diff --git a/src/LightApp/LightApp_Application.h b/src/LightApp/LightApp_Application.h index c435188a4..74725dc2a 100644 --- a/src/LightApp/LightApp_Application.h +++ b/src/LightApp/LightApp_Application.h @@ -108,6 +108,7 @@ public: void updateActions(); SUIT_ViewManager* getViewManager( const QString&, const bool ); + virtual void addViewManager( SUIT_ViewManager* ); virtual void removeViewManager( SUIT_ViewManager* ); QWidget* getWindow( const int, const int = -1 ); QWidget* window( const int, const int = -1 ) const; @@ -129,6 +130,8 @@ public: static int studyId(); + virtual bool event( QEvent* ); + signals: void studyOpened(); void studySaved(); @@ -136,6 +139,7 @@ signals: public slots: virtual void onHelpContentsModule(); + virtual void onHelpContextModule( const QString&, const QString& ); virtual void onNewDoc(); virtual void onOpenDoc(); virtual void onHelpAbout(); @@ -189,6 +193,7 @@ private slots: void onMRUActivated( QString ); void onPreferenceChanged( QString&, QString&, QString& ); void onRenameWindow(); + void onVisibilityChanged( bool ); protected: void updateWindows(); @@ -212,12 +217,14 @@ protected: protected: typedef QMap ActionMap; typedef QMap WindowMap; + typedef QMap WindowVisibilityMap; protected: LightApp_Preferences* myPrefs; LightApp_SelectionMgr* mySelMgr; ActionMap myActions; WindowMap myWindows; + WindowVisibilityMap myWindowsVisible; SUIT_Accel* myAccel; diff --git a/src/LightApp/LightApp_DataModel.cxx b/src/LightApp/LightApp_DataModel.cxx index 6ccba618b..6de670118 100644 --- a/src/LightApp/LightApp_DataModel.cxx +++ b/src/LightApp/LightApp_DataModel.cxx @@ -6,95 +6,115 @@ #include "LightApp_DataModel.h" #include "LightApp_Study.h" #include "LightApp_RootObject.h" +#include "LightApp_DataObject.h" #include "LightApp_Module.h" #include "LightApp_Application.h" -#include +#include #include #include #include #include -//======================================================================= -// name : LightApp_DataModel::LightApp_DataModel -/*!Purpose : Constructor*/ -//======================================================================= +/*! + Constructor +*/ LightApp_DataModel::LightApp_DataModel( CAM_Module* theModule ) : CAM_DataModel( theModule ) { } -//======================================================================= -// name : LightApp_DataModel::~LightApp_DataModel -/*! Purpose : Destructor*/ -//======================================================================= +/*! + Destructor +*/ LightApp_DataModel::~LightApp_DataModel() { } -//================================================================ -// Function : open -/*! Purpose : Emit opened()*/ -//================================================================ +/*! + Emit opened() +*/ bool LightApp_DataModel::open( const QString&, CAM_Study* study, QStringList ) { emit opened(); //TODO: is it really needed? to be removed maybe... return true; } -//================================================================ -// Function : save -/*! Purpose : Emit saved()*/ -//================================================================ +/*! + Emit saved() +*/ bool LightApp_DataModel::save( QStringList& ) { emit saved(); return true; } -//================================================================ -// Function : saveAs -/*! Purpose : Emit saved()*/ -//================================================================ +/*! + Emit saved() +*/ bool LightApp_DataModel::saveAs( const QString&, CAM_Study*, QStringList& ) { emit saved(); return true; } -//================================================================ -// Function : close -/*! Purpose : Emit closed()*/ -//================================================================ +/*! + Emit closed() +*/ bool LightApp_DataModel::close() { emit closed(); return true; } -//================================================================ -// Function : update -/*! Purpose : Update application (empty virtual function).*/ -//================================================================ -void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study ) +/*! + Build whole data model tree +*/ +void LightApp_DataModel::build() { } -//================================================================ -// Function : getModule -/*! Purpose : gets module*/ -//================================================================ +/*! + Updates data model presentation in some widgets (for example, in object browser +*/ +void LightApp_DataModel::updateWidgets() +{ + LightApp_Application* app = dynamic_cast( module()->application() ); + if( app ) + app->objectBrowser()->updateTree( 0, false ); +} + +/*! + Default behaviour of data model update for light modules +*/ +void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* ) +{ + LightApp_ModuleObject* modelRoot = dynamic_cast( root() ); + DataObjectList ch; + if( modelRoot ) + { + ch = modelRoot->children(); + for ( DataObjectListIterator it( ch ); it.current(); ++it ) + it.current()->setParent( 0 ); + } + build(); + updateWidgets(); + for( DataObjectListIterator it( ch ); it.current(); ++it ) + delete it.current(); +} +/*! + \return corresponding module +*/ LightApp_Module* LightApp_DataModel::getModule() const { return dynamic_cast( module() ); } -//================================================================ -// Function : getStudy -/*! Purpose : gets study */ -//================================================================ +/*! + \return corresponding study +*/ LightApp_Study* LightApp_DataModel::getStudy() const { LightApp_RootObject* aRoot = dynamic_cast( root()->root() ); @@ -103,19 +123,17 @@ LightApp_Study* LightApp_DataModel::getStudy() const return aRoot->study(); } -//================================================================ -// Function : isModified -/*! Purpose : default implementation, always returns false so as not to mask study's isModified()*/ -//================================================================ +/*! + default implementation, always returns false so as not to mask study's isModified() +*/ bool LightApp_DataModel::isModified() const { return false; } -//================================================================ -// Function : isSaved -/*! Purpose : default implementation, always returns true so as not to mask study's isSaved()*/ -//================================================================ +/*! + default implementation, always returns true so as not to mask study's isSaved() +*/ bool LightApp_DataModel::isSaved() const { return true; diff --git a/src/LightApp/LightApp_DataModel.h b/src/LightApp/LightApp_DataModel.h index 7b1f92d6c..c0504a473 100644 --- a/src/LightApp/LightApp_DataModel.h +++ b/src/LightApp/LightApp_DataModel.h @@ -47,7 +47,8 @@ signals: protected: LightApp_Study* getStudy() const; - + virtual void build(); + virtual void updateWidgets(); }; #endif diff --git a/src/LightApp/LightApp_DataObject.cxx b/src/LightApp/LightApp_DataObject.cxx index 831385908..f0e9de6a5 100644 --- a/src/LightApp/LightApp_DataObject.cxx +++ b/src/LightApp/LightApp_DataObject.cxx @@ -73,10 +73,6 @@ bool LightApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const return myEntry == that->myEntry; } -/* - Class: LightApp_DataObject - Level: Public -*/ /*!Constructor. Initialize by \a parent*/ LightApp_DataObject::LightApp_DataObject( SUIT_DataObject* parent ) : CAM_DataObject( parent ), myCompObject( 0 ), myCompDataType( "" ) @@ -142,10 +138,7 @@ QString LightApp_DataObject::componentDataType() const return myCompDataType; } -/* - Class: LightApp_ModuleObject - Level: Public -*/ + /*!Constructor.Initialize by \a parent.*/ LightApp_ModuleObject::LightApp_ModuleObject( SUIT_DataObject* parent ) diff --git a/src/LightApp/LightApp_Dialog.cxx b/src/LightApp/LightApp_Dialog.cxx index b77f62f01..51d751096 100644 --- a/src/LightApp/LightApp_Dialog.cxx +++ b/src/LightApp/LightApp_Dialog.cxx @@ -26,15 +26,9 @@ #include #include -/* - Class : LightApp_Dialog - Description : Base class for all dialogs +/*! + Constructor */ - -//======================================================================= -// name : LightApp_Dialog -// Purpose : Constructor -//======================================================================= LightApp_Dialog::LightApp_Dialog( QWidget* parent, const char* name, bool modal, bool allowResize, const int f, WFlags wf ) : QtxDialog( parent, name, modal, allowResize, f, wf ), @@ -44,36 +38,33 @@ LightApp_Dialog::LightApp_Dialog( QWidget* parent, const char* name, bool modal, setObjectPixmap( "LightApp", tr( "ICON_SELECT" ) ); } -//======================================================================= -// name : ~LightApp_Dialog -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ LightApp_Dialog::~LightApp_Dialog() { } -//======================================================================= -// name : show -// Purpose : -//======================================================================= +/*! + Show dialog +*/ void LightApp_Dialog::show() { QtxDialog::show(); } -//======================================================================= -// name : isExclusive -// Purpose : -//======================================================================= +/*! + \return isExclusive status of selection buttons +*/ bool LightApp_Dialog::isExclusive() const { return myIsExclusive; } -//======================================================================= -// name : updateButtons -// Purpose : -//======================================================================= +/*! + Updates "on" state of buttons according to special button + \param _id - id of special button (if it is -1, then first selected button will be treated as special) +*/ void LightApp_Dialog::updateButtons( const int _id ) { if( !myIsExclusive ) @@ -97,38 +88,39 @@ void LightApp_Dialog::updateButtons( const int _id ) } } -//======================================================================= -// name : setExclusive -// Purpose : -//======================================================================= +/*! + Sets isExclusive status of selection buttons + \param ex - new value of isExclusive status +*/ void LightApp_Dialog::setExclusive( const bool ex ) { myIsExclusive = ex; updateButtons(); } -//======================================================================= -// name : showObject -// Purpose : -//======================================================================= +/*! + Shows object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::showObject( const int id ) { setObjectShown( id, true ); } -//======================================================================= -// name : hideObject -// Purpose : -//======================================================================= +/*! + Hides object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::hideObject( const int id ) { setObjectShown( id, false ); } -//======================================================================= -// name : setObjectShown -// Purpose : -//======================================================================= +/*! + Shows/hides object selection widget + \param id - identificator of object selection widget + \param shown - if it is true, widget will be shown +*/ void LightApp_Dialog::setObjectShown( const int id, const bool shown ) { if( myObjects.contains( id ) && isObjectShown( id )!=shown ) @@ -142,19 +134,20 @@ void LightApp_Dialog::setObjectShown( const int id, const bool shown ) } } -//======================================================================= -// name : isObjectShown -// Purpose : -//======================================================================= +/*! + \return isShown state of object selection widget + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isObjectShown( const int id ) const { return myObjects.contains( id ) && myObjects[ id ].myEdit->isShown(); } -//======================================================================= -// name : setObjectEnabled -// Purpose : -//======================================================================= +/*! + Change enable state of object selection widget + \param id - identificator of object selection widget + \param en - new value of enable state +*/ void LightApp_Dialog::setObjectEnabled( const int id, const bool en ) { if( myObjects.contains( id ) && isObjectEnabled( id )!=en ) @@ -168,19 +161,22 @@ void LightApp_Dialog::setObjectEnabled( const int id, const bool en ) } } -//======================================================================= -// name : isObjectEnabled -// Purpose : -//======================================================================= +/*! + \return enable state of object selection widget + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isObjectEnabled( const int id ) const { return myObjects.contains( id ) && myObjects[ id ].myEdit->isEnabled(); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to all active widgets name, type and id of selected object + \param name - name of selected object + \param type - type of selected object + \param id - id of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const QString& name, const int type, const QString& id, const bool update ) { QStringList names; names.append( name ); @@ -189,10 +185,13 @@ void LightApp_Dialog::selectObject( const QString& name, const int type, const Q selectObject( names, types, ids, update ); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to all active widgets names, types and ids of selected objects + \param _names - names of selected objects + \param _types - types of selected objects + \param _ids - ids of selected objects + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const QStringList& _names, const TypesList& _types, const QStringList& _ids, @@ -205,19 +204,19 @@ void LightApp_Dialog::selectObject( const QStringList& _names, selectObject( anIt.key(), _names, _types, _ids, update ); } -//======================================================================= -// name : hasSelection -// Purpose : -//======================================================================= +/*! + \return true if widget has selection + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::hasSelection( const int id ) const { return myObjects.contains( id ) && !myObjects[ id ].myIds.isEmpty(); } -//======================================================================= -// name : clearSelection -// Purpose : -//======================================================================= +/*! + Clears selection of widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::clearSelection( const int id ) { if( id==-1 ) @@ -239,10 +238,11 @@ void LightApp_Dialog::clearSelection( const int id ) } } -//======================================================================= -// name : objectWg -// Purpose : -//======================================================================= +/*! + \return object selection widget + \param theId - identificator of object selection widget + \param theWgId may be "Label", "Btn" or "Control" +*/ QWidget* LightApp_Dialog::objectWg( const int theId, const int theWgId ) const { QWidget* aResWg = 0; @@ -258,39 +258,41 @@ QWidget* LightApp_Dialog::objectWg( const int theId, const int theWgId ) const return aResWg; } -//======================================================================= -// name : objectText -// Purpose : -//======================================================================= +/*! + \return object selection widget text + \param theId - identificator of object selection widget +*/ QString LightApp_Dialog::objectText( const int theId ) const { return myObjects.contains( theId ) ? myObjects[ theId ].myEdit->text() : ""; } -//======================================================================= -// name : setObjectText -// Purpose : -//======================================================================= +/*! + Sets object selection widget text + \param theId - identificator of object selection widget + \param theText - new text +*/ void LightApp_Dialog::setObjectText( const int theId, const QString& theText ) { if ( myObjects.contains( theId ) ) myObjects[ theId ].myEdit->setText( theText ); } -//======================================================================= -// name : selectedObject -// Purpose : -//======================================================================= +/*! + \return objects selected by widget + \param id - identificator of object selection widget + \param list - list to be filled by selected objects +*/ void LightApp_Dialog::selectedObject( const int id, QStringList& list ) const { if( myObjects.contains( id ) ) list = myObjects[ id ].myIds; } -//======================================================================= -// name : selectedObject -// Purpose : -//======================================================================= +/*! + \return selected object id + \param id - identificator of object selection widget +*/ QString LightApp_Dialog::selectedObject( const int id ) const { if ( myObjects.contains( id ) && myObjects[ id ].myIds.count() > 0 ) @@ -299,10 +301,10 @@ QString LightApp_Dialog::selectedObject( const int id ) const return ""; } -//======================================================================= -// name : objectSelection -// Purpose : -//======================================================================= +/*! + \return all selected objects + \param objs - map: widget id -> string id to be filled with selected objects +*/ void LightApp_Dialog::objectSelection( SelectedObjects& objs ) const { //objs.clear(); @@ -317,10 +319,13 @@ void LightApp_Dialog::objectSelection( SelectedObjects& objs ) const } } -//======================================================================= -// name : createObject -// Purpose : -//======================================================================= +/*! + Creates object selection widget + \return id + \label - label text + \parent - parent object + \id - proposed id for widget (if it is less than 0, the free id will be used) +*/ int LightApp_Dialog::createObject( const QString& label, QWidget* parent, const int id ) { int nid = id; @@ -351,20 +356,22 @@ int LightApp_Dialog::createObject( const QString& label, QWidget* parent, const return nid; } -//======================================================================= -// name : renameObject -// Purpose : -//======================================================================= +/*! + Changes label of object selection widget + \param id - identificator of object selection widget + \param label - new text of label +*/ void LightApp_Dialog::renameObject( const int id, const QString& label ) { if( myObjects.contains( id ) ) myObjects[ id ].myLabel->setText( label ); } -//======================================================================= -// name : setObjectType -// Purpose : -//======================================================================= +/*! + Sets possible types for widget + \param id - identificator of object selection widget + \param type1,... - type +*/ void LightApp_Dialog::setObjectType( const int id, const int type1, ... ) { TypesList types; @@ -379,10 +386,11 @@ void LightApp_Dialog::setObjectType( const int id, const int type1, ... ) setObjectType( id, types ); } -//======================================================================= -// name : setObjectType -// Purpose : -//======================================================================= +/*! + Sets possible types for widget + \param id - identificator of object selection widget + \param list - list of possible types +*/ void LightApp_Dialog::setObjectType( const int id, const TypesList& list ) { if( !myObjects.contains( id ) ) @@ -406,10 +414,11 @@ void LightApp_Dialog::setObjectType( const int id, const TypesList& list ) updateObject( id ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible types to object selection widget + \param id - identificator of object selection widget + \param type1, ... - new types +*/ void LightApp_Dialog::addObjectType( const int id, const int type1, const int, ... ) { TypesList types; objectTypes( id, types ); @@ -424,20 +433,22 @@ void LightApp_Dialog::addObjectType( const int id, const int type1, const int, . setObjectType( id, types ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible types to object selection widget + \param id - identificator of object selection widget + \param list - new types +*/ void LightApp_Dialog::addObjectType( const int id, const TypesList& list ) { TypesList types = list; objectTypes( id, types ); setObjectType( id, types ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible type to object selection widget + \param id - identificator of object selection widget + \param type - new type +*/ void LightApp_Dialog::addObjectType( const int id, const int type ) { TypesList types; objectTypes( id, types ); @@ -445,20 +456,21 @@ void LightApp_Dialog::addObjectType( const int id, const int type ) setObjectType( id, types ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Clears list of possibles types for object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::removeObjectType( const int id ) { TypesList types; setObjectType( id, types ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Removes types from list of possibles for object selection widget + \param id - identificator of object selection widget + \param list - list of types to be removed +*/ void LightApp_Dialog::removeObjectType( const int id, const TypesList& list ) { if( !myObjects.contains( id ) ) @@ -485,20 +497,22 @@ void LightApp_Dialog::removeObjectType( const int id, const TypesList& list ) updateObject( id ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Removes type from list of possibles for object selection widget + \param id - identificator of object selection widget + \param type - type to be removed +*/ void LightApp_Dialog::removeObjectType( const int id, const int type ) { TypesList list; list.append( type ); removeObjectType( id, list ); } -//======================================================================= -// name : hasObjectType -// Purpose : -//======================================================================= +/*! + \return true if widget has such type + \param id - identificator of object selection widget + \param type - type to be checked +*/ bool LightApp_Dialog::hasObjectType( const int id, const int type ) const { if( myObjects.contains( id ) ) @@ -507,10 +521,11 @@ bool LightApp_Dialog::hasObjectType( const int id, const int type ) const return false; } -//======================================================================= -// name : objectTypes -// Purpose : -//======================================================================= +/*! + Returns list of possible types for widget + \param id - identificator of object selection widget + \param list - list to be filled with possible types +*/ void LightApp_Dialog::objectTypes( const int id, TypesList& list ) const { if( myObjects.contains( id ) ) @@ -522,10 +537,9 @@ void LightApp_Dialog::objectTypes( const int id, TypesList& list ) const } } -//======================================================================= -// name : onToggled -// Purpose : -//======================================================================= +/*! + SLOT: called if selection button is clicked +*/ void LightApp_Dialog::onToggled( bool on ) { QButton* but = ( QButton* )sender(); @@ -550,10 +564,11 @@ void LightApp_Dialog::onToggled( bool on ) emit objectDeactivated( id ); } -//======================================================================= -// name : updateObject -// Purpose : -//======================================================================= +/*! + Updates selection description of widget + \param id - identificator of object selection widget + \param emit_signal - if it is true, the signal "selection changed" is emitted +*/ void LightApp_Dialog::updateObject( const int id, bool emit_signal ) { if( hasSelection( id ) ) @@ -566,10 +581,13 @@ void LightApp_Dialog::updateObject( const int id, bool emit_signal ) } } -//======================================================================= -// name : filterTypes -// Purpose : -//======================================================================= +/*! + Finds in list possible types + \param id - identificator of object selection widget + \param names - list of selected objects names + \param types - list of selected objects types + \param ids - list of selected objects ids +*/ void LightApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& types, QStringList& ids ) const { if( !myObjects.contains( id ) ) @@ -601,19 +619,18 @@ void LightApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& ids = new_ids; } -//======================================================================= -// name : resMgr -// Purpose : -//======================================================================= +/*! + \return global resource manager +*/ SUIT_ResourceMgr* LightApp_Dialog::resMgr() const { return SUIT_Session::session()->resourceMgr(); } -//======================================================================= -// name : setObjectPixmap -// Purpose : -//======================================================================= +/*! + Sets pixmap for all object selection button + \param p - image +*/ void LightApp_Dialog::setObjectPixmap( const QPixmap& p ) { myPixmap = p; @@ -623,10 +640,11 @@ void LightApp_Dialog::setObjectPixmap( const QPixmap& p ) ( ( QToolButton* )anIt.data().myBtn )->setIconSet( p ); } -//======================================================================= -// name : setObjectPixmap -// Purpose : -//======================================================================= +/*! + Sets pixmap all for object selection button + \param section - name of section of resource manager + \param file - name of file +*/ void LightApp_Dialog::setObjectPixmap( const QString& section, const QString& file ) { SUIT_ResourceMgr* mgr = resMgr(); @@ -634,19 +652,19 @@ void LightApp_Dialog::setObjectPixmap( const QString& section, const QString& fi setObjectPixmap( mgr->loadPixmap( section, file ) ); } -//======================================================================= -// name : multipleSelection -// Purpose : -//======================================================================= +/*! + \return true, if it is enable multiple selection + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::multipleSelection( const int id ) const { return nameIndication( id )!=OneName; } -//======================================================================= -// name : nameIndication -// Purpose : -//======================================================================= +/*! + \return type of name indication + \param id - identificator of object selection widget +*/ LightApp_Dialog::NameIndication LightApp_Dialog::nameIndication( const int id ) const { if( myObjects.contains( id ) ) @@ -655,10 +673,11 @@ LightApp_Dialog::NameIndication LightApp_Dialog::nameIndication( const int id ) return OneNameOrCount; } -//======================================================================= -// name : setNameIndication -// Purpose : -//======================================================================= +/*! + Sets type of name indication + \param id - identificator of object selection widget + \param ni - new type of name indication +*/ void LightApp_Dialog::setNameIndication( const int id, const NameIndication ni ) { if( id==-1 ) @@ -682,10 +701,12 @@ void LightApp_Dialog::setNameIndication( const int id, const NameIndication ni ) } } -//======================================================================= -// name : selectionDescription -// Purpose : -//======================================================================= +/*! + \return string representation of selection by selection data + \param names - list of selected objects names + \param types - list of selected objects types + \param ni - type of name indication +*/ QString LightApp_Dialog::selectionDescription( const QStringList& names, const TypesList& types, const NameIndication ni ) const { if( names.count()!=types.count() ) @@ -718,10 +739,10 @@ QString LightApp_Dialog::selectionDescription( const QStringList& names, const T return QString::null; } -//======================================================================= -// name : countOfTypes -// Purpose : -//======================================================================= +/*! + \return string representation of count of types + \param types - list of types +*/ QString LightApp_Dialog::countOfTypes( const TypesList& types ) const { QMap typesCount; @@ -743,39 +764,38 @@ QString LightApp_Dialog::countOfTypes( const TypesList& types ) const return typeCount.join( ", " ); } -//======================================================================= -// name : typeName -// Purpose : -//======================================================================= +/*! + \return reference to type name + \param type - integer id of type +*/ QString& LightApp_Dialog::typeName( const int type ) { return myTypeNames[ type ]; } -//======================================================================= -// name : typeName -// Purpose : -//======================================================================= +/*! + \return const reference to type name + \param type - integer id of type +*/ const QString& LightApp_Dialog::typeName( const int type ) const { return myTypeNames[ type ]; } -//======================================================================= -// name : activateObject -// Purpose : -//======================================================================= +/*! + Activates object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::activateObject( const int theId ) { if ( myObjects.contains( theId ) && !myObjects[ theId ].myBtn->isOn() ) myObjects[ theId ].myBtn->toggle(); } -//======================================================================= -// name : deactivateAll -// Purpose : -//======================================================================= +/*! + Deactivates all object selection widgets +*/ void LightApp_Dialog::deactivateAll() { ObjectMap::iterator anIt = myObjects.begin(), @@ -787,10 +807,14 @@ void LightApp_Dialog::deactivateAll() } } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to widget name, type and id of selected object + \param id - identificator of object selection widget + \param name - name of selected object + \param type - type of selected object + \param selid - id of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const int id, const QString& name, const int type, const QString& selid, const bool update ) { QStringList names; names.append( name ); @@ -799,10 +823,14 @@ void LightApp_Dialog::selectObject( const int id, const QString& name, const int selectObject( id, names, types, ids, update ); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to widget names, types and ids of selected objects + \param id - identificator of object selection widget + \param _names - names of selected object + \param _types - types of selected object + \param _ids - ids of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const int id, const QStringList& _names, const TypesList& _types, const QStringList& _ids, const bool update ) { @@ -824,20 +852,21 @@ void LightApp_Dialog::selectObject( const int id, const QStringList& _names, con emit selectionChanged( id ); } -//======================================================================= -// name : setReadOnly -// Purpose : -//======================================================================= +/*! + Sets read only state of object selection line edit + \param id - identificator of object selection widget + \param ro - new read only state +*/ void LightApp_Dialog::setReadOnly( const int id, const bool ro ) { if( myObjects.contains( id ) ) myObjects[ id ].myEdit->setReadOnly( nameIndication( id )==ListOfNames || nameIndication( id )==OneName ? ro : true ); } -//======================================================================= -// name : isReadOnly -// Purpose : -//======================================================================= +/*! + \return read only state of object selection line edit + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isReadOnly( const int id ) const { if( myObjects.contains( id ) ) @@ -845,11 +874,10 @@ bool LightApp_Dialog::isReadOnly( const int id ) const else return true; } - -//======================================================================= -// name : onTextChanged -// Purpose : -//======================================================================= + +/*! + SLOT: called if text of object selection line edit is changed +*/ void LightApp_Dialog::onTextChanged( const QString& text ) { if( myIsBusy ) diff --git a/src/LightApp/LightApp_Dialog.h b/src/LightApp/LightApp_Dialog.h index 12fd50154..51acdc5d0 100644 --- a/src/LightApp/LightApp_Dialog.h +++ b/src/LightApp/LightApp_Dialog.h @@ -35,9 +35,13 @@ class QLabel; class SUIT_ResourceMgr; -/* - Class : LightApp_Dialog - Description : Base class for all LightApp dialogs +/*! + \class LightApp_Dialog + Base class for all LightApp dialogs. + Provides standard widget for object selection: line edit, button; + it is necessary to call corresponding methods on selection change. + Standard dialog provides filtering, selection string representation, + possibility to indicate necessary selection by text with list of ids. */ class LIGHTAPP_EXPORT LightApp_Dialog : public QtxDialog { diff --git a/src/LightApp/LightApp_Displayer.cxx b/src/LightApp/LightApp_Displayer.cxx index f06c8c10b..49a792dc0 100644 --- a/src/LightApp/LightApp_Displayer.cxx +++ b/src/LightApp/LightApp_Displayer.cxx @@ -34,14 +34,26 @@ #include "SALOME_InteractiveObject.hxx" #endif +/*! + Default constructor +*/ LightApp_Displayer::LightApp_Displayer() { } +/*! + Destructor +*/ LightApp_Displayer::~LightApp_Displayer() { } +/*! + Displays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void LightApp_Displayer::Display( const QString& entry, const bool updateViewer, SALOME_View* theViewFrame ) { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -63,6 +75,11 @@ void LightApp_Displayer::Display( const QString& entry, const bool updateViewer, } } +/*! + Redisplays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer +*/ void LightApp_Displayer::Redisplay( const QString& entry, const bool updateViewer ) { // Remove the object permanently ( == true) @@ -93,6 +110,13 @@ void LightApp_Displayer::Redisplay( const QString& entry, const bool updateViewe } } +/*! + Erases object in view + \param entry - object entry + \param forced - deletes object from viewer (otherwise it will be erased, but cached) + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void LightApp_Displayer::Erase( const QString& entry, const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) { @@ -109,6 +133,12 @@ void LightApp_Displayer::Erase( const QString& entry, const bool forced, } } +/*! + Erases all objects in view + \param forced - deletes objects from viewer + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void LightApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -120,6 +150,11 @@ void LightApp_Displayer::EraseAll( const bool forced, const bool updateViewer, S } } +/*! + \return true if object is displayed in viewer + \param entry - object entry + \param theViewFrame - view +*/ bool LightApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -135,6 +170,9 @@ bool LightApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theView return res; } +/*! + Updates active view +*/ void LightApp_Displayer::UpdateViewer() const { SALOME_View* vf = GetActiveView(); @@ -142,6 +180,12 @@ void LightApp_Displayer::UpdateViewer() const vf->Repaint(); } +/*! + \return presentation of object, built with help of CreatePrs method + \param entry - object entry + \param theViewFrame - view + \sa CreatePrs() +*/ SALOME_Prs* LightApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) { SALOME_Prs* prs = 0; @@ -154,6 +198,9 @@ SALOME_Prs* LightApp_Displayer::buildPresentation( const QString& entry, SALOME_ return prs; } +/*! + \return active view +*/ SALOME_View* LightApp_Displayer::GetActiveView() { SUIT_Session* session = SUIT_Session::session(); @@ -168,11 +215,20 @@ SALOME_View* LightApp_Displayer::GetActiveView() return 0; } -bool LightApp_Displayer::canBeDisplayed( const QString&, const QString& ) const +/*! + \return true, if object can be displayed in this type of viewer + \param entry - object entry + \param viewer_type - type of viewer +*/ +bool LightApp_Displayer::canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const { return true; } +/*! + \return true, if object can be displayed in any type of viewer + \param entry - object entry +*/ bool LightApp_Displayer::canBeDisplayed( const QString& entry ) const { QString viewerType; @@ -185,6 +241,11 @@ bool LightApp_Displayer::canBeDisplayed( const QString& entry ) const return !viewerType.isNull() && canBeDisplayed( entry, viewerType ); } +/*! + \return displayer, corresponding to module + \param mod_name - name of module + \param load - is module has to be forced loaded +*/ LightApp_Displayer* LightApp_Displayer::FindDisplayer( const QString& mod_name, const bool load ) { SUIT_Session* session = SUIT_Session::session(); diff --git a/src/LightApp/LightApp_Displayer.h b/src/LightApp/LightApp_Displayer.h index f0896eb8f..cc1eb89d1 100644 --- a/src/LightApp/LightApp_Displayer.h +++ b/src/LightApp/LightApp_Displayer.h @@ -24,6 +24,11 @@ class QString; +/*! + \class LightApp_Displayer + Uniform mechanism of display/erase of objects in different views. + Objects are specified by string entry +*/ class LightApp_Displayer : public SALOME_Displayer { public: diff --git a/src/LightApp/LightApp_Driver.cxx b/src/LightApp/LightApp_Driver.cxx index 122890390..087f39168 100644 --- a/src/LightApp/LightApp_Driver.cxx +++ b/src/LightApp/LightApp_Driver.cxx @@ -49,10 +49,9 @@ LightApp_Driver::~LightApp_Driver() using namespace std; -//================================================================ -// Function : SaveDatasInFile -/*! Purpose : save in file 'theFileName' datas from this driver*/ -//================================================================ +/*! + Save in file 'theFileName' datas from this driver +*/ bool LightApp_Driver::SaveDatasInFile( const char* theFileName, bool isMultiFile ) { int aNbModules = 0; @@ -133,10 +132,9 @@ bool LightApp_Driver::SaveDatasInFile( const char* theFileName, bool isMultiFile return true; } -//======================================================================= -// name : ReaDatasFromFile -/*! Purpose : filling current driver from file 'theFileName'*/ -//======================================================================= +/*! + Filling current driver from file 'theFileName' +*/ bool LightApp_Driver::ReadDatasFromFile( const char* theFileName, bool isMultiFile ) { #ifdef WNT @@ -193,10 +191,9 @@ bool LightApp_Driver::ReadDatasFromFile( const char* theFileName, bool isMultiFi return true; } -//================================================================ -// Function : GetTmpDir -/*! Purpose : returns temp directory for path 'theURL'*/ -//================================================================ +/*! + \return temp directory for path 'theURL' +*/ std::string LightApp_Driver::GetTmpDir (const char* theURL, const bool isMultiFile) { std::string anURLDir = GetDirFromPath(theURL); @@ -205,10 +202,9 @@ std::string LightApp_Driver::GetTmpDir (const char* theURL, const bool isMultiF return aTmpDir; } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : returns list of files for module with name 'theModuleName'*/ -//================================================================ +/*! + \return list of files for module with name 'theModuleName' +*/ LightApp_Driver::ListOfFiles LightApp_Driver::GetListOfFiles( const char* theModuleName ) { ListOfFiles aListOfFiles; @@ -220,20 +216,18 @@ LightApp_Driver::ListOfFiles LightApp_Driver::GetListOfFiles( const char* theMod return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : sets list of files for module with name 'theModuleName'*/ -//================================================================ +/*! + Sets list of files for module with name 'theModuleName' +*/ void LightApp_Driver::SetListOfFiles( const char* theModuleName, const ListOfFiles theListOfFiles ) { std::string aName (theModuleName); myMap[aName] = theListOfFiles; } -//============================================================================ -// function : PutFilesToStream -/*! Purpose : converts files which was created from module into a byte sequence unsigned char*/ -//============================================================================ +/*! + Converts files which was created from module into a byte sequence unsigned char +*/ void LightApp_Driver::PutFilesToStream( const std::string& theModuleName, unsigned char*& theBuffer, long& theBufferSize, bool theNamesOnly ) { @@ -342,10 +336,9 @@ void LightApp_Driver::PutFilesToStream( const std::string& theModuleName, unsign theBufferSize = aBufferSize; } -//============================================================================ -// function : PutStreamToFile -/*! Purpose : converts a byte sequence to files and return list of them*/ -//============================================================================ +/*! + Converts a byte sequence to files and return list of them +*/ LightApp_Driver::ListOfFiles LightApp_Driver::PutStreamToFiles( const unsigned char* theBuffer, const long theBufferSize, bool theNamesOnly ) { @@ -406,13 +399,11 @@ LightApp_Driver::ListOfFiles LightApp_Driver::PutStreamToFiles( const unsigned c return aFiles; } -//============================================================================ -// function : RemoveFiles -/*! Purpose : Remove files. First item in is a directory with slash at the end. - Other items are names of files. If is true, - then the directory is also deleted. +/*! + Remove files. First item in is a directory with slash at the end. + Other items are names of files. If is true, + then the directory is also deleted. */ -//============================================================================ void LightApp_Driver::RemoveFiles( const ListOfFiles& theFiles, const bool IsDirDeleted) { int i, aLength = theFiles.size() - 1; @@ -449,11 +440,10 @@ void LightApp_Driver::RemoveFiles( const ListOfFiles& theFiles, const bool IsDir } } -//============================================================================ -// function : RemoveTemporaryFiles -/*! Purpose : removes files which was created from module theModuleName if - is true tmp directory is also deleted if it is empty*/ -//============================================================================ +/*! + Removes files which was created from module theModuleName if + is true tmp directory is also deleted if it is empty +*/ void LightApp_Driver::RemoveTemporaryFiles( const char* theModuleName, const bool IsDirDeleted ) { std::string aModuleName(theModuleName); @@ -464,10 +454,9 @@ void LightApp_Driver::RemoveTemporaryFiles( const char* theModuleName, const boo } -//============================================================================ -// function : ClearDriverContents -/*! Purpose : clear map of list files*/ -//============================================================================ +/*! + Clears map of list files +*/ void LightApp_Driver::ClearDriverContents() { std::map::iterator it; @@ -483,10 +472,9 @@ void LightApp_Driver::ClearDriverContents() SetIsTemporary( false ); } -//============================================================================ -// function : GetTempDir -/*! Purpose : return a temp directory to store created files like "/tmp/sub_dir/" */ -//============================================================================ +/*! + \return a temp directory to store created files like "/tmp/sub_dir/" +*/ std::string LightApp_Driver::GetTmpDir() { if ( myTmpDir.length() != 0 ) @@ -553,10 +541,9 @@ std::string LightApp_Driver::GetTmpDir() return aTmpDir.ToCString(); } -//============================================================================ -// function : GetDirFromPath -/*! Purpose : returns the dir by the path*/ -//============================================================================ +/*! + \return the dir by the path +*/ std::string LightApp_Driver::GetDirFromPath( const std::string& thePath ) { if(thePath == "") return ""; diff --git a/src/LightApp/LightApp_GLSelector.cxx b/src/LightApp/LightApp_GLSelector.cxx index c9415eb41..03da41efc 100644 --- a/src/LightApp/LightApp_GLSelector.cxx +++ b/src/LightApp/LightApp_GLSelector.cxx @@ -115,21 +115,35 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList ) } +/*! + Constructor + \param entry - entry of object +*/ LightApp_GLOwner::LightApp_GLOwner( const char* entry ) : GLViewer_Owner() { setEntry( entry ); } +/*! + Destructor +*/ LightApp_GLOwner::~LightApp_GLOwner() { } +/*! + \return entry +*/ const char* LightApp_GLOwner::entry() const { return myEntry.c_str(); } +/*! + Sets new entry + \param entry - entry of object +*/ void LightApp_GLOwner::setEntry( const char* entry ) { myEntry = entry; diff --git a/src/LightApp/LightApp_GLSelector.h b/src/LightApp/LightApp_GLSelector.h index f58bb761a..7447490ee 100644 --- a/src/LightApp/LightApp_GLSelector.h +++ b/src/LightApp/LightApp_GLSelector.h @@ -28,6 +28,10 @@ #include #include +/*! + \class LightApp_GLSelector + Custom selector to get/set selection from GL viewer +*/ class LIGHTAPP_EXPORT LightApp_GLSelector : public SUIT_Selector { Q_OBJECT diff --git a/src/LightApp/LightApp_HDFDriver.cxx b/src/LightApp/LightApp_HDFDriver.cxx index bf003ae44..7ceca3a62 100644 --- a/src/LightApp/LightApp_HDFDriver.cxx +++ b/src/LightApp/LightApp_HDFDriver.cxx @@ -36,10 +36,9 @@ LightApp_HDFDriver::~LightApp_HDFDriver() using namespace std; -//================================================================ -// Function : SaveDatasInFile -/*! Purpose : save in file 'theFileName' datas from this driver*/ -//================================================================ +/*! + Saves in file 'theFileName' datas from this driver +*/ bool LightApp_HDFDriver::SaveDatasInFile( const char* theFileName, bool isMultiFile ) { bool isASCII = false; @@ -163,10 +162,9 @@ bool LightApp_HDFDriver::SaveDatasInFile( const char* theFileName, bool isMultiF return !isError; } -//======================================================================= -// Function : ReadDatasFromFile -/*! Purpose : filling current driver from file 'theFileName'*/ -//======================================================================= +/*! + Filling current driver from file 'theFileName' +*/ bool LightApp_HDFDriver::ReadDatasFromFile( const char* theFileName, bool isMultiFile ) { bool isASCII = false; diff --git a/src/LightApp/LightApp_HDFDriver.h b/src/LightApp/LightApp_HDFDriver.h index 5a978eacf..e35987d2e 100644 --- a/src/LightApp/LightApp_HDFDriver.h +++ b/src/LightApp/LightApp_HDFDriver.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef LIGHTAPP_HDFDRIVER_H #define LIGHTAPP_HDFDRIVER_H diff --git a/src/LightApp/LightApp_Module.cxx b/src/LightApp/LightApp_Module.cxx index 691d68b98..65689deed 100644 --- a/src/LightApp/LightApp_Module.cxx +++ b/src/LightApp/LightApp_Module.cxx @@ -117,6 +117,9 @@ void LightApp_Module::contextMenuPopup( const QString& client, QPopupMenu* menu, void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, SUIT_DataObject* theDataObject ) { + bool upd = getApp()->objectBrowser()->isAutoUpdate(); + getApp()->objectBrowser()->setAutoUpdate( false ); + SUIT_DataObject* aDataObject = theDataObject; if( theIsUpdateDataModel ){ if( CAM_DataModel* aDataModel = dataModel() ){ @@ -134,7 +137,8 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, } } } - getApp()->objectBrowser()->updateTree( aDataObject ); + getApp()->objectBrowser()->setAutoUpdate( upd ); + getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ ); } /*!NOT IMPLEMENTED*/ @@ -509,11 +513,18 @@ void LightApp_Module::onOperationDestroyed() } } +/*! + Must be redefined in order to use standard displayer mechanism + \return displayer of module +*/ LightApp_Displayer* LightApp_Module::displayer() { return 0; } +/*! + SLOT: called on activating of standard operations show/hide +*/ void LightApp_Module::onShowHide() { if( !sender()->inherits( "QAction" ) || !popupMgr() ) @@ -525,10 +536,16 @@ void LightApp_Module::onShowHide() startOperation( id ); } +/*! + virtual SLOT: called on view manager adding +*/ void LightApp_Module::onViewManagerAdded( SUIT_ViewManager* ) { } +/*! + virtual SLOT: called on view manager removing +*/ void LightApp_Module::onViewManagerRemoved( SUIT_ViewManager* ) { } diff --git a/src/LightApp/LightApp_Module.h b/src/LightApp/LightApp_Module.h index afe552d12..ca6a6d852 100644 --- a/src/LightApp/LightApp_Module.h +++ b/src/LightApp/LightApp_Module.h @@ -28,9 +28,9 @@ class QtxPopupMgr; class QString; class QVariant; -/* - Class : LightApp_Module - Description : Base class for all light modules +/*! + \class LightApp_Module + Base class for all light modules */ class LIGHTAPP_EXPORT LightApp_Module : public CAM_Module diff --git a/src/LightApp/LightApp_ModuleDlg.h b/src/LightApp/LightApp_ModuleDlg.h index 526f16f22..135e58c40 100644 --- a/src/LightApp/LightApp_ModuleDlg.h +++ b/src/LightApp/LightApp_ModuleDlg.h @@ -19,6 +19,11 @@ class QFrame; class QLabel; class QPushButton; +/*! + \class LightApp_ModuleDlg + Dialog allows to choose action on module activation when there is no document. + It is possible to create new document, to open existing or to cancel module activation +*/ class LIGHTAPP_EXPORT LightApp_ModuleDlg : public QDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_NameDlg.cxx b/src/LightApp/LightApp_NameDlg.cxx index 609927305..f6eb0543e 100644 --- a/src/LightApp/LightApp_NameDlg.cxx +++ b/src/LightApp/LightApp_NameDlg.cxx @@ -123,6 +123,9 @@ QString LightApp_NameDlg::name() return myLineEdit->text(); } +/*! + Accepts if name isn't empty +*/ void LightApp_NameDlg::accept() { if ( name().stripWhiteSpace().isEmpty() ) diff --git a/src/LightApp/LightApp_NameDlg.h b/src/LightApp/LightApp_NameDlg.h index c0309c0f2..6bc61b9d5 100644 --- a/src/LightApp/LightApp_NameDlg.h +++ b/src/LightApp/LightApp_NameDlg.h @@ -18,10 +18,10 @@ class QLineEdit; class QPushButton; -//================================================================================= -// class : LightApp_NameDlg -/*! purpose : Common dialog box class*/ -//================================================================================= +/*! + \class LightApp_NameDlg + Common dialog box class +*/ class LIGHTAPP_EXPORT LightApp_NameDlg : public QDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_OBFilter.h b/src/LightApp/LightApp_OBFilter.h index 4ea292132..69db84c2c 100644 --- a/src/LightApp/LightApp_OBFilter.h +++ b/src/LightApp/LightApp_OBFilter.h @@ -24,6 +24,10 @@ class LightApp_SelectionMgr; +/*! + \class LightApp_OBFilter + Custom Object Browser filter, that checks correctness of object by all filters set in selection manager +*/ class LIGHTAPP_EXPORT LightApp_OBFilter: public OB_Filter { public: diff --git a/src/LightApp/LightApp_OBSelector.cxx b/src/LightApp/LightApp_OBSelector.cxx index 22867b5f6..fcd6d1dd6 100644 --- a/src/LightApp/LightApp_OBSelector.cxx +++ b/src/LightApp/LightApp_OBSelector.cxx @@ -104,6 +104,7 @@ void LightApp_OBSelector::setSelection( const SUIT_DataOwnerPtrList& theList ) } myBrowser->setSelected( objList ); + mySelectedList.clear(); } /*!On selection changed.*/ diff --git a/src/LightApp/LightApp_OBSelector.h b/src/LightApp/LightApp_OBSelector.h index e8fc44371..a3928ccd9 100644 --- a/src/LightApp/LightApp_OBSelector.h +++ b/src/LightApp/LightApp_OBSelector.h @@ -27,6 +27,10 @@ class OB_Browser; class LightApp_DataObject; +/*! + \class LightApp_OBSelector + Custom selector to get/set selection from object browser +*/ class LIGHTAPP_EXPORT LightApp_OBSelector : public SUIT_Selector { Q_OBJECT diff --git a/src/LightApp/LightApp_OCCSelector.h b/src/LightApp/LightApp_OCCSelector.h index 5a53992e0..619a4739e 100644 --- a/src/LightApp/LightApp_OCCSelector.h +++ b/src/LightApp/LightApp_OCCSelector.h @@ -27,6 +27,10 @@ class Handle_AIS_InteractiveObject; +/*! + \class LightApp_OCCSelector + Custom selector to get/set selection from OCC viewer +*/ class LIGHTAPP_EXPORT LightApp_OCCSelector : public SUIT_Selector { Q_OBJECT diff --git a/src/LightApp/LightApp_Operation.cxx b/src/LightApp/LightApp_Operation.cxx index 197eb93ee..f13019d6c 100755 --- a/src/LightApp/LightApp_Operation.cxx +++ b/src/LightApp/LightApp_Operation.cxx @@ -121,10 +121,6 @@ void LightApp_Operation::suspendOperation() setDialogActive( false ); } -//======================================================================= -// name : abortOperation -// Purpose : Hide dialog box (if it is exists) -//======================================================================= /*! * \brief Performs actions needed for aborting operation * diff --git a/src/LightApp/LightApp_Operation.h b/src/LightApp/LightApp_Operation.h index 4b07bd7b2..beac7042c 100755 --- a/src/LightApp/LightApp_Operation.h +++ b/src/LightApp/LightApp_Operation.h @@ -22,15 +22,10 @@ class LightApp_SelectionMgr; class LightApp_Dialog; class SUIT_Desktop; -/* - Class : LightApp_Operation - Description : Base class for all operations -*/ - /*! - * \brief Base class for all operations - * - * Base class for all operations (see SUIT_Operation for more description) + \class LightApp_Operation + \brief Base class for all operations + Base class for all operations (see SUIT_Operation for more description) */ class LIGHTAPP_EXPORT LightApp_Operation : public SUIT_Operation { diff --git a/src/LightApp/LightApp_Preferences.cxx b/src/LightApp/LightApp_Preferences.cxx index 96d6abcb2..36ba84c96 100644 --- a/src/LightApp/LightApp_Preferences.cxx +++ b/src/LightApp/LightApp_Preferences.cxx @@ -61,7 +61,7 @@ int LightApp_Preferences::addPreference( const QString& mod, const QString& labe return id; } -/* +/*! Checks: is preferences has module with name \a mod. */ bool LightApp_Preferences::hasModule( const QString& mod ) const diff --git a/src/LightApp/LightApp_Preferences.h b/src/LightApp/LightApp_Preferences.h index 2aa97f143..bcd39127b 100644 --- a/src/LightApp/LightApp_Preferences.h +++ b/src/LightApp/LightApp_Preferences.h @@ -31,6 +31,11 @@ class QtxResourceMgr; +/*! + \class LightApp_Preferences + Custom preference container. Assign each preference category with module. + Emits signal on preference changing +*/ class LIGHTAPP_EXPORT LightApp_Preferences : public QtxListResourceEdit { Q_OBJECT diff --git a/src/LightApp/LightApp_PreferencesDlg.cxx b/src/LightApp/LightApp_PreferencesDlg.cxx index af26451f7..bbd81314e 100644 --- a/src/LightApp/LightApp_PreferencesDlg.cxx +++ b/src/LightApp/LightApp_PreferencesDlg.cxx @@ -20,7 +20,6 @@ // Author: Sergey TELKOV #include "LightApp_PreferencesDlg.h" - #include "LightApp_Preferences.h" #include "QtxResourceMgr.h" @@ -29,12 +28,13 @@ #include #include #include +#include /*! Constructor. */ LightApp_PreferencesDlg::LightApp_PreferencesDlg( LightApp_Preferences* prefs, QWidget* parent ) -: QtxDialog( parent, 0, true, false, OK | Close | Apply ), +: QtxDialog( parent, 0, true, true, OK | Close | Apply ), myPrefs( prefs ), mySaved ( false ) { setCaption( tr( "CAPTION" ) ); @@ -58,6 +58,9 @@ myPrefs( prefs ), mySaved ( false ) QButton* defBtn = userButton( insertButton( tr( "DEFAULT_BTN_TEXT" ) ) ); if ( defBtn ) connect( defBtn, SIGNAL( clicked() ), this, SLOT( onDefault() ) ); + QButton* impBtn = userButton( insertButton( tr( "IMPORT_BTN_TEXT" ) ) ); + if( impBtn ) + connect( impBtn, SIGNAL( clicked() ), this, SLOT( onImportPref() ) ); } /*! @@ -132,3 +135,24 @@ void LightApp_PreferencesDlg::onDefault() } } } + +/*! Import preferences from some file */ +void LightApp_PreferencesDlg::onImportPref() +{ + QtxResourceMgr* mgr = myPrefs->resourceMgr(); + if( !mgr ) + return; + + QFileDialog dlg( ".", "*", this, "", tr( "IMPORT_PREFERENCES" ) ); + dlg.setShowHiddenFiles( true ); + dlg.exec(); + QString fname = dlg.selectedFile(); + if( fname.isEmpty() ) + return; + + if( mgr->import( fname ) ) + { + myPrefs->retrieve(); + myPrefs->toBackup(); + } +} diff --git a/src/LightApp/LightApp_PreferencesDlg.h b/src/LightApp/LightApp_PreferencesDlg.h index 771714519..3a89ac82c 100644 --- a/src/LightApp/LightApp_PreferencesDlg.h +++ b/src/LightApp/LightApp_PreferencesDlg.h @@ -28,6 +28,10 @@ class LightApp_Preferences; +/*! + \class LightApp_PreferencesDlg + Dialog for preferences edition +*/ class LIGHTAPP_EXPORT LightApp_PreferencesDlg : public QtxDialog { Q_OBJECT @@ -47,6 +51,7 @@ private slots: void onHelp(); void onApply(); void onDefault(); + void onImportPref(); private: LightApp_Preferences* myPrefs; diff --git a/src/LightApp/LightApp_Selection.cxx b/src/LightApp/LightApp_Selection.cxx index 454ee5320..dc592f522 100644 --- a/src/LightApp/LightApp_Selection.cxx +++ b/src/LightApp/LightApp_Selection.cxx @@ -86,13 +86,13 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr LightApp_DataOwner* sowner = dynamic_cast( (*anIt ).get() ); if( sowner ) { - if( entries.contains( sowner->entry() ) ) + entry = myStudy->referencedToEntry( sowner->entry() ); + if( entries.contains( entry ) ) continue; - entry = myStudy->referencedToEntry( sowner->entry() ); entries.insert( entry, 0 ); myEntries.insert( num, entry ); - myIsReferences.insert( num, sowner->entry() == entry ); + myIsReferences.insert( num, sowner->entry() != entry ); processOwner( sowner ); num++; } diff --git a/src/LightApp/LightApp_Selection.h b/src/LightApp/LightApp_Selection.h index 79cc0fac6..606f4c27a 100644 --- a/src/LightApp/LightApp_Selection.h +++ b/src/LightApp/LightApp_Selection.h @@ -37,7 +37,13 @@ class LightApp_DataOwner; class LightApp_Study; class SUIT_ViewWindow; - +/*! + \class LightApp_Selection + Custom selection class, allowing to build popup with rules on the base + of owners selected in all selectors (popup client has more priority). + It is able to return values of standard object properties + (isVisible,isComponent,canBeDisplayed,isReference, etc) +*/ class LIGHTAPP_EXPORT LightApp_Selection : public QtxPopupMgr::Selection { public: diff --git a/src/LightApp/LightApp_SelectionMgr.h b/src/LightApp/LightApp_SelectionMgr.h index 8546dadfe..20d03efa6 100644 --- a/src/LightApp/LightApp_SelectionMgr.h +++ b/src/LightApp/LightApp_SelectionMgr.h @@ -36,6 +36,10 @@ class LightApp_Application; +/*! + Custom selection manager, allowing to work with object selection + (additionally to data owners) and to access to sub-selection of objects +*/ class LIGHTAPP_EXPORT LightApp_SelectionMgr : public SUIT_SelectionMgr { Q_OBJECT diff --git a/src/LightApp/LightApp_ShowHideOp.cxx b/src/LightApp/LightApp_ShowHideOp.cxx index 76827c053..0d64875f7 100644 --- a/src/LightApp/LightApp_ShowHideOp.cxx +++ b/src/LightApp/LightApp_ShowHideOp.cxx @@ -33,16 +33,25 @@ #include #endif +/*! + Constructor +*/ LightApp_ShowHideOp::LightApp_ShowHideOp( ActionType type ) : LightApp_Operation(), myActionType( type ) { } +/*! + Destructor +*/ LightApp_ShowHideOp::~LightApp_ShowHideOp() { } +/*! + Makes show/hide operation +*/ void LightApp_ShowHideOp::startOperation() { LightApp_Application* app = dynamic_cast( application() ); diff --git a/src/LightApp/LightApp_ShowHideOp.h b/src/LightApp/LightApp_ShowHideOp.h index cac7b918d..d84ef52c8 100644 --- a/src/LightApp/LightApp_ShowHideOp.h +++ b/src/LightApp/LightApp_ShowHideOp.h @@ -23,6 +23,12 @@ #include "LightApp_Operation.h" class LightApp_Displayer; + +/*! + \class LightApp_ShowHideOp + Standard operation allowing to show/hide selected objects + corresponding to any module with help of module displayer +*/ class LIGHTAPP_EXPORT LightApp_ShowHideOp : public LightApp_Operation { Q_OBJECT diff --git a/src/LightApp/LightApp_Study.cxx b/src/LightApp/LightApp_Study.cxx index 0b8b9005e..09eb3c3a0 100644 --- a/src/LightApp/LightApp_Study.cxx +++ b/src/LightApp/LightApp_Study.cxx @@ -77,10 +77,9 @@ void LightApp_Study::createDocument() emit created( this ); } -//======================================================================= -// name : openDocument -/*! Purpose : Open document*/ -//======================================================================= +/*! + Opens document +*/ bool LightApp_Study::openDocument( const QString& theFileName ) { myDriver->ClearDriverContents(); @@ -106,10 +105,9 @@ bool LightApp_Study::openDocument( const QString& theFileName ) return res; } -//======================================================================= -// name : loadDocument -/*! Purpose : Load document */ -//======================================================================= +/*! + Loads document +*/ bool LightApp_Study::loadDocument( const QString& theStudyName ) { myDriver->ClearDriverContents(); @@ -138,10 +136,9 @@ bool LightApp_Study::loadDocument( const QString& theStudyName ) return res; } -//======================================================================= -// name : saveDocumentAs -/*! Purpose : Save document */ -//======================================================================= +/*! + Saves document +*/ bool LightApp_Study::saveDocumentAs( const QString& theFileName ) { SUIT_ResourceMgr* resMgr = application()->resourceMgr(); @@ -201,10 +198,9 @@ bool LightApp_Study::saveDocumentAs( const QString& theFileName ) return res; } -//======================================================================= -// name : saveDocument -/*! Purpose : Save document */ -//======================================================================= +/*! + Saves document +*/ bool LightApp_Study::saveDocument() { ModelList list; dataModels( list ); @@ -227,10 +223,9 @@ bool LightApp_Study::saveDocument() return res; } -//================================================================ -// Function : closeDocument -/*! Purpose : Close document */ -//================================================================ +/*! + Closes document +*/ void LightApp_Study::closeDocument(bool permanently) { // Inform everybody that this study is going to close when it's most safe to, @@ -243,27 +238,25 @@ void LightApp_Study::closeDocument(bool permanently) myDriver->ClearDriverContents(); } -//================================================================ -// Function : referencedToEntry -/*! Purpose : Return current entry*/ -//================================================================ +/*! + \return real entry by entry of reference + \param entry - entry of reference object +*/ QString LightApp_Study::referencedToEntry( const QString& entry ) const { return entry; } -//================================================================ -// Function : children -/*! Purpose : Return entries of children of object*/ -//================================================================ +/*! + \return entries of object children +*/ void LightApp_Study::children( const QString&, QStringList& ) const { } -//================================================================ -// Function : isComponent -/*! Purpose : Return true if entry corresponds to component*/ -//================================================================ +/*! + \return true if entry corresponds to component +*/ bool LightApp_Study::isComponent( const QString& entry ) const { if( !root() ) @@ -281,10 +274,9 @@ bool LightApp_Study::isComponent( const QString& entry ) const return false; } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return component data type for entry +*/ QString LightApp_Study::componentDataType( const QString& entry ) const { LightApp_DataObject* aCurObj; @@ -297,10 +289,9 @@ QString LightApp_Study::componentDataType( const QString& entry ) const return ""; } -//================================================================ -// Function : isModified -// Purpose : -//================================================================ +/*! + \return true if study is modified +*/ bool LightApp_Study::isModified() const { bool isAnyChanged = CAM_Study::isModified(); @@ -315,27 +306,24 @@ bool LightApp_Study::isModified() const return isAnyChanged; } -//================================================================ -// Function : isSaved -/*! Purpose : Check: data model is saved?*/ -//================================================================ +/*! + \return true if data model is saved +*/ bool LightApp_Study::isSaved() const { return CAM_Study::isSaved(); } -//======================================================================= -// name : addComponent -/*! Purpose : Create SComponent for module, necessary for SalomeApp study */ -//======================================================================= +/*! + Creates SComponent for module, necessary for SalomeApp study +*/ void LightApp_Study::addComponent(const CAM_DataModel* dm) { } -//======================================================================= -// name : saveModuleData -/*! Purpose : save list file for module 'theModuleName' */ -//======================================================================= +/*! + Saves list file for module 'theModuleName' +*/ void LightApp_Study::saveModuleData(QString theModuleName, QStringList theListOfFiles) { int aNb = theListOfFiles.count(); @@ -353,10 +341,9 @@ void LightApp_Study::saveModuleData(QString theModuleName, QStringList theListOf myDriver->SetListOfFiles(theModuleName, aListOfFiles); } -//======================================================================= -// name : openModuleData -/*! Purpose : gets list of file for module 'theModuleNam' */ -//======================================================================= +/*! + Gets list of file for module 'theModuleNam' +*/ void LightApp_Study::openModuleData(QString theModuleName, QStringList& theListOfFiles) { std::vector aListOfFiles = myDriver->GetListOfFiles(theModuleName); @@ -370,10 +357,9 @@ void LightApp_Study::openModuleData(QString theModuleName, QStringList& theListO theListOfFiles.append(aListOfFiles[i+1].c_str()); } -//======================================================================= -// name : saveStudyData -/*! Purpose : save data from study */ -//======================================================================= +/*! + Saves data from study +*/ bool LightApp_Study::saveStudyData( const QString& theFileName ) { ModelList list; dataModels( list ); @@ -386,10 +372,9 @@ bool LightApp_Study::saveStudyData( const QString& theFileName ) return aRes; } -//======================================================================= -// name : openStudyData -/*! Purpose : open data for study */ -//======================================================================= +/*! + Opens data for study +*/ bool LightApp_Study::openStudyData( const QString& theFileName ) { SUIT_ResourceMgr* resMgr = application()->resourceMgr(); @@ -401,10 +386,9 @@ bool LightApp_Study::openStudyData( const QString& theFileName ) return aRes; } -//================================================================ -// Function : openDataModel -/*! Purpose : Open data model */ -//================================================================ +/*! + Opens data model +*/ bool LightApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm ) { if (!dm) @@ -422,20 +406,19 @@ bool LightApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm return false; } -//================================================================ -// Function : GetTmpDir -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + \return temporary directory for saving files of modules +*/ std::string LightApp_Study::GetTmpDir (const char* theURL, const bool isMultiFile) { return myDriver->GetTmpDir(theURL, isMultiFile); } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + \return list of files necessary for module + \param theModuleName - name of module +*/ std::vector LightApp_Study::GetListOfFiles(const char* theModuleName) const { std::vector aListOfFiles; @@ -443,19 +426,19 @@ std::vector LightApp_Study::GetListOfFiles(const char* theModuleNam return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + Sets list of files necessary for module + \param theModuleName - name of module + \param theListOfFiles - list of files +*/ void LightApp_Study::SetListOfFiles (const char* theModuleName, const std::vector theListOfFiles) { myDriver->SetListOfFiles(theModuleName, theListOfFiles); } -//================================================================ -// Function : RemoveTemporaryFiles -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + Removes temporary files +*/ void LightApp_Study::RemoveTemporaryFiles (const char* theModuleName, const bool isMultiFile) const { if (isMultiFile) @@ -464,10 +447,10 @@ void LightApp_Study::RemoveTemporaryFiles (const char* theModuleName, const bool myDriver->RemoveTemporaryFiles(theModuleName, isDirDeleted); } -//================================================================ -// Function : components -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + Fills list with components names + \param comp - list to be filled +*/ void LightApp_Study::components( QStringList& comp ) const { DataObjectList children = root()->children(); diff --git a/src/LightApp/LightApp_Study.h b/src/LightApp/LightApp_Study.h index 2e0ac3226..2b8cf30c4 100644 --- a/src/LightApp/LightApp_Study.h +++ b/src/LightApp/LightApp_Study.h @@ -32,6 +32,11 @@ class SUIT_Application; class CAM_DataModel; +/*! + Custom study, using for open/close of documents HDF format. + Data of each module can be saved to different files, those + after that are combined into one HDF file +*/ class LIGHTAPP_EXPORT LightApp_Study : public CAM_Study { Q_OBJECT diff --git a/src/LightApp/LightApp_SwitchOp.cxx b/src/LightApp/LightApp_SwitchOp.cxx index 14feeaa6d..820bf1e5f 100755 --- a/src/LightApp/LightApp_SwitchOp.cxx +++ b/src/LightApp/LightApp_SwitchOp.cxx @@ -16,17 +16,6 @@ // // See http://www.salome-platform.org/ // -/** -* LIGHT LightApp -* -* Copyright (C) 2005 CEA/DEN, EDF R&D -* -* -* -* File : LightApp_SwitchOp.h -* Author : Sergey LITONIN -* Module : LIGHT -*/ #include "LightApp_SwitchOp.h" #include "LightApp_Module.h" diff --git a/src/LightApp/LightApp_SwitchOp.h b/src/LightApp/LightApp_SwitchOp.h index dad93261d..2fdb302e4 100755 --- a/src/LightApp/LightApp_SwitchOp.h +++ b/src/LightApp/LightApp_SwitchOp.h @@ -16,19 +16,6 @@ // // See http://www.salome-platform.org/ // -/** -* LIGHT LightApp -* -* Copyright (C) 2005 CEA/DEN, EDF R&D -* -* -* -* File : LightApp_SwitchOp.h -* Author : Sergey LITONIN -* Module : LIGHT -*/ - - #ifndef LightApp_SwitchOp_H #define LightApp_SwitchOp_H diff --git a/src/LightApp/LightApp_UpdateFlags.h b/src/LightApp/LightApp_UpdateFlags.h index 2fc7fa780..6dc90343a 100755 --- a/src/LightApp/LightApp_UpdateFlags.h +++ b/src/LightApp/LightApp_UpdateFlags.h @@ -12,11 +12,11 @@ #ifndef LightApp_UpdateFlags_H #define LightApp_UpdateFlags_H -/* - Enum : UpdateFlags - Description : Enumeration for update flags. First byte is reserved for LightApp_Module. - Modules derived from this model must use other 3 bytes to define their - own update flags +/*! + \enum UpdateFlags + Enumeration for update flags. First byte is reserved for LightApp_Module. + Modules derived from this model must use other 3 bytes to define their + own update flags */ typedef enum diff --git a/src/LightApp/LightApp_VTKSelector.cxx b/src/LightApp/LightApp_VTKSelector.cxx index a81891b59..bed74c357 100644 --- a/src/LightApp/LightApp_VTKSelector.cxx +++ b/src/LightApp/LightApp_VTKSelector.cxx @@ -21,6 +21,7 @@ #ifndef DISABLE_VTKVIEWER #include "SVTK_ViewModelBase.h" + #include "SVTK_ViewManager.h" #include "SVTK_Selector.h" #include "SVTK_ViewWindow.h" #include "SVTK_Functor.h" @@ -42,15 +43,10 @@ */ LightApp_SVTKDataOwner ::LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO, - const TColStd_IndexedMapOfInteger& theIds, - Selection_Mode theMode, - SALOME_Actor* theActor): + SUIT_Desktop* theDesktop ): LightApp_DataOwner( theIO ), - mySelectionMode(theMode), - myActor(theActor) -{ - myIds = theIds; // workaround - there is no constructor copy for the container -} + myDesktop( theDesktop ) +{} #endif /*! @@ -61,6 +57,51 @@ LightApp_SVTKDataOwner { } +/*! + \return active SVTK view window +*/ +SVTK_ViewWindow* +LightApp_SVTKDataOwner +::GetActiveViewWindow() const +{ + if(SUIT_ViewWindow* aViewWindow = myDesktop->activeWindow()) + return dynamic_cast(aViewWindow); + + return NULL; +} + +/*! + Gets dataowners ids list. +*/ +const TColStd_IndexedMapOfInteger& +LightApp_SVTKDataOwner +::GetIds() const +{ + if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){ + if(SVTK_Selector* aSelector = aViewWindow->GetSelector()){ + aSelector->GetIndex(IO(),myIds); + } + } + + return myIds; +} + +/*! + Gets selection mode. +*/ +Selection_Mode +LightApp_SVTKDataOwner +::GetMode() const +{ + if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){ + if(SVTK_Selector* aSelector = aViewWindow->GetSelector()){ + return aSelector->SelectionMode(); + } + } + + return -1; +} + /*! Gets actor pointer. */ @@ -68,7 +109,12 @@ SALOME_Actor* LightApp_SVTKDataOwner ::GetActor() const { - return myActor.GetPointer(); + if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){ + using namespace SVTK; + return Find(aViewWindow->getRenderer()->GetActors(),TIsSameIObject(IO())); + } + + return NULL; } #endif @@ -137,23 +183,16 @@ LightApp_VTKSelector ::getSelection( SUIT_DataOwnerPtrList& aList ) const { if(myViewer){ - if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){ - if(SVTK_ViewWindow* aView = dynamic_cast(aViewMgr->getActiveView())){ - if(SVTK_Selector* aSelector = aView->GetSelector()){ - Selection_Mode aMode = aSelector->SelectionMode(); - const SALOME_ListIO& aListIO = aSelector->StoredIObjects(); - SALOME_ListIteratorOfListIO anIter(aListIO); - for(; anIter.More(); anIter.Next()){ - Handle(SALOME_InteractiveObject) anIO = anIter.Value(); - if(anIO->hasEntry()){ - TColStd_IndexedMapOfInteger anIds; - aSelector->GetIndex(anIO,anIds); - SALOME_Actor* anActor = aSelector->GetActor(anIO); - if( !anActor ){ - using namespace SVTK; - anActor = Find(aView->getRenderer()->GetActors(),TIsSameIObject(anIO)); - } - aList.append(new LightApp_SVTKDataOwner(anIO,anIds,aMode,anActor)); + if(SUIT_ViewManager* aViewManager = myViewer->getViewManager()){ + if(SVTK_ViewManager* aViewMgr = dynamic_cast(aViewManager)){ + if(SVTK_ViewWindow* aView = dynamic_cast(aViewMgr->getActiveView())){ + if(SVTK_Selector* aSelector = aView->GetSelector()){ + const SALOME_ListIO& aListIO = aSelector->StoredIObjects(); + SALOME_ListIteratorOfListIO anIter(aListIO); + for(; anIter.More(); anIter.Next()){ + Handle(SALOME_InteractiveObject) anIO = anIter.Value(); + if(anIO->hasEntry()) + aList.append(new LightApp_SVTKDataOwner(anIO,aViewMgr->getDesktop())); } } } @@ -182,10 +221,7 @@ LightApp_VTKSelector aSelector->SetSelectionMode(anOwner->GetMode()); Handle(SALOME_InteractiveObject) anIO = anOwner->IO(); - if( anOwner->GetActor() ) - aSelector->AddIObject( anOwner->GetActor() ); - else - aSelector->AddIObject(anIO); + aSelector->AddIObject(anIO); anAppendList.Append(anIO); aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false); diff --git a/src/LightApp/LightApp_VTKSelector.h b/src/LightApp/LightApp_VTKSelector.h index 7c5dca73f..96582d555 100644 --- a/src/LightApp/LightApp_VTKSelector.h +++ b/src/LightApp/LightApp_VTKSelector.h @@ -23,6 +23,8 @@ #include "LightApp.h" #include "LightApp_DataOwner.h" +class SUIT_Desktop; + #ifndef DISABLE_VTKVIEWER #include #include @@ -31,6 +33,7 @@ #include "SALOME_InteractiveObject.hxx" #endif class SALOME_Actor; + class SVTK_ViewWindow; class SVTK_ViewModelBase; #endif @@ -43,30 +46,25 @@ class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner #ifndef DISABLE_VTKVIEWER #ifndef DISABLE_SALOMEOBJECT LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO, - const TColStd_IndexedMapOfInteger& theIds, - Selection_Mode theMode = ActorSelection, - SALOME_Actor* theActor = NULL); + SUIT_Desktop* theDesktop ); #endif virtual ~LightApp_SVTKDataOwner(); /*!Gets dataowners ids list.*/ - const TColStd_IndexedMapOfInteger& GetIds() const - { - return myIds; - } + const TColStd_IndexedMapOfInteger& GetIds() const; /*!Gets selection mode.*/ - Selection_Mode GetMode() const - { - return mySelectionMode; - } + Selection_Mode GetMode() const; + /*!Finds corresponding actor in the active viewer.*/ SALOME_Actor* GetActor() const; protected: - TColStd_IndexedMapOfInteger myIds; - Selection_Mode mySelectionMode; - vtkSmartPointer myActor; + mutable TColStd_IndexedMapOfInteger myIds; + + SVTK_ViewWindow* GetActiveViewWindow() const; + SUIT_Desktop* myDesktop; + #else LightApp_SVTKDataOwner( const QString& ); #endif @@ -74,7 +72,8 @@ class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner /*! - Provide vtk selection of data owners. + \class LightApp_VTKSelector + Custom selector to get/set selection from object browser */ class LIGHTAPP_EXPORT LightApp_VTKSelector : public SUIT_Selector { diff --git a/src/LightApp/Makefile.in b/src/LightApp/Makefile.in index c26adb882..89e3cc8d6 100755 --- a/src/LightApp/Makefile.in +++ b/src/LightApp/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : OCC team (OCN) # Module : LightApp @@ -135,7 +153,7 @@ RESOURCES_FILES = icon_about.png \ LightApp.xml CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(OCC_INCLUDES) \ - $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome + $(HDF5_INCLUDES) $(KERNEL_CXXFLAGS) ifneq ($(DISABLE_VTKVIEWER),yes) CPPFLAGS+= $(VTK_INCLUDES) @@ -171,7 +189,7 @@ ifneq ($(DISABLE_PYCONSOLE),yes) endif LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lSalomePrs \ - $(HDF5_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeHDFPersist + $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist ifneq ($(DISABLE_SALOMEOBJECT),yes) LIBS+= -lSalomeObject diff --git a/src/LightApp/resources/LightApp.xml b/src/LightApp/resources/LightApp.xml index cab85581e..2190a3cff 100644 --- a/src/LightApp/resources/LightApp.xml +++ b/src/LightApp/resources/LightApp.xml @@ -1,12 +1,6 @@ -
    - - - - - -
    + @@ -15,10 +9,18 @@
    +
    +
    + + + + +
    + @@ -31,48 +33,60 @@ - + +
    +
    + + + + + +
    +
    - - -
    +
    + + + +
    +
    + -
    - + +
    - - - - + + + + +
    - - + + +
    - - - - - - - + + + + + + + +
    - - -
    - -
    - - + + +
    diff --git a/src/LightApp/resources/LightApp_msg_en.po b/src/LightApp/resources/LightApp_msg_en.po index 09f901332..7971407b4 100644 --- a/src/LightApp/resources/LightApp_msg_en.po +++ b/src/LightApp/resources/LightApp_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -81,10 +99,10 @@ msgid "LightApp_Application::INF_CANCELLED" msgstr "Module activation cancelled" msgid "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" -msgstr "External browser \"%1\" can not show help page \"%2\"" +msgstr "External browser \"%1\" can not show help page \"%2\". Do you want to change it in preferences?" msgid "LightApp_Application::DEFINE_EXTERNAL_BROWSER" -msgstr "Define external browser in preferences" +msgstr "External browser is not found. Do you want to define it in preferences?" msgid "LightApp_Application::DATA_MODELS" msgstr "Data models" @@ -123,9 +141,6 @@ msgstr "Multi file save" msgid "LightApp_Application::PREF_ASCII_FILE" msgstr "ASCII save" -msgid "LightApp_Application::PREF_UNDO_LEVEL" -msgstr "Undo level" - msgid "LightApp_Application::PREF_STORE_POS" msgstr "Store positions of windows" @@ -263,7 +278,13 @@ msgid "LightApp_PreferencesDlg::WARNING" msgstr "Warning" msgid "LightApp_PreferencesDlg::DEFAULT_QUESTION" -msgstr "Do you want to retrieve default preferences?" +msgstr "Do you want to retrieve default preferences?" + +msgid "LightApp_PreferencesDlg::IMPORT_PREFERENCES" +msgstr "Import preferences" + +msgid "LightApp_PreferencesDlg::IMPORT_BTN_TEXT" +msgstr "Import" //======================================================================================= @@ -328,3 +349,4 @@ msgstr "Rename" msgid "LightApp_NameDlg::NAME_LBL" msgstr "Name: " + diff --git a/src/LogWindow/LogWindow.cxx b/src/LogWindow/LogWindow.cxx index 0b846b720..e0de7b355 100755 --- a/src/LogWindow/LogWindow.cxx +++ b/src/LogWindow/LogWindow.cxx @@ -36,7 +36,9 @@ #define DEFAULT_SEPARATOR "***" -//**************************************************************** +/*! + Converts rich text to plain text +*/ static QString plainText( const QString& richText ) { QString aText = richText; @@ -53,8 +55,9 @@ static QString plainText( const QString& richText ) return aText; } -//**************************************************************** - +/*! + Default constructor +*/ LogWindow::LogWindow( QWidget* parent ) : QFrame( parent ), SUIT_PopupClient() @@ -83,10 +86,16 @@ SUIT_PopupClient() createActions(); } +/*! + Destructor +*/ LogWindow::~LogWindow() { } +/*! + Custom event handler +*/ bool LogWindow::eventFilter( QObject* o, QEvent* e ) { if ( o == myView->viewport() && e->type() == QEvent::ContextMenu ) @@ -97,6 +106,10 @@ bool LogWindow::eventFilter( QObject* o, QEvent* e ) return QFrame::eventFilter( o, e ); } +/*! + Sets banner (title of message log) + \param banner - new title +*/ void LogWindow::setBanner( const QString& banner ) { myBanner = banner; @@ -104,6 +117,10 @@ void LogWindow::setBanner( const QString& banner ) clear( false ); } +/*! + Set separator (line printing between messages) + \param separator - new separator +*/ void LogWindow::setSeparator( const QString& separator ) { mySeparator = separator; @@ -111,6 +128,11 @@ void LogWindow::setSeparator( const QString& separator ) clear( false ); } +/*! + Puts message to log window + \param message - text of message + \addSeparator - if it is true, then separator is added to tail of message log +*/ void LogWindow::putMessage( const QString& message, bool addSeparator ) { myView->append( message ); @@ -124,6 +146,10 @@ void LogWindow::putMessage( const QString& message, bool addSeparator ) myView->scrollToBottom(); } +/*! + Clears message log + \param clearHistory - if it is true, then also history is cleared +*/ void LogWindow::clear( bool clearHistory ) { myView->clear(); @@ -139,6 +165,10 @@ void LogWindow::clear( bool clearHistory ) myBannerSize = 0; } +/*! + Saves log to file + \param fileName - name of file +*/ bool LogWindow::saveLog( const QString& fileName ) { QFile file( fileName ); @@ -160,6 +190,9 @@ bool LogWindow::saveLog( const QString& fileName ) return true; } +/*! + Creates actions +*/ void LogWindow::createActions() { QAction* a = new QAction( "", tr( "&Copy" ), 0, this ); @@ -183,6 +216,9 @@ void LogWindow::createActions() myActions.insert( SaveToFileId, a ); } +/*! + Redefined virtual method for popup filling +*/ void LogWindow::contextMenuPopup( QPopupMenu* popup ) { myActions[ CopyId ]->addTo( popup ); @@ -199,6 +235,9 @@ void LogWindow::contextMenuPopup( QPopupMenu* popup ) updateActions(); } +/*! + Updates enable status of actions +*/ void LogWindow::updateActions() { int paraFrom, paraTo, indexFrom, indexTo; @@ -212,6 +251,9 @@ void LogWindow::updateActions() myActions[ SaveToFileId ]->setEnabled( myHistory.count() > 0 ); } +/*! + SLOT: called if user click "Save" in popup +*/ void LogWindow::onSaveToFile() { SUIT_Application* app = SUIT_Session::session()->activeApplication(); @@ -233,17 +275,26 @@ void LogWindow::onSaveToFile() SUIT_MessageBox::error1( this, tr( "Error" ), tr( "Can't save file" ), tr( "OK" ) ); } +/*! + SLOT: called if user click "Select all" in popup +*/ void LogWindow::onSelectAll() { if ( myView ) myView->selectAll(); } +/*! + SLOT: called if user click "Clear" in popup +*/ void LogWindow::onClear() { clear( false ); } +/*! + SLOT: called if user click "Copy" in popup +*/ void LogWindow::onCopy() { if ( myView ) diff --git a/src/LogWindow/LogWindow.h b/src/LogWindow/LogWindow.h index 44001e068..c6aeeecc6 100755 --- a/src/LogWindow/LogWindow.h +++ b/src/LogWindow/LogWindow.h @@ -52,6 +52,10 @@ class QAction; class QTextBrowser; +/*! + \class LogWindow + Widget, showing logs message. Allows to show, to clear, to copy messages and to save then to file +*/ class LOGWINDOW_EXPORT LogWindow : public QFrame, public SUIT_PopupClient { Q_OBJECT diff --git a/src/LogWindow/Makefile.in b/src/LogWindow/Makefile.in index f4590c4c6..0d0c931f7 100755 --- a/src/LogWindow/Makefile.in +++ b/src/LogWindow/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : LogWindow diff --git a/src/OBJECT/Handle_SALOME_AISObject.hxx b/src/OBJECT/Handle_SALOME_AISObject.hxx index 98dede911..1fd37e08b 100755 --- a/src/OBJECT/Handle_SALOME_AISObject.hxx +++ b/src/OBJECT/Handle_SALOME_AISObject.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(AIS_InteractiveObject) + Smart pointer (handle) to AIS_InteractiveObject +*/ class Handle(AIS_InteractiveObject); class SALOME_AISObject; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISObject); +/*! + \class Handle(SALOME_AISObject) + Smart pointer (handle) to SALOME_AISObject +*/ class Handle(SALOME_AISObject) : public Handle(AIS_InteractiveObject) { public: inline void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Handle_SALOME_AISShape.hxx b/src/OBJECT/Handle_SALOME_AISShape.hxx index 65a1bc6d9..525fbada5 100755 --- a/src/OBJECT/Handle_SALOME_AISShape.hxx +++ b/src/OBJECT/Handle_SALOME_AISShape.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(AIS_Shape) + Smart pointer (handle) to AIS_Shape +*/ class Handle(AIS_Shape); class SALOME_AISShape; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISShape); +/*! + \class Handle(SALOME_AISShape) + Smart pointer (handle) to SALOME_AISShape +*/ class Handle(SALOME_AISShape) : public Handle(AIS_Shape) { public: inline void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Handle_SALOME_Filter.hxx b/src/OBJECT/Handle_SALOME_Filter.hxx index 49eb7b877..dc169db53 100644 --- a/src/OBJECT/Handle_SALOME_Filter.hxx +++ b/src/OBJECT/Handle_SALOME_Filter.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(MMgt_TShared) + Smart pointer (handle) to MMgt_TShared +*/ class Handle(MMgt_TShared); class SALOME_Filter; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_Filter); +/*! + \class Handle(SALOME_Filter) + Smart pointer (handle) to SALOME_Filter +*/ class Handle(SALOME_Filter) : public Handle(MMgt_TShared) { public: inline void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx index 767dfec3f..e4f3622fb 100755 --- a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx +++ b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(MMgt_TShared) + Smart pointer (handle) to MMgt_TShared +*/ class Handle(MMgt_TShared); class SALOME_InteractiveObject; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_InteractiveObject); +/*! + \class Handle(SALOME_InteractiveObject) + Smart pointer (handle) to SALOME_InteractiveObject +*/ class Handle(SALOME_InteractiveObject) : public Handle(MMgt_TShared) { public: void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx b/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx index 0df5e98be..986a4da6e 100644 --- a/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(TCollection_MapNode) + Smart pointer (handle) to TCollection_MapNode +*/ class Handle(TCollection_MapNode); class SALOME_ListNodeOfListIO; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_ListNodeOfListIO); +/*! + \class Handle(SALOME_ListNodeOfListIO) + Smart pointer (handle) to SALOME_ListNodeOfListIO +*/ class Handle(SALOME_ListNodeOfListIO) : public Handle(TCollection_MapNode) { public: void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Handle_SALOME_TypeFilter.hxx b/src/OBJECT/Handle_SALOME_TypeFilter.hxx index 4fdd91368..b41dc2bac 100644 --- a/src/OBJECT/Handle_SALOME_TypeFilter.hxx +++ b/src/OBJECT/Handle_SALOME_TypeFilter.hxx @@ -40,10 +40,18 @@ class Standard_Transient; class Handle_Standard_Type; +/*! + \class Handle(SALOME_Filter) + Smart pointer (handle) to SALOME_Filter +*/ class Handle(SALOME_Filter); class SALOME_TypeFilter; Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_TypeFilter); +/*! + \class Handle(SALOME_TypeFilter) + Smart pointer (handle) to SALOME_TypeFilter +*/ class Handle(SALOME_TypeFilter) : public Handle(SALOME_Filter) { public: inline void* operator new(size_t,void* anAddress) diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in index 9171c05f6..f992a298e 100755 --- a/src/OBJECT/Makefile.in +++ b/src/OBJECT/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. diff --git a/src/OBJECT/SALOME_AISShape.cxx b/src/OBJECT/SALOME_AISShape.cxx index dcd76be06..1bd77e3ba 100755 --- a/src/OBJECT/SALOME_AISShape.cxx +++ b/src/OBJECT/SALOME_AISShape.cxx @@ -29,6 +29,12 @@ //using namespace std; #include "SALOME_AISShape.ixx" -SALOME_AISShape::SALOME_AISShape(const TopoDS_Shape& shape): AIS_Shape(shape) { +/*! + Constructor + \param shape - TopoDS shape +*/ +SALOME_AISShape::SALOME_AISShape(const TopoDS_Shape& shape) +: AIS_Shape(shape) +{ } diff --git a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx index 4cab4c88e..8af01576f 100644 --- a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx +++ b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx @@ -46,10 +46,17 @@ #include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" #endif using namespace std; + +/*! + Destructor +*/ SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} +/*! + \return OCC Handle Type +*/ Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() { @@ -72,9 +79,9 @@ Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfIntege } -// DownCast method -// allow safe downcasting -// +/*! + DownCast method: allows safe downcasting +*/ const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) { Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) _anOtherObject; @@ -87,14 +94,26 @@ const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapN return _anOtherObject ; } + +/*! + \return OCC Handle dynamic Type +*/ const Handle(Standard_Type)& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::DynamicType() const { return STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) ; } + +/*! + \return true if other type is the same + \param AType - type to be checked +*/ Standard_Boolean SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); } +/*! + Destructor +*/ Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} #define TheKey Handle_SALOME_InteractiveObject #define TheKey_hxx "SALOME_InteractiveObject.hxx" diff --git a/src/OBJECT/SALOME_InteractiveObject.cxx b/src/OBJECT/SALOME_InteractiveObject.cxx index 7d60d59e6..bd7f5c4f8 100755 --- a/src/OBJECT/SALOME_InteractiveObject.cxx +++ b/src/OBJECT/SALOME_InteractiveObject.cxx @@ -34,6 +34,9 @@ #include "SALOME_InteractiveObject.ixx" +/*! + Default constructor +*/ SALOME_InteractiveObject::SALOME_InteractiveObject() { myEntry = ""; @@ -42,6 +45,12 @@ SALOME_InteractiveObject::SALOME_InteractiveObject() myReference = ""; } +/*! + Constructor + \param anEntry - entry of object + \param aComponentDataType - component data type name + \param aName - name of object +*/ SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry, const char* aComponentDataType, const char* aName): @@ -51,34 +60,62 @@ SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry, myReference("") {} +/*! + Sets entry + \param anEntry - new entry of object +*/ void SALOME_InteractiveObject::setEntry(const char* anEntry){ myEntry = anEntry; } +/*! + \return entry +*/ const char* SALOME_InteractiveObject::getEntry(){ return myEntry.c_str(); } +/*! + Sets component data type + \param aComponentDataType - component data type name +*/ void SALOME_InteractiveObject::setComponentDataType(const char* aComponentDataType){ myComponentDataType = aComponentDataType; } +/*! + \return component data type +*/ const char* SALOME_InteractiveObject::getComponentDataType(){ return myComponentDataType.c_str(); } +/*! + Sets name + \param aName - new name of object +*/ void SALOME_InteractiveObject::setName(const char* aName){ myName = aName; } +/*! + \return name +*/ const char* SALOME_InteractiveObject::getName(){ return myName.c_str(); } +/*! + \return true if entry isn't empty +*/ Standard_Boolean SALOME_InteractiveObject::hasEntry(){ return myEntry != ""; } +/*! + \return true if objects have same entries + \param anIO - other object +*/ Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_InteractiveObject)& anIO ){ if ( anIO->hasEntry() && this->hasEntry() ) { if ( myEntry == anIO->getEntry() ) @@ -88,6 +125,10 @@ Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_Interactiv return Standard_False; } +/*! + \return true if component data types are same + \param ComponentDataType - component data type to be checked +*/ Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* ComponentDataType){ if ( myComponentDataType == ComponentDataType ) return Standard_True; @@ -95,16 +136,26 @@ Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* Component return Standard_False; } +/*! + \return true if object has reference +*/ Standard_Boolean SALOME_InteractiveObject::hasReference() { return myReference != ""; } +/*! + \return reference +*/ const char* SALOME_InteractiveObject::getReference() { return myReference.c_str(); } +/*! + Sets reference + \param aReference - new reference +*/ void SALOME_InteractiveObject::setReference(const char* aReference) { myReference = aReference; diff --git a/src/OBJECT/SALOME_ListIO.hxx b/src/OBJECT/SALOME_ListIO.hxx index e028e243f..43cc9f8ff 100644 --- a/src/OBJECT/SALOME_ListIO.hxx +++ b/src/OBJECT/SALOME_ListIO.hxx @@ -55,6 +55,10 @@ class SALOME_ListNodeOfListIO; #include #endif +/*! + \class SALOME_ListIO + List of SALOME interactive objects +*/ class SALOME_ListIO { public: diff --git a/src/OBJECT/SALOME_ListNodeOfListIO.hxx b/src/OBJECT/SALOME_ListNodeOfListIO.hxx index 9aed956f8..7734399e4 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO.hxx @@ -47,7 +47,10 @@ class SALOME_InteractiveObject; class SALOME_ListIO; class SALOME_ListIteratorOfListIO; - +/*! + \class SALOME_ListNodeOfListIO + Auxiliary class, represents list node for SALOME_ListIO +*/ class SALOME_ListNodeOfListIO : public TCollection_MapNode { public: diff --git a/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx b/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx index 35f04d576..ba678a212 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx @@ -40,10 +40,16 @@ #include "SALOME_ListIteratorOfListIO.hxx" #endif using namespace std; + +/*! + Destructor +*/ SALOME_ListNodeOfListIO::~SALOME_ListNodeOfListIO() {} - +/*! + \return OCC Handle Type +*/ Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_() { @@ -66,9 +72,9 @@ Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_() } -// DownCast method -// allow safe downcasting -// +/*! + DownCast method, allows safe downcasting +*/ const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast(const Handle(Standard_Transient)& AnObject) { Handle(SALOME_ListNodeOfListIO) _anOtherObject; @@ -81,14 +87,26 @@ const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast( return _anOtherObject ; } + +/*! + \return OCC Handle dynamic Type +*/ const Handle(Standard_Type)& SALOME_ListNodeOfListIO::DynamicType() const { return STANDARD_TYPE(SALOME_ListNodeOfListIO) ; } + +/*! + \return true if other type is the same + \param AType - type to be checked +*/ Standard_Boolean SALOME_ListNodeOfListIO::IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(SALOME_ListNodeOfListIO) == AType || TCollection_MapNode::IsKind(AType)); } +/*! + Destructor +*/ Handle_SALOME_ListNodeOfListIO::~Handle_SALOME_ListNodeOfListIO() {} #define Item Handle_SALOME_InteractiveObject #define Item_hxx "SALOME_InteractiveObject.hxx" diff --git a/src/OBJECT/SALOME_TypeFilter.cxx b/src/OBJECT/SALOME_TypeFilter.cxx index 83f1d71ec..65b2cf9c6 100644 --- a/src/OBJECT/SALOME_TypeFilter.cxx +++ b/src/OBJECT/SALOME_TypeFilter.cxx @@ -30,9 +30,17 @@ #include "SALOME_InteractiveObject.hxx" using namespace std; +/*! + Constructor + \param TheKind - type of filter +*/ SALOME_TypeFilter::SALOME_TypeFilter(const Standard_CString TheKind): myKind(TheKind){} +/*! + \return true if object passes filter + \param anObj - object to be checked +*/ Standard_Boolean SALOME_TypeFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const { return anObj->isComponentType( myKind ); diff --git a/src/OCCViewer/Makefile.in b/src/OCCViewer/Makefile.in index 6eb3077b8..3e796c0a6 100755 --- a/src/OCCViewer/Makefile.in +++ b/src/OCCViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : OCCViewer diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.cxx b/src/OCCViewer/OCCViewer_ClippingDlg.cxx index c17bfd33d..b8b49e673 100644 --- a/src/OCCViewer/OCCViewer_ClippingDlg.cxx +++ b/src/OCCViewer/OCCViewer_ClippingDlg.cxx @@ -1,17 +1,33 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "OCCViewer_ClippingDlg.h" #include +#include #include "SUIT_Session.h" #include "SUIT_ViewWindow.h" #include "OCCViewer_ViewWindow.h" #include "OCCViewer_ViewPort3d.h" -//#include "utilities.h" - #include -#include -#include +//#include #include #include #include @@ -31,12 +47,17 @@ #include #include -//================================================================================= -// class : OCCViewer_ClippingDlg() -// purpose : -//================================================================================= +/*! + Constructor + \param view - view window + \param parent - parent widget + \param name - dialog name + \param modal - is this dialog modal + \param fl - flags +*/ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), myView( view ) +: QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), + myView( view ) { setCaption( tr( "Clipping" ) ); @@ -193,42 +214,50 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge myBusy = false; } -//================================================================================= -// function : ~ OCCViewer_ClippingDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= +/*! + Destructor + Destroys the object and frees any allocated resources +*/ OCCViewer_ClippingDlg::~ OCCViewer_ClippingDlg() { // no need to delete child widgets, Qt does it all for us } -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= +/*! + Custom handling of close event: erases preview +*/ void OCCViewer_ClippingDlg::closeEvent( QCloseEvent* e ) { erasePreview(); + + // Set the clipping plane back + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() && !myClippingPlane.IsNull() ) + aView3d->SetPlaneOn( myClippingPlane ); + + if (!myView->isCuttingPlane()) + myAction->setOn( false ); + QDialog::closeEvent( e ); } -//================================================================================= -// function : showEvent -// purpose : -//================================================================================= +/*! + Custom handling of show event: displays preview +*/ void OCCViewer_ClippingDlg::showEvent( QShowEvent* e ) { + ReserveClippingPlane(); + QDialog::showEvent( e ); onPreview( PreviewChB->isChecked() ); } -//================================================================================= -// function : hideEvent -// purpose : -//================================================================================= +/*! + Custom handling of hide event: erases preview +*/ void OCCViewer_ClippingDlg::hideEvent( QHideEvent* e ) { erasePreview(); @@ -236,21 +265,28 @@ void OCCViewer_ClippingDlg::hideEvent( QHideEvent* e ) } -//================================================================================= -// function : ClickOnClose() -// purpose : -//================================================================================= +/*! + SLOT on close button click: erases preview and rejects dialog +*/ void OCCViewer_ClippingDlg::ClickOnClose() { erasePreview(); + + // Set the clipping plane back + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() && !myClippingPlane.IsNull() ) + aView3d->SetPlaneOn( myClippingPlane ); + + if (!myView->isCuttingPlane()) + myAction->setOn( false ); + reject(); } -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= +/*! + SLOT on apply button click: sets cutting plane +*/ void OCCViewer_ClippingDlg::ClickOnApply() { qApp->processEvents(); @@ -261,15 +297,15 @@ void OCCViewer_ClippingDlg::ClickOnApply() SpinBox_Dx->value(), SpinBox_Dy->value(), SpinBox_Dz->value() ); QApplication::restoreOverrideCursor(); - + erasePreview(); + + ReserveClippingPlane(); } - -//================================================================================= -// function : onReset() -// purpose : -//================================================================================= +/*! + SLOT on reset button click: sets default values +*/ void OCCViewer_ClippingDlg::onReset() { myBusy = true; @@ -285,11 +321,9 @@ void OCCViewer_ClippingDlg::onReset() } } - -//================================================================================= -// function : onInvert() -// purpose : -//================================================================================= +/*! + SLOT on invert button click: inverts normal of cutting plane +*/ void OCCViewer_ClippingDlg::onInvert() { double Dx = SpinBox_Dx->value(); @@ -309,11 +343,9 @@ void OCCViewer_ClippingDlg::onInvert() } } - -//================================================================================= -// function : onModeChanged() -// purpose : -//================================================================================= +/*! + SLOT: called on mode changed +*/ void OCCViewer_ClippingDlg::onModeChanged( int mode ) { bool isUserMode = (mode==0); @@ -375,10 +407,9 @@ void OCCViewer_ClippingDlg::onModeChanged( int mode ) } -//================================================================ -// Function : displayPreview -// Purpose : -//================================================================ +/*! + Displays preview of clipping plane +*/ void OCCViewer_ClippingDlg::displayPreview() { if ( myBusy || !isValid() ) @@ -440,6 +471,9 @@ void OCCViewer_ClippingDlg::displayPreview() myPreviewPlane = new AIS_Plane( new Geom_Plane( aBasePnt, aNormal ) ); myPreviewPlane->SetSize( aSize, aSize ); + // Deactivate clipping planes + myView->getViewPort()->getView()->SetPlaneOff(); + ic->Display( myPreviewPlane, 1, -1, false ); ic->SetWidth( myPreviewPlane, 10, false ); ic->SetMaterial( myPreviewPlane, Graphic3d_NOM_PLASTIC, false ); @@ -450,10 +484,9 @@ void OCCViewer_ClippingDlg::displayPreview() } -//================================================================ -// Function : erasePreview -// Purpose : -//================================================================ +/*! + Erases preview of clipping plane +*/ void OCCViewer_ClippingDlg::erasePreview () { OCCViewer_Viewer* anOCCViewer = (OCCViewer_Viewer*)myView->getViewManager()->getViewModel(); @@ -473,10 +506,9 @@ void OCCViewer_ClippingDlg::erasePreview () } -//================================================================ -// Function : onValueChanged -// Purpose : -//================================================================ +/*! + SLOT: called on value changes (co-ordinates of point or normal) +*/ void OCCViewer_ClippingDlg::onValueChanged() { if ( PreviewChB->isChecked() ) @@ -487,10 +519,9 @@ void OCCViewer_ClippingDlg::onValueChanged() } -//================================================================ -// Function : onPreview -// Purpose : -//================================================================ +/*! + SLOT: called on preview check box toggled +*/ void OCCViewer_ClippingDlg::onPreview( bool on ) { erasePreview(); @@ -499,11 +530,24 @@ void OCCViewer_ClippingDlg::onPreview( bool on ) displayPreview(); } -//================================================================ -// Function : onPreview -// Purpose : -//================================================================ +/*! + \return true if plane parameters are valid +*/ bool OCCViewer_ClippingDlg::isValid() { return ( SpinBox_Dx->value()!=0 || SpinBox_Dy->value()!=0 || SpinBox_Dz->value()!=0 ); } + +/*! + Remember the current clipping plane +*/ +void OCCViewer_ClippingDlg::ReserveClippingPlane() +{ + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() ) + { + aView3d->InitActivePlanes(); + if ( aView3d->MoreActivePlanes() ) + myClippingPlane = aView3d->ActivePlane(); + } +} diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.h b/src/OCCViewer/OCCViewer_ClippingDlg.h index e46903a05..192668cdd 100644 --- a/src/OCCViewer/OCCViewer_ClippingDlg.h +++ b/src/OCCViewer/OCCViewer_ClippingDlg.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef OCCVIEWER_CLIPPINGDLG_H #define OCCVIEWER_CLIPPINGDLG_H @@ -6,6 +24,7 @@ #include #include +#include class QGroupBox; class QLabel; @@ -13,14 +32,15 @@ class QPushButton; class QComboBox; class QCheckBox; class QtxDblSpinBox; +class QtxAction; class OCCViewer_ViewWindow; -//================================================================================= -// class : OCCViewer_ClippingDlg -// purpose : -//================================================================================= +/*! + \class OCCViewer_ClippingDlg + \brief Dialog allowing to assign parameters of clipping plane +*/ class OCCViewer_ClippingDlg : public QDialog { Q_OBJECT @@ -28,6 +48,8 @@ class OCCViewer_ClippingDlg : public QDialog public: OCCViewer_ClippingDlg(OCCViewer_ViewWindow* , QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); ~OCCViewer_ClippingDlg(); + + void SetAction( QtxAction* theAction ) { myAction = theAction; } private : @@ -36,6 +58,7 @@ private : virtual void hideEvent ( QHideEvent * ); void displayPreview(); void erasePreview(); + void ReserveClippingPlane(); bool isValid(); @@ -67,8 +90,11 @@ private : OCCViewer_ViewWindow* myView; Handle(AIS_Plane) myPreviewPlane; + Handle(V3d_Plane) myClippingPlane; bool myBusy; + + QtxAction* myAction; private slots: void ClickOnApply(); diff --git a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx index a79d5f2c7..8092b1b6d 100755 --- a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx +++ b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ OCCViewer_CreateRestoreViewDlg::OCCViewer_CreateRestoreViewDlg( QWidget* aWin, OCCViewer_Viewer* curModel ) : QDialog( aWin ) { @@ -95,10 +98,17 @@ OCCViewer_CreateRestoreViewDlg::OCCViewer_CreateRestoreViewDlg( QWidget* aWin, O connect( theClearAll, SIGNAL( clicked() ), this, SLOT( clearList() ) ); } +/*! + Destructor +*/ OCCViewer_CreateRestoreViewDlg::~OCCViewer_CreateRestoreViewDlg() { } +/*! + Changes image in accordance with item + \param curItem - item contains info about view parameters +*/ void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem ) { if( curItem && myListBox->isEditEnabled() ) @@ -146,11 +156,17 @@ void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem ) } } +/*! + \return current view parameters (corresponding to current item) +*/ viewAspect OCCViewer_CreateRestoreViewDlg::currentItem() const { return myCurrentItem; } +/*! + Deletes selected items from list view +*/ void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems() { if( myListBox->count() && myListBox->isEditEnabled() ) @@ -185,6 +201,9 @@ void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems() } } +/*! + Clears list of view aspects +*/ void OCCViewer_CreateRestoreViewDlg::clearList() { myListBox->clear(); @@ -194,17 +213,27 @@ void OCCViewer_CreateRestoreViewDlg::clearList() myParametersMap.clear(); } +/*! + \return const reference to all view aspects +*/ const viewAspectList& OCCViewer_CreateRestoreViewDlg::parameters() const { return myParametersMap; } +/*! + Renames key of view aspect map in accordance with item name + \param anItem - item +*/ void OCCViewer_CreateRestoreViewDlg::editItemText( QListBoxItem* anItem ) { int index = anItem->listBox()->index( anItem ); myParametersMap[ index ].name = anItem->text().latin1(); } +/*! + Custom event filter +*/ bool OCCViewer_CreateRestoreViewDlg::eventFilter( QObject* anObj, QEvent* anEv ) { if( anEv->type() == QEvent::KeyPress ) @@ -234,6 +263,9 @@ bool OCCViewer_CreateRestoreViewDlg::eventFilter( QObject* anObj, QEvent* anEv ) return QWidget::eventFilter( anObj, anEv ); } +/*! + SLOT: called on OK click, emits dlgOk() and closes dialog +*/ void OCCViewer_CreateRestoreViewDlg::OKpressed() { emit dlgOk(); diff --git a/src/OCCViewer/OCCViewer_VService.cxx b/src/OCCViewer/OCCViewer_VService.cxx index 0c3deacf2..299dd6bcd 100755 --- a/src/OCCViewer/OCCViewer_VService.cxx +++ b/src/OCCViewer/OCCViewer_VService.cxx @@ -16,28 +16,6 @@ // // See http://www.salome-platform.org/ // -/*********************************************************************** - - FONCTION : - ---------- - Classe OCCViewer_VService : - - HISTORIQUE DES MODIFICATIONS : - -------------------------------- - 00-09-92 : GG ; Creation. - 25-02-98 : FMN ; PERF.27: Optimisation de la création d'une vue à partir d'une vue existante - - REMARQUES : - ----------- - -************************************************************************/ - -/*----------------------------------------------------------------------*/ -/* - * Includes - */ -//just to load the OpenGl shared library -//#include #include "OCCViewer_VService.h" #include diff --git a/src/OCCViewer/OCCViewer_ViewManager.cxx b/src/OCCViewer/OCCViewer_ViewManager.cxx index dedfc4a0d..7db1cc8a3 100755 --- a/src/OCCViewer/OCCViewer_ViewManager.cxx +++ b/src/OCCViewer/OCCViewer_ViewManager.cxx @@ -22,7 +22,9 @@ int OCCViewer_ViewManager::myMaxId = 0; -//***************************************************************/ +/*! + Constructor +*/ OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop, bool DisplayTrihedron ) : SUIT_ViewManager( study, theDesktop ) { @@ -30,19 +32,27 @@ OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* t setViewModel( new OCCViewer_Viewer( DisplayTrihedron ) ); } -//***************************************************************/ +/*! + Destructor +*/ OCCViewer_ViewManager::~OCCViewer_ViewManager() { } -//***************************************************************/ +/*! + Sets view name + \param theView - view to assign name +*/ void OCCViewer_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( tr( "OCC_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) ); } -//***************************************************************/ +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void OCCViewer_ViewManager::contextMenuPopup( QPopupMenu* popup ) { SUIT_ViewManager::contextMenuPopup( popup ); diff --git a/src/OCCViewer/OCCViewer_ViewModel.cxx b/src/OCCViewer/OCCViewer_ViewModel.cxx index 216c9ec84..d40b80568 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.cxx +++ b/src/OCCViewer/OCCViewer_ViewModel.cxx @@ -40,6 +40,10 @@ #include #include +/*! + Constructor + \param DisplayTrihedron - is trihedron displayed +*/ OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron ) : SUIT_ViewModel(), myBgColor( Qt::black ) @@ -92,22 +96,35 @@ myBgColor( Qt::black ) myMultiSelectionEnabled = true; } - +/*! + Destructor +*/ OCCViewer_Viewer::~OCCViewer_Viewer() { } +/*! + \return background color of viewer +*/ QColor OCCViewer_Viewer::backgroundColor() const { return myBgColor; } +/*! + Sets background color + \param c - new background color +*/ void OCCViewer_Viewer::setBackgroundColor( const QColor& c ) { if ( c.isValid() ) myBgColor = c; } +/*! + Start initialization of view window + \param view - view window to be initialized +*/ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view ) { if ( view ) { @@ -119,7 +136,10 @@ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view ) } } - +/*! + Creates new view window + \param theDesktop - main window of application +*/ SUIT_ViewWindow* OCCViewer_Viewer::createView( SUIT_Desktop* theDesktop ) { OCCViewer_ViewWindow* view = new OCCViewer_ViewWindow(theDesktop, this); @@ -127,7 +147,10 @@ SUIT_ViewWindow* OCCViewer_Viewer::createView( SUIT_Desktop* theDesktop ) return view; } -//********************************************************************* +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void OCCViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -143,15 +166,17 @@ void OCCViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) } } - -//********************************************************************* +/*! + SLOT: called on mouse button press, stores current mouse position as start point for transformations +*/ void OCCViewer_Viewer::onMousePress(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { myStartPnt.setX(theEvent->x()); myStartPnt.setY(theEvent->y()); } - -//********************************************************************* +/*! + SLOT: called on mouse move, processes transformation or hilighting +*/ void OCCViewer_Viewer::onMouseMove(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { if (!mySelectionEnabled) return; @@ -163,7 +188,9 @@ void OCCViewer_Viewer::onMouseMove(SUIT_ViewWindow* theWindow, QMouseEvent* theE } -//********************************************************************* +/*! + SLOT: called on mouse button release, finishes transformation or selection +*/ void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { if (!mySelectionEnabled) return; @@ -211,7 +238,10 @@ void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* t } -//********************************************************************* +/*! + Sets selection enabled status + \param isEnabled - new status +*/ void OCCViewer_Viewer::enableSelection(bool isEnabled) { mySelectionEnabled = isEnabled; @@ -228,7 +258,10 @@ void OCCViewer_Viewer::enableSelection(bool isEnabled) } } -//********************************************************************* +/*! + Sets multiselection enabled status + \param isEnabled - new status +*/ void OCCViewer_Viewer::enableMultiselection(bool isEnable) { myMultiSelectionEnabled = isEnable; @@ -245,7 +278,9 @@ void OCCViewer_Viewer::enableMultiselection(bool isEnable) } } -//********************************************************************* +/*! + Builds popup for occ viewer +*/ void OCCViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup) { thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) ); @@ -258,6 +293,9 @@ void OCCViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup) thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) ); } +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void OCCViewer_Viewer::onDumpView() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); @@ -265,7 +303,9 @@ void OCCViewer_Viewer::onDumpView() aView->onDumpView(); } -//********************************************************************* +/*! + SLOT: called if background color is to be changed changed, passes new color to view port +*/ void OCCViewer_Viewer::onChangeBgColor() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); @@ -281,21 +321,28 @@ void OCCViewer_Viewer::onChangeBgColor() aViewPort3d->setBackgroundColor(selColor); } -//********************************************************************* +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ void OCCViewer_Viewer::onShowToolbar() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); if ( aView ) aView->getToolBar()->show(); } -//********************************************************************* +/*! + Updates OCC 3D viewer +*/ void OCCViewer_Viewer::update() { if (!myV3dViewer.IsNull()) myV3dViewer->Update(); } -//********************************************************************* +/*! + \return objects selected in 3D viewer + \param theList - list to be filled with selected objects +*/ void OCCViewer_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList) { theList.Clear(); @@ -303,7 +350,10 @@ void OCCViewer_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList) theList.Append(myAISContext->SelectedInteractive()); } -//********************************************************************* +/*! + Selects objects in 3D viewer. Other selected objects are left as selected + \param theList - list objects to be selected +*/ void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList) { AIS_ListIteratorOfListOfInteractive aIt; @@ -312,47 +362,62 @@ void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList) myAISContext->UpdateCurrentViewer(); } -//********************************************************************* +/*! + Auxiliary method to emit signal selectionChanged() +*/ void OCCViewer_Viewer::performSelectionChanged() { emit selectionChanged(); } -//**************************************************************** - +/*! + SLOT, clears view aspects +*/ void OCCViewer_Viewer::onClearViewAspects() { clearViewAspects(); } -//**************************************************************** - +/*! + Clears view aspects +*/ void OCCViewer_Viewer::clearViewAspects() { myViewAspects.clear(); } -//**************************************************************** - +/*! + \return const reference to list of view aspects +*/ const viewAspectList& OCCViewer_Viewer::getViewAspects() { return myViewAspects; } -//**************************************************************** - +/*! + Appends new view aspect + \param aParams - new view aspects +*/ void OCCViewer_Viewer::appendViewAspect( const viewAspect& aParams ) { myViewAspects.append( aParams ); } -//**************************************************************** - +/*! + Replaces old view aspects by new ones + \param aViewList - list of new view aspects +*/ void OCCViewer_Viewer::updateViewAspects( const viewAspectList& aViewList ) { myViewAspects = aViewList; } +/*! + Hilights/unhilights object in viewer + \param obj - object to be updated + \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param update - update current viewer +*/ bool OCCViewer_Viewer::highlight( const Handle(AIS_InteractiveObject)& obj, bool hilight, bool update ) { @@ -372,6 +437,10 @@ bool OCCViewer_Viewer::highlight( const Handle(AIS_InteractiveObject)& obj, return false; } +/*! + Unhilights all objects in viewer + \param updateviewer - update current viewer +*/ bool OCCViewer_Viewer::unHighlightAll( bool updateviewer ) { if ( myAISContext->HasOpenedContext() ) @@ -381,6 +450,11 @@ bool OCCViewer_Viewer::unHighlightAll( bool updateviewer ) return false; } +/*! + \return true if object is in viewer or in collector + \param obj - object to be checked + \param onlyInViewer - search object only in viewer (so object must be displayed) +*/ bool OCCViewer_Viewer::isInViewer( const Handle(AIS_InteractiveObject)& obj, bool onlyInViewer ) { @@ -402,11 +476,21 @@ bool OCCViewer_Viewer::isInViewer( const Handle(AIS_InteractiveObject)& obj, return false; } +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool OCCViewer_Viewer::isVisible( const Handle(AIS_InteractiveObject)& obj ) { return myAISContext->IsDisplayed( obj ); } +/*! + Sets color of object + \param obj - object to be updated + \param color - new color + \param update - update current viewer +*/ void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj, const QColor& color, bool update ) @@ -424,6 +508,12 @@ void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj, myV3dViewer->Update(); } +/*! + Changes display mode of object + \param obj - object to be processed + \param mode - new display mode + \param update - update current viewer +*/ void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject)& obj, int mode, bool update ) { @@ -432,6 +522,12 @@ void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject) myV3dViewer->Update(); } +/*! + Changes transparency of object + \param obj - object to be processed + \param trans - new transparency + \param update - update current viewer +*/ void OCCViewer_Viewer::setTransparency( const Handle(AIS_InteractiveObject)& obj, float trans, bool update ) { @@ -441,17 +537,27 @@ void OCCViewer_Viewer::setTransparency( const Handle(AIS_InteractiveObject)& obj myV3dViewer->Update(); } -//**************************************************************** +/*! + Changes visibility of trihedron to opposite +*/ void OCCViewer_Viewer::toggleTrihedron() { setTrihedronShown( !isTrihedronVisible() ); } +/*! + \return true if trihedron is visible +*/ bool OCCViewer_Viewer::isTrihedronVisible() const { return !myTrihedron.IsNull() && !myAISContext.IsNull() && myAISContext->IsDisplayed( myTrihedron ); } +/*! + Sets visibility state of trihedron + \param on - new state +*/ + void OCCViewer_Viewer::setTrihedronShown( const bool on ) { if ( myTrihedron.IsNull() ) @@ -463,6 +569,9 @@ void OCCViewer_Viewer::setTrihedronShown( const bool on ) myAISContext->Erase( myTrihedron ); } +/*! + \return trihedron size +*/ int OCCViewer_Viewer::trihedronSize() const { int sz = 0; @@ -471,12 +580,21 @@ int OCCViewer_Viewer::trihedronSize() const return sz; } +/*! + Changes trihedron size + \param sz - new size +*/ void OCCViewer_Viewer::setTrihedronSize( const int sz ) { if ( !myTrihedron.IsNull() ) myTrihedron->SetSize( sz ); } +/*! + Set number of isolines + \param u - u-isolines (first parametric co-ordinate) + \param v - v-isolines (second parametric co-ordinate) +*/ void OCCViewer_Viewer::setIsos( const int u, const int v ) { Handle(AIS_InteractiveContext) ic = getAISContext(); @@ -487,6 +605,11 @@ void OCCViewer_Viewer::setIsos( const int u, const int v ) ic->SetIsoNumber( v, AIS_TOI_IsoV ); } +/*! + \return number of isolines + \param u - to return u-isolines (first parametric co-ordinate) + \param v - to return v-isolines (second parametric co-ordinate) +*/ void OCCViewer_Viewer::isos( int& u, int& v ) const { Handle(AIS_InteractiveContext) ic = getAISContext(); diff --git a/src/OCCViewer/OCCViewer_ViewPort.cxx b/src/OCCViewer/OCCViewer_ViewPort.cxx index 72f2fc5f3..f3ea1e0b5 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort.cxx @@ -16,12 +16,7 @@ // // See http://www.salome-platform.org/ // -/*************************************************************************** -** Class: OCCViewer_ViewPort -** Descr: Visualisation canvas of SUIT-based application -** Module: SUIT -** Created: UI team, 05.09.00 -****************************************************************************/ + #if !defined WNT #define QT_CLEAN_NAMESPACE /* avoid definition of INT32 and INT8 */ #endif @@ -59,6 +54,9 @@ struct CMapEntry XStandardColormap scmap; }; +/*! + Constructor +*/ CMapEntry::CMapEntry() { cmap = 0; @@ -66,6 +64,9 @@ CMapEntry::CMapEntry() scmap.colormap = 0; } +/*! + Destructor +*/ CMapEntry::~CMapEntry() { if ( alloc ) diff --git a/src/OCCViewer/OCCViewer_ViewPort.h b/src/OCCViewer/OCCViewer_ViewPort.h index 5c60ad502..fb4208667 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.h +++ b/src/OCCViewer/OCCViewer_ViewPort.h @@ -35,6 +35,10 @@ class QPainter; class OCCViewer_ViewSketcher; class OCCViewer_ViewTransformer; +/*! + \class OCCViewer_ViewPort + Visualisation canvas of SUIT-based application +*/ class OCCVIEWER_EXPORT OCCViewer_ViewPort : public QWidget { Q_OBJECT diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.cxx b/src/OCCViewer/OCCViewer_ViewPort3d.cxx index badfe3cf3..66225b69f 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort3d.cxx @@ -16,12 +16,6 @@ // // See http://www.salome-platform.org/ // -/*************************************************************************** -** Class: OCCViewer_ViewPort3D -** Descr: Visualisation canvas with CasCade 3D view -** Module: OCCViewer -** Created: UI team, 05.09.00 -****************************************************************************/ #include "OCCViewer_ViewPort3d.h" @@ -259,6 +253,10 @@ void OCCViewer_ViewPort3d::setBackgroundColor( const QColor& color ) } } +/*! + Set animation mode + \param theDegenerated - degenerated mode +*/ void OCCViewer_ViewPort3d::setAnimationMode(bool theDegenerated) { if ( !activeView().IsNull() ) @@ -348,6 +346,8 @@ void OCCViewer_ViewPort3d::endRotation() if ( !myDegenerated ) activeView()->SetDegenerateModeOff(); activeView()->ZFitAll(1.); + activeView()->SetZSize(0.); + activeView()->Update(); } } @@ -400,6 +400,7 @@ void OCCViewer_ViewPort3d::fitAll( bool keepScale, bool withZ, bool upd ) Standard_Real margin = 0.01; activeView()->FitAll( margin, withZ, upd ); + activeView()->SetZSize(0.); } /*! diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index dbd2618b6..d9ca9d427 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -17,8 +17,7 @@ // See http://www.salome-platform.org/ // // OCCViewer_ViewWindow.cxx: implementation of the OCCViewer_ViewWindow class. -// -////////////////////////////////////////////////////////////////////// + #include "OCCViewer_ViewWindow.h" #include "OCCViewer_ViewModel.h" @@ -162,10 +161,11 @@ const char* imageCrossCursor[] = { "................................"}; -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor + \param theDesktop - main window of application + \param theModel - OCC 3D viewer +*/ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel) : SUIT_ViewWindow(theDesktop) { @@ -176,7 +176,9 @@ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_V myClippingDlg = 0; } -//**************************************************************** +/*! + Initialization of view window +*/ void OCCViewer_ViewWindow::initLayout() { myViewPort = new OCCViewer_ViewPort3d( this, myModel->getViewer3d(), V3d_ORTHOGRAPHIC ); @@ -196,7 +198,10 @@ void OCCViewer_ViewWindow::initLayout() createToolBar(); } -//**************************************************************** +/*! + \return type of operation by states of mouse and keyboard buttons + \param theEvent - mouse event +*/ OCCViewer_ViewWindow::OperationType OCCViewer_ViewWindow::getButtonState(QMouseEvent* theEvent) { OperationType aOp = NOTHING; @@ -213,7 +218,9 @@ OCCViewer_ViewWindow::OperationType OCCViewer_ViewWindow::getButtonState(QMouseE return aOp; } -//**************************************************************** +/*! + Custom event handler +*/ bool OCCViewer_ViewWindow::eventFilter(QObject* watched, QEvent* e) { if ( watched == myViewPort ) { @@ -259,13 +266,18 @@ bool OCCViewer_ViewWindow::eventFilter(QObject* watched, QEvent* e) return SUIT_ViewWindow::eventFilter(watched, e); } +/*! + Updates state of enable draw mode state +*/ void OCCViewer_ViewWindow::updateEnabledDrawMode() { if ( myModel ) myEnableDrawMode = myModel->isSelectionEnabled() && myModel->isMultiSelectionEnabled(); } -//**************************************************************** +/*! + Handler of mouse press event +*/ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent) { myStartX = theEvent->x(); @@ -324,7 +336,9 @@ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent) } -//**************************************************************** +/*! + Starts zoom operation, sets corresponding cursor +*/ void OCCViewer_ViewWindow::activateZoom() { if ( !transformRequested() && !myCursorIsHand ) @@ -339,9 +353,8 @@ void OCCViewer_ViewWindow::activateZoom() } -//**************************************************************** /*! - Activates 'panning' transformation + Starts panning operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activatePanning() { @@ -355,9 +368,8 @@ void OCCViewer_ViewWindow::activatePanning() } } -//**************************************************************** /*! - Activates 'rotation' transformation + Starts rotation operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activateRotation() { @@ -372,7 +384,9 @@ void OCCViewer_ViewWindow::activateRotation() } } -//**************************************************************** +/*! + Starts global panning operation, sets corresponding cursor +*/ void OCCViewer_ViewWindow::activateGlobalPanning() { Handle(V3d_View) aView3d = myViewPort->getView(); @@ -388,9 +402,8 @@ void OCCViewer_ViewWindow::activateGlobalPanning() } } -//**************************************************************** /*! - Activates 'fit' transformation + Starts fit operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activateWindowFit() { @@ -405,9 +418,8 @@ void OCCViewer_ViewWindow::activateWindowFit() } } -//**************************************************************** /*! - Sets the active operation 'op' + Stores which viewer operation is requesting */ void OCCViewer_ViewWindow::setTransformRequested ( OperationType op ) { @@ -416,7 +428,9 @@ void OCCViewer_ViewWindow::setTransformRequested ( OperationType op ) } -//****************************************************************/ +/*! + Handler of mouse move event +*/ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent) { myCurrX = theEvent->x(); @@ -468,7 +482,9 @@ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent) } } -//****************************************************************/ +/*! + Handler of mouse release event +*/ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent) { switch ( myOperation ) { @@ -524,10 +540,9 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent) } } -//**************************************************************** /*! - Sets the viewport to its initial state - ( no transformations in process etc. ) + Sets the viewport to its initial state + ( no transformations in process etc. ) */ void OCCViewer_ViewWindow::resetState() { @@ -549,7 +564,9 @@ void OCCViewer_ViewWindow::resetState() } -//****************************************************************/ +/*! + Draws rectangle by starting and current points +*/ void OCCViewer_ViewWindow::drawRect() { QPainter aPainter(myViewPort); @@ -562,7 +579,9 @@ void OCCViewer_ViewWindow::drawRect() myRect = aRect; } -//****************************************************************/ +/*! + Creates actions of OCC view window +*/ void OCCViewer_ViewWindow::createActions() { if (!myActionsMap.isEmpty()) return; @@ -671,12 +690,12 @@ void OCCViewer_ViewWindow::createActions() connect(aAction, SIGNAL(activated()), this, SLOT(onCloneView())); myActionsMap[ CloneId ] = aAction; - aAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ), + myClippingAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ), tr( "MNU_CLIPPING" ), 0, this); - aAction->setStatusTip(tr("DSC_CLIPPING")); - aAction->setToggleAction( true ); - connect(aAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool ))); - myActionsMap[ ClippingId ] = aAction; + myClippingAction->setStatusTip(tr("DSC_CLIPPING")); + myClippingAction->setToggleAction( true ); + connect(myClippingAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool ))); + myActionsMap[ ClippingId ] = myClippingAction; aAction = new QtxAction(tr("MNU_SHOOT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_SHOOT_VIEW" ) ), tr( "MNU_SHOOT_VIEW" ), 0, this); @@ -699,7 +718,9 @@ void OCCViewer_ViewWindow::createActions() } } -//**************************************************************** +/*! + Creates toolbar of OCC view window +*/ void OCCViewer_ViewWindow::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -738,13 +759,17 @@ void OCCViewer_ViewWindow::createToolBar() myActionsMap[ClippingId]->addTo(myToolBar); } -//**************************************************************** +/*! + Processes operation fit all +*/ void OCCViewer_ViewWindow::onViewFitAll() { myViewPort->fitAll(); } -//**************************************************************** +/*! + Processes transformation "front view" +*/ void OCCViewer_ViewWindow::onFrontView() { emit vpTransformationStarted ( FRONTVIEW ); @@ -753,7 +778,9 @@ void OCCViewer_ViewWindow::onFrontView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "back view" +*/ void OCCViewer_ViewWindow::onBackView() { emit vpTransformationStarted ( BACKVIEW ); @@ -762,7 +789,9 @@ void OCCViewer_ViewWindow::onBackView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "top view" +*/ void OCCViewer_ViewWindow::onTopView() { emit vpTransformationStarted ( TOPVIEW ); @@ -771,7 +800,9 @@ void OCCViewer_ViewWindow::onTopView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "bottom view" +*/ void OCCViewer_ViewWindow::onBottomView() { emit vpTransformationStarted ( BOTTOMVIEW ); @@ -780,7 +811,9 @@ void OCCViewer_ViewWindow::onBottomView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "left view" +*/ void OCCViewer_ViewWindow::onLeftView() { emit vpTransformationStarted ( LEFTVIEW ); @@ -789,7 +822,9 @@ void OCCViewer_ViewWindow::onLeftView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "right view" +*/ void OCCViewer_ViewWindow::onRightView() { emit vpTransformationStarted ( RIGHTVIEW ); @@ -798,7 +833,9 @@ void OCCViewer_ViewWindow::onRightView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void OCCViewer_ViewWindow::onResetView() { emit vpTransformationStarted( RESETVIEW ); @@ -809,21 +846,27 @@ void OCCViewer_ViewWindow::onResetView() myViewPort->getView()->Update(); } -//**************************************************************** +/*! + Processes transformation "fit all" +*/ void OCCViewer_ViewWindow::onFitAll() { emit vpTransformationStarted( FITALLVIEW ); myViewPort->fitAll(); } -//**************************************************************** +/*! + Creates one more window with same content +*/ void OCCViewer_ViewWindow::onCloneView() { SUIT_ViewWindow* vw = myManager->createViewWindow(); vw->show(); } -//**************************************************************** +/*! + SLOT: called if clipping operation is activated, enables/disables of clipping plane +*/ void OCCViewer_ViewWindow::onClipping( bool on ) { SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); @@ -835,7 +878,10 @@ void OCCViewer_ViewWindow::onClipping( bool on ) if ( on ) { if ( !myClippingDlg ) - myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop ); + { + myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop ); + myClippingDlg->SetAction( myClippingAction ); + } if ( !myClippingDlg->isShown() ) myClippingDlg->show(); @@ -848,13 +894,17 @@ void OCCViewer_ViewWindow::onClipping( bool on ) } } -//**************************************************************** +/*! + Stores view parameters +*/ void OCCViewer_ViewWindow::onMemorizeView() { myModel->appendViewAspect( getViewParams() ); } -//**************************************************************** +/*! + Restores view parameters +*/ void OCCViewer_ViewWindow::onRestoreView() { OCCViewer_CreateRestoreViewDlg* aDlg = new OCCViewer_CreateRestoreViewDlg( centralWidget(), myModel ); @@ -865,8 +915,9 @@ void OCCViewer_ViewWindow::onRestoreView() performRestoring( aDlg->currentItem() ); } -//**************************************************************** - +/*! + Restores view parameters from structure viewAspect +*/ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem ) { Handle(V3d_View) aView3d = myViewPort->getView(); @@ -883,30 +934,50 @@ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem ) myRestoreFlag = 0; } +/*! + Sets restore flag +*/ void OCCViewer_ViewWindow::setRestoreFlag() { myRestoreFlag = 1; } -//**************************************************************** +/*! + SLOT: called when action "show/hide" trihedron is activated +*/ void OCCViewer_ViewWindow::onTrihedronShow() { myModel->toggleTrihedron(); } -//**************************************************************** +/*! + \return QImage, containing all scene rendering in window +*/ QImage OCCViewer_ViewWindow::dumpView() { QPixmap px = QPixmap::grabWindow( myViewPort->winId() ); return px.convertToImage(); } - + +/*! + Sets parameters of cutting plane + \param on - is cutting plane enabled + \param x - x-position of plane point + \param y - y-position of plane point + \param z - z-position of plane point + \param dx - x-coordinate of plane normal + \param dy - y-coordinate of plane normal + \param dz - z-coordinate of plane normal +*/ void OCCViewer_ViewWindow::setCuttingPlane( bool on, const double x, const double y, const double z, const double dx, const double dy, const double dz ) { + Handle(V3d_View) view = myViewPort->getView(); + if ( view.IsNull() ) + return; + if ( on ) { Handle(V3d_Viewer) viewer = myViewPort->getViewer(); - Handle(V3d_View) view = myViewPort->getView(); // try to use already existing plane or create a new one Handle(V3d_Plane) clipPlane; @@ -922,37 +993,28 @@ void OCCViewer_ViewWindow::setCuttingPlane( bool on, const double x, const dou pln.Coefficients( a, b, c, d ); clipPlane->SetPlane( a, b, c, d ); - Handle(V3d_View) v = myViewPort->getView(); - v->SetPlaneOn( clipPlane ); - v->Update(); - v->Redraw(); + view->SetPlaneOn( clipPlane ); } - else { - Handle(V3d_View) view = myViewPort->getView(); + else + view->SetPlaneOff(); + + view->Update(); + view->Redraw(); +} - // try to use already existing plane - Handle(V3d_Plane) clipPlane; - view->InitActivePlanes(); - if ( view->MoreActivePlanes() ) - clipPlane = view->ActivePlane(); - - Handle(V3d_View) v = myViewPort->getView(); - if ( !clipPlane.IsNull() ) - v->SetPlaneOff( clipPlane ); - else - v->SetPlaneOff(); - - v->Update(); - v->Redraw(); - } - - Handle(V3d_View) v = myViewPort->getView(); - v->Update(); - v->Redraw(); +/*! + \return true if there is at least one cutting plane +*/ +bool OCCViewer_ViewWindow::isCuttingPlane() +{ + Handle(V3d_View) view = myViewPort->getView(); + view->InitActivePlanes(); + return (view->MoreActivePlanes()); } -/*! The method returns the visual parameters of this view as a viewAspect object - */ +/*! + The method returns the visual parameters of this view as a viewAspect object +*/ viewAspect OCCViewer_ViewWindow::getViewParams() const { double centerX, centerY, projX, projY, projZ, twist; @@ -988,8 +1050,9 @@ viewAspect OCCViewer_ViewWindow::getViewParams() const } -/*! The method returns the visual parameters of this view as a formated string - */ +/*! + The method returns the visual parameters of this view as a formated string +*/ QString OCCViewer_ViewWindow::getVisualParameters() { viewAspect params = getViewParams(); @@ -1000,8 +1063,9 @@ QString OCCViewer_ViewWindow::getVisualParameters() return retStr; } -/* The method restors visual parameters of this view from a formated string - */ +/*! + The method restors visual parameters of this view from a formated string +*/ void OCCViewer_ViewWindow::setVisualParameters( const QString& parameters ) { QStringList paramsLst = QStringList::split( '*', parameters, true ); diff --git a/src/OCCViewer/OCCViewer_ViewWindow.h b/src/OCCViewer/OCCViewer_ViewWindow.h index b6bda965a..439b40cd6 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.h +++ b/src/OCCViewer/OCCViewer_ViewWindow.h @@ -63,6 +63,8 @@ public: 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); + bool isCuttingPlane(); + virtual QString getVisualParameters(); virtual void setVisualParameters( const QString& parameters ); @@ -151,6 +153,7 @@ protected: private: OCCViewer_ClippingDlg* myClippingDlg; + QtxAction* myClippingAction; }; diff --git a/src/OCCViewer/resources/OCCViewer_msg_en.po b/src/OCCViewer/resources/OCCViewer_msg_en.po index b856572ac..681d3d5dd 100755 --- a/src/OCCViewer/resources/OCCViewer_msg_en.po +++ b/src/OCCViewer/resources/OCCViewer_msg_en.po @@ -161,10 +161,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - - msgid "OCCViewer_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." diff --git a/src/ObjBrowser/Makefile.in b/src/ObjBrowser/Makefile.in index cdb715d69..b7039368b 100755 --- a/src/ObjBrowser/Makefile.in +++ b/src/ObjBrowser/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : ObjectBrowser diff --git a/src/ObjBrowser/OB_Browser.cxx b/src/ObjBrowser/OB_Browser.cxx index dd6012af0..3b408284a 100755 --- a/src/ObjBrowser/OB_Browser.cxx +++ b/src/ObjBrowser/OB_Browser.cxx @@ -37,8 +37,8 @@ #include /*! - Class: OB_Browser::ToolTip - Descr: Tool tip for OB_Browser. + \class OB_Browser::ToolTip + Tool tip for OB_Browser. */ class OB_Browser::ToolTip : public QToolTip @@ -53,16 +53,28 @@ private: OB_Browser* myBrowser; }; +/*! + Constructor +*/ OB_Browser::ToolTip::ToolTip( OB_Browser* b, QWidget* p ) : QToolTip( p ), myBrowser( b ) { } +/*! + Destructor +*/ OB_Browser::ToolTip::~ToolTip() { } +/*! + It is called when there is a possibility that a tool tip + should be shown and must decide whether there is a tool tip for the point + in the widget that this QToolTip object relates to. + \param pos - point co-ordinates +*/ void OB_Browser::ToolTip::maybeTip( const QPoint& pos ) { if ( !parentWidget() || !myBrowser || !myBrowser->isShowToolTips() ) @@ -88,11 +100,11 @@ void OB_Browser::ToolTip::maybeTip( const QPoint& pos ) typedef SUIT_DataObject* ObjPtr; typedef OB_ListItem* ItemPtr; + /*! - Class: OB_BrowserSync - Descr: Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items + \class OB_BrowserSync + Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items */ - class OB_BrowserSync { public: @@ -112,11 +124,18 @@ private: }; +/*! + Constructor +*/ OB_BrowserSync::OB_BrowserSync( OB_Browser* ob ) : myBrowser( ob ) { } +/*! + \return true if item must be updated + \param item - item to be checked +*/ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const { bool update = false; @@ -124,7 +143,8 @@ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const SUIT_DataObject* obj = item->dataObject(); if ( obj ) { // 1. check text - update = ( item->text( 0 ) != obj->name() ); + update = ( item->text( 0 ) != obj->name() ) || myBrowser->needToUpdateTexts( item ); + if ( !update ) { // 2. check pixmap (compare serialNumber()-s) QPixmap objPix = obj->icon(); @@ -147,14 +167,26 @@ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const return update; } +/*! + Updates item + \param p - item +*/ void OB_BrowserSync::updateItem( const ItemPtr& p ) const { if ( p && needUpdate( p ) ) { // printf( "--- needUpdate for %s = true ---\n", p->text( 0 ).latin1() ); + myBrowser->updateText( p ); p->update(); } } +/*! + Creates item by SUIT object + \param src - corresponding SUIT object + \param parent - parent for item + \param after - previous sibling for item + \param prepend - item must be added to start of children list +*/ ItemPtr OB_BrowserSync::createItem( const ObjPtr& src, const ItemPtr& parent, const ItemPtr& after, const bool prepend ) const @@ -165,6 +197,10 @@ ItemPtr OB_BrowserSync::createItem( const ObjPtr& src, return i; } +/*! + Deletes object with all children + \param i - item +*/ void OB_BrowserSync::deleteItemWithChildren( const ItemPtr& i ) const { if( myBrowser && myBrowser->myItems.contains( i->dataObject() ) ) @@ -174,21 +210,39 @@ void OB_BrowserSync::deleteItemWithChildren( const ItemPtr& i ) const } } +/*! + \return true if objects correspond each other at all + \param p - suit object + \param q - object browser item +*/ bool OB_BrowserSync::isEqual( const ObjPtr& p, const ItemPtr& q ) const { - return ( !p && !q ) || ( p && q && q->dataObject()==p ); + bool isRoot = p==myBrowser->getRootObject() && !q, + isEq = p && q && q->dataObject()==p; + return isRoot || ( !p && !q ) || isEq; } +/*! + \return null suit object +*/ ObjPtr OB_BrowserSync::nullSrc() const { return 0; } +/*! + \return null item +*/ ItemPtr OB_BrowserSync::nullTrg() const { return 0; } +/*! + Fills list with children of SUIT object + \param p - SUIT object + \param ch - list to be filled +*/ void OB_BrowserSync::children( const ObjPtr& p, QValueList& ch ) const { DataObjectList l; @@ -201,9 +255,14 @@ void OB_BrowserSync::children( const ObjPtr& p, QValueList& ch ) const } } +/*! + Fills list with children of item + \param p - item + \param ch - list to be filled +*/ void OB_BrowserSync::children( const ItemPtr& p, QValueList& ch ) const { - for( QListViewItem* item = p->firstChild(); item; item = item->nextSibling() ) + for( QListViewItem* item = p ? p->firstChild() : myBrowser->listView()->firstChild(); item; item = item->nextSibling() ) { ItemPtr p = dynamic_cast( item ); if( p ) @@ -211,6 +270,10 @@ void OB_BrowserSync::children( const ItemPtr& p, QValueList& ch ) const } } +/*! + \return parent of item + \param p - item +*/ ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const { return p ? dynamic_cast( p->parent() ) : 0; @@ -218,10 +281,8 @@ ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const /*! - Class: OB_Browser - Descr: Hierarchical tree object browser. + Constructor */ - OB_Browser::OB_Browser( QWidget* parent, SUIT_DataObject* root ) : QFrame( parent ), @@ -257,17 +318,27 @@ myRootDecorated( true ) setModified(); } +/*! + Destructor +*/ OB_Browser::~OB_Browser() { myItems.clear(); delete myTooltip; } +/*! + \return true if root is decorated by + +*/ bool OB_Browser::rootIsDecorated() const { return myRootDecorated; } +/*! + Sets state "root is recorated" + \param decor - new value of state +*/ void OB_Browser::setRootIsDecorated( const bool decor ) { if ( decor == rootIsDecorated() ) @@ -277,11 +348,18 @@ void OB_Browser::setRootIsDecorated( const bool decor ) updateTree( 0, false ); } +/*! + \return number of levels to be auto opened on update tree +*/ int OB_Browser::autoOpenLevel() const { return myAutoOpenLevel; } +/*! + Changes number of levels to be auto opened on update tree + \param level - new number of levels +*/ void OB_Browser::setAutoOpenLevel( const int level ) { if ( myAutoOpenLevel == level ) @@ -292,41 +370,69 @@ void OB_Browser::setAutoOpenLevel( const int level ) autoOpenBranches(); } +/*! + \return state "are tooltips shown" +*/ bool OB_Browser::isShowToolTips() { return myShowToolTips; } +/*! + Sets new value of state "are tooltips shown" + \param theDisplay - new value +*/ void OB_Browser::setShowToolTips( const bool theDisplay ) { myShowToolTips = theDisplay; } +/*! + \return true if object browser automatically updates tree after SUIT object removing +*/ bool OB_Browser::isAutoUpdate() const { return myAutoUpdate; } +/*! + Sets new value of "auto update": whether object browser automatically updates tree after SUIT object removing +*/ void OB_Browser::setAutoUpdate( const bool on ) { myAutoUpdate = on; } +/*! + \return true if object browser must delete old tree on setRootObject(), replaceTree() + \sa setRootObject(), replaceTree() +*/ bool OB_Browser::isAutoDeleteObjects() const { return myAutoDelObjs; } +/*! + Sets whether object browser must delete old tree on setRootObject(), replaceTree() + \sa setRootObject(), replaceTree() +*/ void OB_Browser::setAutoDeleteObjects( const bool on ) { myAutoDelObjs = on; } +/*! + \return root SUIT object of browser +*/ SUIT_DataObject* OB_Browser::getRootObject() const { return myRoot; } +/*! + Sets new root SUIT object of browser + \param theRoot - new root object +*/ void OB_Browser::setRootObject( SUIT_DataObject* theRoot ) { DataObjectKey curKey; @@ -365,6 +471,9 @@ void OB_Browser::setRootObject( SUIT_DataObject* theRoot ) emit selectionChanged(); } +/*! + \return number of selected items +*/ int OB_Browser::numberOfSelected() const { int count = 0; @@ -377,6 +486,9 @@ int OB_Browser::numberOfSelected() const return count; } +/*! + \return list of selected objects +*/ DataObjectList OB_Browser::getSelected() const { DataObjectList lst; @@ -384,6 +496,9 @@ DataObjectList OB_Browser::getSelected() const return lst; } +/*! + Fills list with selected objects +*/ void OB_Browser::getSelected( DataObjectList& theObjList ) const { theObjList.clear(); @@ -402,6 +517,12 @@ void OB_Browser::getSelected( DataObjectList& theObjList ) const } } +/*! + Sets selected object + \param theObject - new selected object + \param append - if it is true, then other selected objects are left as selected, + otherwise only 'theObject' will be selected +*/ void OB_Browser::setSelected( const SUIT_DataObject* theObject, const bool append ) { DataObjectList lst; @@ -409,6 +530,12 @@ void OB_Browser::setSelected( const SUIT_DataObject* theObject, const bool appen setSelected( lst, append ); } +/*! + Sets selected objects + \param theObjLst - new selected objects + \param append - if it is true, then other selected objects are left as selected, + otherwise only 'theObjLst' will be selected +*/ void OB_Browser::setSelected( const DataObjectList& theObjLst, const bool append ) { QListView* lv = listView(); @@ -468,6 +595,10 @@ void OB_Browser::setSelected( const DataObjectList& theObjLst, const bool append } } +/*! + \return true if item corresponding to object is opened + \param theObject - object to be checked +*/ bool OB_Browser::isOpen( SUIT_DataObject* theObject ) const { bool res = false; @@ -476,12 +607,21 @@ bool OB_Browser::isOpen( SUIT_DataObject* theObject ) const return res; } +/*! + Sets opened state of item + \param theObject - object corresponding to item + \param theOpen - new opened state +*/ void OB_Browser::setOpen( SUIT_DataObject* theObject, const bool theOpen ) { if ( listView() ) listView()->setOpen( listViewItem( theObject ), theOpen ); } +/*! + \return SUIT object correspondint to item at position 'pos' + \param pos - position +*/ SUIT_DataObject* OB_Browser::dataObjectAt( const QPoint& pos ) const { SUIT_DataObject* obj = 0; @@ -493,21 +633,41 @@ SUIT_DataObject* OB_Browser::dataObjectAt( const QPoint& pos ) const return obj; } +/*! + \return filter of list view +*/ OB_Filter* OB_Browser::filter() const { return myView->filter(); } +/*! + Changes filter of list view + \param f - new filter +*/ void OB_Browser::setFilter( OB_Filter* f ) { myView->setFilter( f ); } +/*! + Adds new column to list view + \param label - title of column + \param id - id of column + \param width - width of column +*/ int OB_Browser::addColumn( const QString& label, const int id, const int width ) { return addColumn( QIconSet(), label, id, width ); } +/*! + Adds new column to list view + \param icon - icon of column + \param label - title of column + \param id - id of column + \param width - width of column +*/ int OB_Browser::addColumn( const QIconSet& icon, const QString& label, const int id, const int width ) { QListView* lv = listView(); @@ -539,6 +699,10 @@ int OB_Browser::addColumn( const QIconSet& icon, const QString& label, const int return theId; } +/*! + Removes column + \param id - id of column +*/ void OB_Browser::removeColumn( const int id ) { QListView* lv = listView(); @@ -558,11 +722,20 @@ void OB_Browser::removeColumn( const int id ) updateText(); } +/*! + Sets title of first column (name column) + \param label - new title +*/ void OB_Browser::setNameTitle( const QString& label ) { setNameTitle( QIconSet(), label ); } +/*! + Sets title and icon of first column (name column) + \param icon - new icon + \param label - new title +*/ void OB_Browser::setNameTitle( const QIconSet& icon, const QString& label ) { QListView* lv = listView(); @@ -575,11 +748,22 @@ void OB_Browser::setNameTitle( const QIconSet& icon, const QString& label ) lv->setColumnText( 0, icon, label ); } +/*! + Sets title of column + \param id - column id + \param label - new column title +*/ void OB_Browser::setColumnTitle( const int id, const QString& label ) { setColumnTitle( id, QIconSet(), label ); } +/*! + Sets title and icon of column + \param id - column id + \param icon - new column icon + \param label - new column title +*/ void OB_Browser::setColumnTitle( const int id, const QIconSet& icon, const QString& label ) { QListView* lv = listView(); @@ -592,11 +776,18 @@ void OB_Browser::setColumnTitle( const int id, const QIconSet& icon, const QStri lv->setColumnText( myColumnIds[id], icon, label ); } +/*! + \return title of first column (name column) +*/ QString OB_Browser::nameTitle() const { return myView->columnText( 0 ); } +/*! + \return title of first column (name column) + \param id - column id +*/ QString OB_Browser::columnTitle( const int id ) const { QString txt; @@ -605,25 +796,44 @@ QString OB_Browser::columnTitle( const int id ) const return txt; } +/*! + \return true if column is visible + \param id - column id +*/ bool OB_Browser::isColumnVisible( const int id ) const { return myColumnIds.contains( id ) && myView->isShown( myColumnIds[id] ); } +/*! + Sets visibility of column + \param id - column id + \param on - new visibility state +*/ void OB_Browser::setColumnShown( const int id, const bool on ) { if ( !myColumnIds.contains( id ) ) return; myView->setShown( myColumnIds[id], on ); + if( !on ) + myView->setColumnWidthMode( myColumnIds[id], QListView::Manual ); } +/*! + Sets global width mode + \param mode - new width mode +*/ void OB_Browser::setWidthMode( QListView::WidthMode mode ) { for ( int i = 0, n = myView->columns(); i < n; i++ ) - myView->setColumnWidthMode( i, mode ); + if( mode!=QListView::Maximum || myView->columnWidth( i )>0 ) + myView->setColumnWidthMode( i, mode ); } +/*! + \return list of columns ids +*/ QValueList OB_Browser::columns() const { QValueList lst; @@ -632,6 +842,10 @@ QValueList OB_Browser::columns() const return lst; } +/*! + \return true if it is possible to show/hide column by popup + \param id - column id +*/ bool OB_Browser::appropriateColumn( const int id ) const { bool res = false; @@ -640,6 +854,11 @@ bool OB_Browser::appropriateColumn( const int id ) const return res; } +/*! + Sets "appropriate state": is it possible to show/hide column by popup + \param id - column id + \param on - new state +*/ void OB_Browser::setAppropriateColumn( const int id, const bool on ) { if ( !myColumnIds.contains( id ) ) @@ -648,6 +867,12 @@ void OB_Browser::setAppropriateColumn( const int id, const bool on ) myView->setAppropriate( myColumnIds[id], on ); } +/*! + Updates tree + \param obj - start object + \param autoOpen - to open automatically branches of autoOpenLevel() + \sa autoOpenLevel() +*/ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen ) { // QTime t1 = QTime::currentTime(); @@ -679,6 +904,9 @@ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen ) // qDebug( QString( "update tree time = %1 msecs" ).arg( t1.msecsTo( t2 ) ) ); } +/*! + Replaces part of tree starting at object 'src' by tree starting at object 'trg' +*/ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) { if ( !src || !trg || src == trg || src->root() != getRootObject() ) @@ -719,6 +947,10 @@ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) emit selectionChanged(); } +/*! + Updates view + \param startObj - start object +*/ void OB_Browser::updateView( SUIT_DataObject* startObj ) { QListView* lv = listView(); @@ -728,39 +960,13 @@ void OB_Browser::updateView( SUIT_DataObject* startObj ) if ( !startObj || startObj->root() != getRootObject() ) return; + //qDebug( "updateView:" ); + //startObj->dump(); + if ( startObj == myRoot ) { - DataObjectList ch; - myRoot->children( ch ); - - ItemMap exist; - QListViewItem* st = lv->firstChild(); - for( ; st; st = st->nextSibling() ) - { - OB_ListItem* ob_item = dynamic_cast( st ); - exist.insert( ob_item->dataObject(), ob_item ); - } - - SUIT_DataObject* local_root = ch.first(); - for( ; local_root; local_root = ch.next() ) - { - OB_BrowserSync sync( this ); - OB_ListItem* local_item = dynamic_cast( listViewItem( local_root ) ); - synchronize( local_root, local_item, sync ); - exist[local_root] = 0; - } - - ItemMap::const_iterator anIt = exist.begin(), aLast = exist.end(); - for( ; anIt!=aLast; anIt++ ) - { - if( anIt.data() ) // exist[local_root]==1 -> this local root was NOT in data model, should be removed - { - removeReferences( anIt.data() ); - OB_ListItem* item = dynamic_cast( anIt.data() ); - if( item && myItems.contains( item->dataObject() ) ) - delete anIt.data(); - } - } + OB_BrowserSync sync( this ); + synchronize( myRoot, 0, sync ); } else { @@ -770,6 +976,14 @@ void OB_Browser::updateView( SUIT_DataObject* startObj ) } } +/*! + Creates new list item + \return new item + \param o - corresponding SUIT object + \param parent - parent item + \param after - item after that new item must be added + \param prepend - new item must be added as first +*/ QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem* parent, QListViewItem* after, const bool prepend ) { @@ -855,6 +1069,9 @@ QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem* return item; } +/*! + Adjusts width by root item +*/ void OB_Browser::adjustWidth() { if ( !listView() ) @@ -865,6 +1082,10 @@ void OB_Browser::adjustWidth() adjustWidth( listView()->firstChild() ); } +/*! + Adjusts width by item + \param item +*/ void OB_Browser::adjustWidth( QListViewItem* item ) { while ( item ) @@ -876,6 +1097,10 @@ void OB_Browser::adjustWidth( QListViewItem* item ) } } +/*! + \return SUIT object corresponding to item + \param item +*/ SUIT_DataObject* OB_Browser::dataObject( const QListViewItem* item ) const { SUIT_DataObject* obj = 0; @@ -888,6 +1113,10 @@ SUIT_DataObject* OB_Browser::dataObject( const QListViewItem* item ) const return obj; } +/*! + \return item corresponding to SUIT object + \param obj - SUIT object +*/ QListViewItem* OB_Browser::listViewItem( const SUIT_DataObject* obj ) const { QListViewItem* item = 0; @@ -898,11 +1127,17 @@ QListViewItem* OB_Browser::listViewItem( const SUIT_DataObject* obj ) const return item; } +/*! + \return list view of object browser +*/ QListView* OB_Browser::listView() const { return myView; } +/*! + \remove all items referencing current (through data objects) +*/ void OB_Browser::removeReferences( QListViewItem* item ) { if ( !item ) @@ -920,6 +1155,9 @@ void OB_Browser::removeReferences( QListViewItem* item ) } } +/*! + Connects all children to SLOT onDestroyed +*/ void OB_Browser::createConnections( SUIT_DataObject* obj ) { if ( !obj ) @@ -934,6 +1172,9 @@ void OB_Browser::createConnections( SUIT_DataObject* obj ) it.current()->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); } +/*! + Disconnects all children from SLOT onDestroyed +*/ void OB_Browser::removeConnections( SUIT_DataObject* obj ) { if ( !obj ) @@ -948,6 +1189,13 @@ void OB_Browser::removeConnections( SUIT_DataObject* obj ) it.current()->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); } +/*! + Stores states (opened, selected) of current tree items + \return current item + \param selObjs, selKeys - maps of selected objects + \param openObjs, openKeys - maps of opened objects + \param curKey - map of current objects +*/ SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& openObjs, DataObjectKeyMap& selKeys, DataObjectKeyMap& openKeys, DataObjectKey& curKey ) const @@ -977,6 +1225,12 @@ SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& return curObj; } +/*! + Restores states (opened, selected) of current tree items + \param selObjs, selKeys - maps of selected objects + \param openObjs, openKeys - maps of opened objects + \param curKey - map of current objects +*/ void OB_Browser::restoreState( const DataObjectMap& selObjs, const DataObjectMap& openObjs, const SUIT_DataObject* curObj, const DataObjectKeyMap& selKeys, const DataObjectKeyMap& openKeys, const DataObjectKey& curKey ) @@ -1036,11 +1290,17 @@ void OB_Browser::restoreState( const DataObjectMap& selObjs, const DataObjectMap lv->blockSignals( block ); } +/*! + Creates object key by tree item +*/ OB_Browser::DataObjectKey OB_Browser::objectKey( QListViewItem* i ) const { return objectKey( dataObject( i ) ); } +/*! + Creates object key by SUIT object +*/ OB_Browser::DataObjectKey OB_Browser::objectKey( SUIT_DataObject* obj ) const { if ( !obj ) @@ -1049,6 +1309,9 @@ OB_Browser::DataObjectKey OB_Browser::objectKey( SUIT_DataObject* obj ) const return DataObjectKey( obj->key() ); } +/*! + Custom key press event handler, updates tree by F5 +*/ void OB_Browser::keyPressEvent( QKeyEvent* e ) { if ( e->key() == Qt::Key_F5 ) @@ -1057,6 +1320,9 @@ void OB_Browser::keyPressEvent( QKeyEvent* e ) QFrame::keyPressEvent( e ); } +/*! + SLOT: called if action "Expand all" is activated +*/ void OB_Browser::onExpand() { DataObjectList selected; @@ -1065,16 +1331,28 @@ void OB_Browser::onExpand() expand( listViewItem( itr.current() ) ); } +/*! + SLOT: called if action "Show/hide column" is activated by popup +*/ void OB_Browser::onColumnVisible( int id ) { setColumnShown( id, !isColumnVisible( id ) ); } +/*! + SLOT: called if SUIT object is destroyed +*/ void OB_Browser::onDestroyed( SUIT_DataObject* obj ) { removeObject( obj ); } +/*! + SLOT: called on finish of drag-n-drop operation + \param items - dragged items + \param item - destination (item on that they were dropped) + \param action - QDropEvent::Action +*/ void OB_Browser::onDropped( QPtrList items, QListViewItem* item, int action ) { SUIT_DataObject* obj = dataObject( item ); @@ -1093,6 +1371,9 @@ void OB_Browser::onDropped( QPtrList items, QListViewItem* item, emit dropped( lst, obj, action ); } +/*! + Updates texts of items +*/ void OB_Browser::updateText() { if ( myColumnIds.isEmpty() ) @@ -1113,6 +1394,26 @@ void OB_Browser::updateText() } } +/*! + \return true if item must be updated + \param item - item to be checked +*/ +bool OB_Browser::needToUpdateTexts( QListViewItem* item ) const +{ + SUIT_DataObject* obj = dataObject( item ); + if ( !obj ) + return false; + + for( QMap::const_iterator it = myColumnIds.begin(); it != myColumnIds.end(); ++it ) + if( item->text( it.data() ) != obj->text( it.key() ) ) + return true; + return false; +} + +/*! + Updates texts of item + \param item - item to be updated +*/ void OB_Browser::updateText( QListViewItem* item ) { SUIT_DataObject* obj = dataObject( item ); @@ -1123,6 +1424,9 @@ void OB_Browser::updateText( QListViewItem* item ) item->setText( it.data(), obj->text( it.key() ) ); } +/*! + Custom event filter +*/ bool OB_Browser::eventFilter( QObject* o, QEvent* e ) { if ( o == myView && e->type() == QEvent::ContextMenu ) @@ -1146,6 +1450,10 @@ bool OB_Browser::eventFilter( QObject* o, QEvent* e ) return QFrame::eventFilter( o, e ); } +/*! + Adds custom actions to popup + \param menu - popup menu +*/ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) { /* QValueList cols; @@ -1184,6 +1492,9 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) } } +/*! + Expands item with all it's children +*/ void OB_Browser::expand( QListViewItem* item ) { if ( !item ) @@ -1194,6 +1505,9 @@ void OB_Browser::expand( QListViewItem* item ) expand( child ); } +/*! + \return true if item or one of it's children isn't opened +*/ bool OB_Browser::hasClosed( QListViewItem* item ) const { if ( !item ) @@ -1209,6 +1523,11 @@ bool OB_Browser::hasClosed( QListViewItem* item ) const return has; } +/*! + Removes SUIT object + \param obj - SUIT object to be removed + \param autoUpd - auto tree updating +*/ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd ) { if ( !obj ) @@ -1249,6 +1568,10 @@ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd ) delete item; } +/*! + Opens branches from 1 to autoOpenLevel() + \sa autoOpenLevel() +*/ void OB_Browser::autoOpenBranches() { int level = autoOpenLevel(); @@ -1264,6 +1587,11 @@ void OB_Browser::autoOpenBranches() } } +/*! + Opens branch + \param item + \param level +*/ void OB_Browser::openBranch( QListViewItem* item, const int level ) { if ( level < 1 ) @@ -1277,12 +1605,18 @@ void OB_Browser::openBranch( QListViewItem* item, const int level ) } } +/*! + SLOT: called on double click on item, emits signal +*/ void OB_Browser::onDoubleClicked( QListViewItem* item ) { if ( item ) emit doubleClicked( dataObject( item ) ); } +/*! + Stores time of last modification +*/ void OB_Browser::setModified() { myModifiedTime = clock(); diff --git a/src/ObjBrowser/OB_Browser.h b/src/ObjBrowser/OB_Browser.h index a6e3cd421..b0c592830 100755 --- a/src/ObjBrowser/OB_Browser.h +++ b/src/ObjBrowser/OB_Browser.h @@ -39,6 +39,12 @@ class OB_Filter; class OB_ListView; class OB_ListItem; +/*! + \class OB_Browser + Represents object browser. Allows to get/set selection, + to drag-n-drop of objects, to determine item by SUIT object and + vice versa +*/ class OB_EXPORT OB_Browser : public QFrame, public SUIT_PopupClient { Q_OBJECT @@ -162,6 +168,7 @@ private: void removeObject( SUIT_DataObject*, const bool = true ); void updateText( QListViewItem* ); + bool needToUpdateTexts( QListViewItem* ) const; DataObjectKey objectKey( QListViewItem* ) const; DataObjectKey objectKey( SUIT_DataObject* ) const; diff --git a/src/ObjBrowser/OB_Filter.cxx b/src/ObjBrowser/OB_Filter.cxx index 1a9fda941..43517540e 100644 --- a/src/ObjBrowser/OB_Filter.cxx +++ b/src/ObjBrowser/OB_Filter.cxx @@ -18,10 +18,16 @@ // #include "OB_Filter.h" +/*! + Default constructor +*/ OB_Filter::OB_Filter() { } +/*! + Destructor +*/ OB_Filter::~OB_Filter() { } diff --git a/src/ObjBrowser/OB_Filter.h b/src/ObjBrowser/OB_Filter.h index 3570eb06d..60ceaadff 100644 --- a/src/ObjBrowser/OB_Filter.h +++ b/src/ObjBrowser/OB_Filter.h @@ -23,6 +23,11 @@ class SUIT_DataObject; +/*! + \class OB_Filter + Base class for ObjectBrowser filter. + Filters selected objects by some condition. +*/ class OB_EXPORT OB_Filter { public: diff --git a/src/ObjBrowser/OB_ListItem.cxx b/src/ObjBrowser/OB_ListItem.cxx index 49ad75741..1147ae5da 100755 --- a/src/ObjBrowser/OB_ListItem.cxx +++ b/src/ObjBrowser/OB_ListItem.cxx @@ -29,10 +29,8 @@ using namespace std; /*! - Class: ListItem - Descr: base template class + Constructor */ - template ListItemF::ListItemF( T* theT, SUIT_DataObject* obj ) : myT( theT ), @@ -40,6 +38,9 @@ myObject( obj ) { } +/*! + Paints item +*/ template void ListItemF::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align ) { @@ -67,6 +68,9 @@ void ListItemF::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align //myT.paintCell( p, colorGrp, c, itemW, align ); } +/*! + Paints focused item +*/ template void ListItemF::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r ) { @@ -75,6 +79,10 @@ void ListItemF::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r ) //myT.paintFocus( p, cg, rect ); } +/*! + Set selection of item + \param s - selected state +*/ template void ListItemF::setSel( bool s ) { @@ -88,6 +96,9 @@ void ListItemF::setSel( bool s ) //myT.setSelected( s ); } +/*! + Updates name and pixmap of item +*/ template void ListItemF::update() { @@ -119,10 +130,8 @@ void ListItemF::update() } /*! - Class: OB_ListItem - Descr: List view item for OB_Browser. + Constructor */ - OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent ) : ListItemF( this, obj ), QListViewItem(parent) @@ -130,6 +139,9 @@ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent ) : ListItemF( this, obj ), QListViewItem(parent) @@ -137,6 +149,9 @@ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after ) : ListItemF( this, obj), QListViewItem(parent, after ) @@ -144,6 +159,9 @@ QListViewItem(parent, after ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after ) : ListItemF( this,obj), QListViewItem(parent, after ) @@ -151,16 +169,29 @@ QListViewItem(parent, after ) update(); } +/*! + Destructor +*/ OB_ListItem::~OB_ListItem() { } +/*! + Sets selection state of item + \param s - new state +*/ void OB_ListItem::setSelected( bool s ) { setSel( s ); QListViewItem::setSelected( s ); } +/*! + Paints focus + \param p - painter + \param cg - color group + \param r - focus rectangle +*/ void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ) { QColorGroup col_group( cg ); @@ -173,6 +204,14 @@ void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r QListViewItem::paintFocus( p, col_group, R ); } +/*! + Paints item + \param p - painter + \param cg - color group + \param c - not used + \param w - width of item + \param align - alignment +*/ void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) { QColorGroup col_group( cg ); @@ -182,19 +221,30 @@ void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, i if ( listView() && !listView()->allColumnsShowFocus() ) W = width( p->fontMetrics(), listView(), c ); - QListViewItem::paintCell( p, col_group, c, W, align ); + QListViewItem::paintCell( p, col_group, c, min( W, w ), align ); } +/*! + \return custom RTTI info +*/ int OB_ListItem::RTTI() { return 1000; } +/*! + \return custom RTTI info +*/ int OB_ListItem::rtti() const { return RTTI(); } +/*! + Sets item text + \param column - column index + \param text - new text +*/ void OB_ListItem::setText( int column, const QString& text ) { QListViewItem::setText( column, text ); @@ -207,10 +257,8 @@ void OB_ListItem::setText( int column, const QString& text ) } /*! - Class: OB_CheckListItem - Descr: Check list view item for OB_Browser. + Constructor */ - OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, Type type ) : ListItemF( this, obj), QCheckListItem( parent, "", type ) @@ -218,6 +266,9 @@ QCheckListItem( parent, "", type ) update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, Type type ) : ListItemF( this, obj), QCheckListItem( parent, "", type ) @@ -225,6 +276,9 @@ QCheckListItem( parent, "", type ) update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, Type type ) : ListItemF( this, obj), #if defined(QT_VERSION) && QT_VERSION >= 0x030101 @@ -236,6 +290,9 @@ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QLi update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, Type type ) : ListItemF( this, obj), #if defined(QT_VERSION) && QT_VERSION >= 0x030101 @@ -247,16 +304,29 @@ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, update(); } +/*! + Destructor +*/ OB_CheckListItem::~OB_CheckListItem() { } +/*! + Sets selection state of item + \param s - new state +*/ void OB_CheckListItem::setSelected( bool s ) { setSel( s ); QCheckListItem::setSelected( s ); } +/*! + Paints focus + \param p - painter + \param cg - color group + \param r - focus rectangle +*/ void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ) { QColorGroup col_group( cg ); @@ -269,6 +339,14 @@ void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRe QCheckListItem::paintFocus( p, col_group, R ); } +/*! + Paints item + \param p - painter + \param cg - color group + \param c - not used + \param w - width of item + \param align - alignment +*/ void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) { QColorGroup col_group( cg ); @@ -278,19 +356,28 @@ void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int if ( listView() && !listView()->allColumnsShowFocus() ) W = width( p->fontMetrics(), listView(), c ); - QCheckListItem::paintCell( p, col_group, c, W, align ); + QCheckListItem::paintCell( p, col_group, c, min( W, w ), align ); } +/*! + \return custom RTTI info +*/ int OB_CheckListItem::RTTI() { return OB_ListItem::RTTI() + 1; } +/*! + \return custom RTTI info +*/ int OB_CheckListItem::rtti() const { return RTTI(); } +/*! + SLOT: called if checked state is changed, changes corresponding state of SUIT object +*/ void OB_CheckListItem::stateChange( bool on ) { QCheckListItem::stateChange( on ); diff --git a/src/ObjBrowser/OB_ListItem.h b/src/ObjBrowser/OB_ListItem.h index 112c3c8c9..3960fc141 100755 --- a/src/ObjBrowser/OB_ListItem.h +++ b/src/ObjBrowser/OB_ListItem.h @@ -26,10 +26,10 @@ class SUIT_DataObject; -/* - base template class for ListViewItems and CheckListItems +/*! + \class ListItemF + Base template class for ListViewItems and CheckListItems */ - template class ListItemF { public: @@ -57,10 +57,10 @@ protected: T* myT; }; -/* - ListViewItem class +/*! + \class OB_ListItem + Provides custom list item for Object Browser tree */ - class OB_EXPORT OB_ListItem : public ListItemF, public QListViewItem { public: @@ -82,10 +82,10 @@ public: static int RTTI(); }; -/* - CheckListItem class +/*! + \class OB_CheckListItem + Provides custom list item with check box */ - class OB_EXPORT OB_CheckListItem : public ListItemF, public QCheckListItem { public: diff --git a/src/ObjBrowser/OB_ListView.cxx b/src/ObjBrowser/OB_ListView.cxx index 53d62602f..98fb97d26 100755 --- a/src/ObjBrowser/OB_ListView.cxx +++ b/src/ObjBrowser/OB_ListView.cxx @@ -25,28 +25,44 @@ #include +/*! + Constructor +*/ OB_ListView::OB_ListView( QWidget* parent, const char* name, WFlags f ) : QtxListView( parent, name, f ), myFilter( 0 ) { } +/*! + Constructor +*/ OB_ListView::OB_ListView( const int state, QWidget* parent, const char* name, WFlags f ) : QtxListView( state, parent, name, f ), myFilter( 0 ) { } +/*! + Destructor +*/ OB_ListView::~OB_ListView() { delete myFilter; } +/*! + \return filter +*/ OB_Filter* OB_ListView::filter() const { return myFilter; } +/*! + Changes filter + \param f - new filter +*/ void OB_ListView::setFilter( OB_Filter* f ) { if ( myFilter == f ) @@ -56,6 +72,9 @@ void OB_ListView::setFilter( OB_Filter* f ) myFilter = f; } +/*! + \return true if item passes filter +*/ bool OB_ListView::isOk( QListViewItem* item ) const { bool ok = true; @@ -65,6 +84,9 @@ bool OB_ListView::isOk( QListViewItem* item ) const return ok; } +/*! + Creates new drag object +*/ QDragObject* OB_ListView::dragObject() { myItems.clear(); @@ -76,11 +98,17 @@ QDragObject* OB_ListView::dragObject() return new QTextDrag( "", this ); } +/*! + Custom drag enter event filter +*/ void OB_ListView::dragEnterEvent( QDragEnterEvent* e ) { e->accept(); } +/*! + Custom drag move event filter +*/ void OB_ListView::dragMoveEvent( QDragMoveEvent* e ) { QListViewItem* item = dropItem( e ); @@ -94,6 +122,9 @@ void OB_ListView::dragMoveEvent( QDragMoveEvent* e ) e->accept( false ); } +/*! + Custom drop event filter +*/ void OB_ListView::dropEvent( QDropEvent* e ) { QListViewItem* item = dropItem( e ); @@ -105,6 +136,9 @@ void OB_ListView::dropEvent( QDropEvent* e ) myItems.clear(); } +/*! + Custom key press event filter +*/ void OB_ListView::keyPressEvent( QKeyEvent* ke ) { if ( ( ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Minus ) && ke->state() & ControlButton ) @@ -118,6 +152,10 @@ void OB_ListView::keyPressEvent( QKeyEvent* ke ) QtxListView::keyPressEvent( ke ); } +/*! + Finds item, in that dragged objects are dropped by QDropEvent + \return tree item +*/ QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const { QListViewItem* item = 0; @@ -127,6 +165,10 @@ QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const return item; } +/*! + \return SUIT object by tree item + \param item - tree item +*/ SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const { if ( !item ) @@ -142,6 +184,10 @@ SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const return obj; } +/*! + \return true if it is possible to drop into item + \param item - tree item to be checked +*/ bool OB_ListView::isDropAccepted( QListViewItem* item ) const { bool res = true; @@ -152,6 +198,11 @@ bool OB_ListView::isDropAccepted( QListViewItem* item ) const return res; } +/*! + \return true if it is possible to drop one item into other + \param drag - dragged item + \param drop - destination item +*/ bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) const { SUIT_DataObject* dragObj = dataObject( drag ); @@ -163,6 +214,11 @@ bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) con return dropObj->isDropAccepted( dragObj ); } +/*! + Sets column width + \param col - column index + \param width - column width +*/ void OB_ListView::setColumnWidth( int col, int width ) { int max = columnMaxWidth( col ); @@ -171,6 +227,10 @@ void OB_ListView::setColumnWidth( int col, int width ) QListView::setColumnWidth( col, width ); } +/*! + \return column max width + \param col - column index +*/ int OB_ListView::columnMaxWidth( const int col ) const { int res = -1; @@ -181,11 +241,20 @@ int OB_ListView::columnMaxWidth( const int col ) const return res; } +/*! + Changes column max width + \param col - column index + \param w - column max width +*/ void OB_ListView::setColumnMaxWidth( const int col, const int w ) { myMaxColWidth.insert( col, w ); } +/*! + \return column max ratio + \param col - column index +*/ double OB_ListView::columnMaxRatio( const int col ) const { double res = 0.0; @@ -194,6 +263,11 @@ double OB_ListView::columnMaxRatio( const int col ) const return res; } +/*! + Changes column max ratio + \param col - column index + \param w - column max ratio +*/ void OB_ListView::setColumnMaxRatio( const int col, const double r ) { myMaxColRatio.insert( col, r ); diff --git a/src/ObjBrowser/OB_ListView.h b/src/ObjBrowser/OB_ListView.h index 03a394c21..d35b3320b 100755 --- a/src/ObjBrowser/OB_ListView.h +++ b/src/ObjBrowser/OB_ListView.h @@ -34,6 +34,11 @@ class OB_Filter; class QListViewItem; class SUIT_DataObject; +/*! + \class OB_ListView + Special list view for ObjectBrowser. + Allows drag-n-drop, filtering of selected objects, column management. +*/ class OB_EXPORT OB_ListView : public QtxListView { Q_OBJECT diff --git a/src/ObjBrowser/resources/OB_msg_en.po b/src/ObjBrowser/resources/OB_msg_en.po index b570f058e..0f57bf3e5 100755 --- a/src/ObjBrowser/resources/OB_msg_en.po +++ b/src/ObjBrowser/resources/OB_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/Plot2d/Makefile.in b/src/Plot2d/Makefile.in index ef3d4742b..b6060462c 100755 --- a/src/Plot2d/Makefile.in +++ b/src/Plot2d/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : Plot2d diff --git a/src/Plot2d/Plot2d_Curve.cxx b/src/Plot2d/Plot2d_Curve.cxx index c0a9abbb6..4c5d02bd1 100755 --- a/src/Plot2d/Plot2d_Curve.cxx +++ b/src/Plot2d/Plot2d_Curve.cxx @@ -72,6 +72,9 @@ Plot2d_Curve& Plot2d_Curve::operator=( const Plot2d_Curve& curve ) return *this; } +/*! + \return title of table +*/ QString Plot2d_Curve::getTableTitle() const { return QString(); diff --git a/src/Plot2d/Plot2d_Prs.cxx b/src/Plot2d/Plot2d_Prs.cxx index 6f708f610..de9fc819b 100755 --- a/src/Plot2d/Plot2d_Prs.cxx +++ b/src/Plot2d/Plot2d_Prs.cxx @@ -29,24 +29,18 @@ #include #include "Plot2d_Prs.h" -//========================================================== /*! - * Plot2d_Prs::Plot2d_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ Plot2d_Prs::Plot2d_Prs( bool theDelete ) : mySecondY( false) { setAutoDel(theDelete); } -//========================================================== /*! - * Plot2d_Prs::Plot2d_Prs - * Standard constructor - */ -//========================================================== + Standard constructor +*/ Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj, bool theDelete ) : mySecondY( false) { @@ -54,33 +48,24 @@ Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj, bool theDelete ) AddObject( obj ); } -//========================================================== /*! - * Plot2d_Prs::~Plot2d_Prs - * Destructor - */ -//========================================================== + Destructor +*/ Plot2d_Prs::~Plot2d_Prs() { } -//========================================================== /*! - * Plot2d_Prs::GetObjects - * Get curves list - */ -//========================================================== + Get curves list +*/ curveList Plot2d_Prs::getCurves() const { return myCurves; } -//========================================================== /*! - * Plot2d_Prs::AddObject - * Add curbe - */ -//========================================================== + Add curve +*/ void Plot2d_Prs::AddObject( const Plot2d_Curve* obj ) { myCurves.append((Plot2d_Curve*)obj); @@ -89,38 +74,25 @@ void Plot2d_Prs::AddObject( const Plot2d_Curve* obj ) mySecondY = true; } -//========================================================== /*! - * Plot2d_Prs::IsNull - * Return 0 if list of the curves is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ] +*/ bool Plot2d_Prs::IsNull() const { return myCurves.isEmpty(); } -//========================================================== /*! - * Plot2d_Prs::IsSecondY - * Return 1 if in the list of curves exist at least one curve - * with axis Qwt::yRight - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 1 if in the list of curves exist at least one curve with axis Qwt::yRight [ Reimplemented from SALOME_Prs ] +*/ bool Plot2d_Prs::isSecondY() const { return mySecondY; } -//========================================================== /*! - * Plot2d_Prs::IsNull - * Return 0 if list of the curves is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ] +*/ void Plot2d_Prs::setAutoDel(bool theDel) { myCurves.setAutoDelete(theDel); diff --git a/src/Plot2d/Plot2d_SetupCurveDlg.h b/src/Plot2d/Plot2d_SetupCurveDlg.h index c9bea3a3d..719344723 100644 --- a/src/Plot2d/Plot2d_SetupCurveDlg.h +++ b/src/Plot2d/Plot2d_SetupCurveDlg.h @@ -14,10 +14,10 @@ #include -//================================================================================= -// class : Plot2d_SetupCurveDlg -// purpose : Dialog box for setup Plot2d curve -//================================================================================= +/*! + \class Plot2d_SetupCurveDlg + Dialog box for setup Plot2d curve +*/ class QPushButton; class QComboBox; diff --git a/src/Plot2d/Plot2d_ViewFrame.cxx b/src/Plot2d/Plot2d_ViewFrame.cxx index 35f4b5888..b5eccb446 100755 --- a/src/Plot2d/Plot2d_ViewFrame.cxx +++ b/src/Plot2d/Plot2d_ViewFrame.cxx @@ -130,10 +130,6 @@ const char* imageCrossCursor[] = { "................................"}; -//================================================================================= -// Plot2d_ViewFrame implementation -//================================================================================= - /*! Constructor */ @@ -1082,6 +1078,11 @@ void Plot2d_ViewFrame::setCurveType( int curveType, bool update ) emit vpCurveChanged(); } +/*! + Sets curve title + \param curveKey - curve id + \param title - new title +*/ void Plot2d_ViewFrame::setCurveTitle( int curveKey, const QString& title ) { if(myPlot) myPlot->setCurveTitle(curveKey, title); @@ -1609,9 +1610,6 @@ bool Plot2d_ViewFrame::isYLogEnabled() const return allPositive; } -//================================================================================= -// Plot2d_Plot2d implementation -//================================================================================= /*! Constructor */ @@ -1745,11 +1743,17 @@ void Plot2d_Plot2d::getNextMarker( QwtSymbol::Style& typeMarker, QColor& color, */ } +/*! + \return the default layout behavior of the widget +*/ QSizePolicy Plot2d_Plot2d::sizePolicy() const { return QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); } +/*! + \return the recommended size for the widget +*/ QSize Plot2d_Plot2d::sizeHint() const { return QwtPlot::minimumSizeHint(); @@ -1790,12 +1794,19 @@ bool Plot2d_Plot2d::existMarker( const QwtSymbol::Style typeMarker, const QColor return false; } -// TEMPORARY SOLUTION!!! TO BE IMPLEMENTED!!! +/*! + Creates presentation of object + Default implementation is empty +*/ Plot2d_Prs* Plot2d_ViewFrame::CreatePrs( const char* /*entry*/ ) { return 0; } +/*! + Copies preferences from other viewframe + \param vf - other view frame +*/ void Plot2d_ViewFrame::copyPreferences( Plot2d_ViewFrame* vf ) { if( !vf ) @@ -1888,6 +1899,11 @@ void Plot2d_ViewFrame::updateTitles() setTitle( true, aTables.join("; "), MainTitle, true ); } +/*! + Outputs content of viewframe to file + \param file - file name + \param format - file format +*/ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const { #ifdef WIN32 @@ -1919,6 +1935,9 @@ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const #endif } +/*! + \return string with all visual parameters +*/ QString Plot2d_ViewFrame::getVisualParameters() { double xmin, xmax, ymin, ymax, y2min, y2max; @@ -1929,6 +1948,9 @@ QString Plot2d_ViewFrame::getVisualParameters() return retStr; } +/*! + Restores all visual parameters from string +*/ void Plot2d_ViewFrame::setVisualParameters( const QString& parameters ) { QStringList paramsLst = QStringList::split( '*', parameters, true ); diff --git a/src/Plot2d/Plot2d_ViewManager.cxx b/src/Plot2d/Plot2d_ViewManager.cxx index 704e33095..98196ecdf 100755 --- a/src/Plot2d/Plot2d_ViewManager.cxx +++ b/src/Plot2d/Plot2d_ViewManager.cxx @@ -22,6 +22,9 @@ int Plot2d_ViewManager::myMaxId = 0; +/*! + Constructor +*/ Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) : SUIT_ViewManager( study, desk ) { @@ -30,21 +33,35 @@ Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) setViewModel( v ); } +/*! + Destructor +*/ Plot2d_ViewManager::~Plot2d_ViewManager() { } +/*! + \return corresponding viewer +*/ Plot2d_Viewer* Plot2d_ViewManager::getPlot2dModel() const { return (Plot2d_Viewer*)myViewModel; } +/*! + Sets default name of view + \param the View - view to be renamed +*/ void Plot2d_ViewManager::setViewName( SUIT_ViewWindow* theView ) { int aPos = myViews.find(theView); theView->setCaption( QString( "Plot2d scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1)); } +/*! + Adds new view + \param theView - view to be added +*/ bool Plot2d_ViewManager::insertView( SUIT_ViewWindow* theView ) { bool res = SUIT_ViewManager::insertView( theView ); @@ -56,11 +73,17 @@ bool Plot2d_ViewManager::insertView( SUIT_ViewWindow* theView ) return res; } +/*! + Creates new view +*/ void Plot2d_ViewManager::createView() { createViewWindow(); } +/*! + SLOT: called if action "Clone view" is activated, emits signal cloneView() +*/ void Plot2d_ViewManager::onCloneView() { SUIT_ViewWindow* vw = createViewWindow(); diff --git a/src/Plot2d/Plot2d_ViewModel.cxx b/src/Plot2d/Plot2d_ViewModel.cxx index 637351c91..30cd483b2 100755 --- a/src/Plot2d/Plot2d_ViewModel.cxx +++ b/src/Plot2d/Plot2d_ViewModel.cxx @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // Plot2d_ViewModel.cxx: implementation of the Plot2d_ViewModel class. -// -////////////////////////////////////////////////////////////////////// #include "Plot2d_ViewModel.h" #include "Plot2d_ViewWindow.h" @@ -28,6 +26,9 @@ #include +/*! + Constructor +*/ Plot2d_Viewer::Plot2d_Viewer(bool theAutoDel) :SUIT_ViewModel() { @@ -35,13 +36,19 @@ Plot2d_Viewer::Plot2d_Viewer(bool theAutoDel) myAutoDel = theAutoDel; } +/*! + Destructor +*/ Plot2d_Viewer::~Plot2d_Viewer() { if (myPrs) clearPrs(); } -//********************************************************************* +/*! + Create new instance of view window on desktop \a theDesktop. + \retval SUIT_ViewWindow* - created view window pointer. +*/ SUIT_ViewWindow* Plot2d_Viewer::createView(SUIT_Desktop* theDesktop) { Plot2d_ViewWindow* aPlot2dView = new Plot2d_ViewWindow(theDesktop, this); @@ -50,7 +57,10 @@ SUIT_ViewWindow* Plot2d_Viewer::createView(SUIT_Desktop* theDesktop) return aPlot2dView; } -//********************************************************************* +/*! + Adds custom items to popup menu + \param thePopup - popup menu +*/ void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup) { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -69,8 +79,10 @@ void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup) } } - -//********************************************************************* +/*! + Sets presentation of viewer + \param thePrs - new presentation +*/ void Plot2d_Viewer::setPrs(Plot2d_Prs* thePrs) { if (myPrs) @@ -79,7 +91,9 @@ void Plot2d_Viewer::setPrs(Plot2d_Prs* thePrs) myPrs->setAutoDel(myAutoDel); } -//********************************************************************* +/*! + Updates current viewer +*/ void Plot2d_Viewer::update() { SUIT_ViewManager* aMgr = getViewManager(); @@ -92,7 +106,9 @@ void Plot2d_Viewer::update() } } -//********************************************************************* +/*! + Clear viewer presentation +*/ void Plot2d_Viewer::clearPrs() { SUIT_ViewManager* aMgr = getViewManager(); @@ -109,7 +125,10 @@ void Plot2d_Viewer::clearPrs() myPrs = 0; } -//********************************************************************* +/*! + Sets "auto delete" state of of presentation + \param theDel - new state +*/ void Plot2d_Viewer::setAutoDel(bool theDel) { myAutoDel = theDel; @@ -117,7 +136,9 @@ void Plot2d_Viewer::setAutoDel(bool theDel) myPrs->setAutoDel(theDel); } -//********************************************************************* +/*! + SLOT: called when action "Change background" is activated +*/ void Plot2d_Viewer::onChangeBgColor() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -127,14 +148,18 @@ void Plot2d_Viewer::onChangeBgColor() aViewFrame->onChangeBackground(); } -//********************************************************************* +/*! + SLOT: called when action "Show toolbar" is activated +*/ void Plot2d_Viewer::onShowToolbar() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); if ( aView ) aView->getToolBar()->show(); } -//********************************************************************* +/*! + SLOT: called when action "Dump view" is activated +*/ void Plot2d_Viewer::onDumpView() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -142,11 +167,17 @@ void Plot2d_Viewer::onDumpView() aView->onDumpView(); } -//********************************************************************* +/*! + SLOT: called when action "Clone view" is activated +*/ void Plot2d_Viewer::onCloneView( Plot2d_ViewFrame*, Plot2d_ViewFrame* ) { } -//********************************************************************* + +/*! + Sets view manager + \param mgr - new view manager +*/ void Plot2d_Viewer::setViewManager( SUIT_ViewManager* mgr ) { SUIT_ViewModel::setViewManager( mgr ); diff --git a/src/Plot2d/Plot2d_ViewWindow.cxx b/src/Plot2d/Plot2d_ViewWindow.cxx index 017e8fada..eda8bd6fb 100755 --- a/src/Plot2d/Plot2d_ViewWindow.cxx +++ b/src/Plot2d/Plot2d_ViewWindow.cxx @@ -17,8 +17,7 @@ // See http://www.salome-platform.org/ // // Plot2d_ViewWindow.cxx: implementation of the Plot2d_ViewWindow class. -// -////////////////////////////////////////////////////////////////////// + #include "Plot2d_ViewWindow.h" #include "Plot2d_ViewFrame.h" @@ -36,10 +35,9 @@ #include #include -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor +*/ Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* theModel) : SUIT_ViewWindow(theDesktop) { @@ -62,18 +60,27 @@ Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* th } +/*! + Destructor +*/ Plot2d_ViewWindow::~Plot2d_ViewWindow() { } -//**************************************************************** +/*! + Puts message to status bar + \param theMsg - message text +*/ void Plot2d_ViewWindow::putInfo(QString theMsg) { QStatusBar* aStatusBar = myDesktop->statusBar(); aStatusBar->message(theMsg/*, 3000*/); } -//**************************************************************** +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void Plot2d_ViewWindow::contextMenuPopup( QPopupMenu* thePopup ) { // scaling @@ -101,7 +108,9 @@ void Plot2d_ViewWindow::contextMenuPopup( QPopupMenu* thePopup ) myActionsMap[ CurvSettingsId ]->addTo(thePopup); } -//**************************************************************** +/*! + Custom event filter +*/ bool Plot2d_ViewWindow::eventFilter(QObject* watched, QEvent* e) { if (watched == myViewFrame) { @@ -126,7 +135,9 @@ bool Plot2d_ViewWindow::eventFilter(QObject* watched, QEvent* e) return SUIT_ViewWindow::eventFilter(watched, e); } -//**************************************************************** +/*! + Create actions for Plot2d view window +*/ void Plot2d_ViewWindow::createActions() { if ( !myActionsMap.isEmpty() ) @@ -282,7 +293,9 @@ void Plot2d_ViewWindow::createActions() } -//**************************************************************** +/*! + Create toolbar for Plot2d view window +*/ void Plot2d_ViewWindow::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -314,7 +327,9 @@ void Plot2d_ViewWindow::createToolBar() onChangeLegendMode(); } -//**************************************************************** +/*! + SLOT: called if scale mode for horizontal axis is changed +*/ void Plot2d_ViewWindow::onChangeHorMode() { bool aLinear = myViewFrame->isModeHorLinear(); @@ -334,7 +349,9 @@ void Plot2d_ViewWindow::onChangeHorMode() myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() ); } -//**************************************************************** +/*! + SLOT: called if scale mode for vertical axis is changed +*/ void Plot2d_ViewWindow::onChangeVerMode() { bool aLinear = myViewFrame->isModeVerLinear(); @@ -354,7 +371,9 @@ void Plot2d_ViewWindow::onChangeVerMode() myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() ); } -//**************************************************************** +/*! + SLOT: called if curve type is changed +*/ void Plot2d_ViewWindow::onChangeCurveMode() { int aCurveType = myViewFrame->getCurveType(); @@ -365,43 +384,57 @@ void Plot2d_ViewWindow::onChangeCurveMode() myActionsMap[CurvSplinesId]->setOn(aCurveType == 2); } -//**************************************************************** +/*! + SLOT: called if legend mode is changed +*/ void Plot2d_ViewWindow::onChangeLegendMode() { myActionsMap[ LegendId ]->setOn(myViewFrame->isLegendShow()); } -//**************************************************************** +/*! + SLOT: called if action "Fit all" is activated +*/ void Plot2d_ViewWindow::onFitAll() { myViewFrame->onViewFitAll(); } -//**************************************************************** +/*! + SLOT: called if action "Fit rect" is activated +*/ void Plot2d_ViewWindow::onFitRect() { myViewFrame->onViewFitArea(); } -//**************************************************************** +/*! + SLOT: called if action "Zoom" is activated +*/ void Plot2d_ViewWindow::onZoom() { myViewFrame->onViewZoom(); } -//**************************************************************** +/*! + SLOT: called if action "Panning" is activated +*/ void Plot2d_ViewWindow::onPanning() { myViewFrame->onViewPan(); } -//**************************************************************** +/*! + SLOT: called if action "Global panning" is activated +*/ void Plot2d_ViewWindow::onGlobalPanning() { myViewFrame->onViewGlobalPan(); } -//**************************************************************** +/*! + SLOT: called if action of scale mode for horizontal axis changing is activated +*/ void Plot2d_ViewWindow::onViewHorMode() { if (myViewFrame->isModeHorLinear()) @@ -410,7 +443,9 @@ void Plot2d_ViewWindow::onViewHorMode() myViewFrame->setHorScaleMode(0); } -//**************************************************************** +/*! + SLOT: called if action of scale mode for vertical axis changing is activated +*/ void Plot2d_ViewWindow::onViewVerMode() { if (myViewFrame->isModeVerLinear()) @@ -419,14 +454,18 @@ void Plot2d_ViewWindow::onViewVerMode() myViewFrame->setVerScaleMode(0); } -//**************************************************************** +/*! + SLOT: called if action "Show legend" is activated +*/ void Plot2d_ViewWindow::onLegend() { myViewFrame->showLegend(!myViewFrame->isLegendShow()); onChangeLegendMode(); } -//**************************************************************** +/*! + SLOT: called if action "Change curve type" is activated +*/ void Plot2d_ViewWindow::onCurves() { QtxAction* aSender = (QtxAction*) sender(); @@ -438,20 +477,29 @@ void Plot2d_ViewWindow::onCurves() myViewFrame->setCurveType(2); } -//**************************************************************** +/*! + SLOT: called if action "Dump view" is activated +*/ void Plot2d_ViewWindow::onDumpView() { qApp->postEvent( myViewFrame, new QPaintEvent( QRect( 0, 0, myViewFrame->width(), myViewFrame->height() ), TRUE ) ); SUIT_ViewWindow::onDumpView(); } -//**************************************************************** +/*! + \return QImage, containing all scene rendering in window +*/ QImage Plot2d_ViewWindow::dumpView() { QPixmap px = QPixmap::grabWindow( myViewFrame->winId() ); return px.convertToImage(); } +/*! + Saves scene rendering in window to file + \param fileName - name of file + \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG") +*/ bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format ) { bool res = myViewFrame ? myViewFrame->print( fileName, format ) : false; @@ -461,20 +509,25 @@ bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString return res; } +/*! + \return filter of image files +*/ QString Plot2d_ViewWindow::filter() const { return SUIT_ViewWindow::filter() + ";;" + tr( "POSTSCRIPT_FILES" ); } -/*! The method returns the visual parameters of this view as a formated string +/*! + \return the visual parameters of this view as a formated string */ QString Plot2d_ViewWindow::getVisualParameters() { return myViewFrame->getVisualParameters(); } -/* The method restors visual parameters of this view from a formated string - */ +/*! + The method restors visual parameters of this view from a formated string +*/ void Plot2d_ViewWindow::setVisualParameters( const QString& parameters ) { myViewFrame->setVisualParameters( parameters ); diff --git a/src/Plot2d/resources/Plot2d_images.po b/src/Plot2d/resources/Plot2d_images.po index 9c7bfacdc..365f067a4 100755 --- a/src/Plot2d/resources/Plot2d_images.po +++ b/src/Plot2d/resources/Plot2d_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/Plot2d/resources/Plot2d_msg_en.po b/src/Plot2d/resources/Plot2d_msg_en.po index aeb44afb7..85af54da7 100755 --- a/src/Plot2d/resources/Plot2d_msg_en.po +++ b/src/Plot2d/resources/Plot2d_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -147,9 +165,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - #------------------------------------- # Plot2d_SetupViewDlg # ------------------------------------ diff --git a/src/Prs/Makefile.in b/src/Prs/Makefile.in index 73133a3e6..599c56194 100755 --- a/src/Prs/Makefile.in +++ b/src/Prs/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx index cb35bb80b..e23180d19 100755 --- a/src/Prs/SALOME_Prs.cxx +++ b/src/Prs/SALOME_Prs.cxx @@ -28,365 +28,245 @@ //using namespace std; -//=========================================================== /*! - * Function: SALOME_OCCPrs::DisplayIn \n - * Purpose: Dispatches display operation to proper Display() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Display() method of SALOME_View +*/ void SALOME_OCCPrs::DisplayIn( SALOME_View* v ) const { if ( v ) v->Display( this ); } -//=========================================================== /*! - * Function: SALOME_OCCPrs::EraseIn \n - * Purpose: Dispatches display operation to proper Erase() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Erase() method of SALOME_View +*/ void SALOME_OCCPrs::EraseIn( SALOME_View* v, const bool forced ) const { if ( v ) v->Erase( this, forced ); } -//=========================================================== /*! - * Function: SALOME_OCCPrs::LocalSelectionIn \n - * Purpose: Dispatches operation to proper LocalSelectionIn() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches operation to proper LocalSelectionIn() method of SALOME_View +*/ void SALOME_OCCPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const { if ( v ) v->LocalSelection( this, mode ); } -//=========================================================== /*! - * Function: SALOME_OCCPrs::Update \n - * Purpose: Dispatches update operation to proper Update() \n - * method of SALOME_Displayer - */ -//=========================================================== + Dispatches update operation to proper Update() method of SALOME_Displayer +*/ void SALOME_OCCPrs::Update( SALOME_Displayer* d ) { if ( d ) d->Update( this ); } -//=========================================================== /*! - * Function: SALOME_VTKPrs::DisplayIn \n - * Purpose: Dispatches display operation to proper Display() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Display() method of SALOME_View +*/ void SALOME_VTKPrs::DisplayIn( SALOME_View* v ) const { if ( v ) v->Display( this ); } -//=========================================================== /*! - * Function: SALOME_VTKPrs::EraseIn \n - * Purpose: Dispatches display operation to proper Erase() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Erase() method of SALOME_View +*/ void SALOME_VTKPrs::EraseIn( SALOME_View* v, const bool forced ) const { if ( v ) v->Erase( this, forced ); } -//=========================================================== /*! - * Function: SALOME_VTKPrs::LocalSelectionIn \n - * Purpose: Dispatches operation to proper LocalSelectionIn() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches operation to proper LocalSelectionIn() method of SALOME_View +*/ void SALOME_VTKPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const { if ( v ) v->LocalSelection( this, mode ); } -//=========================================================== /*! - * Function: SALOME_VTKPrs::Update \n - * Purpose: Dispatches update operation to proper Update() \n - * method of SALOME_Displayer - */ -//=========================================================== + Dispatches update operation to proper Update() method of SALOME_Displayer +*/ void SALOME_VTKPrs::Update( SALOME_Displayer* d ) { if ( d ) d->Update( this ); } -//=========================================================== /*! - * Function: SALOME_Prs2d::DisplayIn \n - * Purpose: Dispatches display operation to proper Display() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Display() method of SALOME_View +*/ void SALOME_Prs2d::DisplayIn( SALOME_View* v ) const { if ( v ) v->Display( this ); } -//=========================================================== /*! - * Function: SALOME_Prs2d::EraseIn \n - * Purpose: Dispatches display operation to proper Erase() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches display operation to proper Erase() method of SALOME_View +*/ void SALOME_Prs2d::EraseIn( SALOME_View* v, const bool forced ) const { if ( v ) v->Erase( this, forced ); } -//=========================================================== /*! - * Function: SALOME_Prs2d::LocalSelectionIn \n - * Purpose: Dispatches operation to proper LocalSelectionIn() \n - * method of SALOME_View - */ -//=========================================================== + Dispatches operation to proper LocalSelectionIn() method of SALOME_View +*/ void SALOME_Prs2d::LocalSelectionIn( SALOME_View* v, const int mode ) const { if ( v ) v->LocalSelection( this, mode ); } -//=========================================================== /*! - * Function: SALOME_Prs2d::Update \n - * Purpose: Dispatches update operation to proper Update() \n - * method of SALOME_Displayer - */ -//=========================================================== + Dispatches update operation to proper Update() method of SALOME_Displayer +*/ void SALOME_Prs2d::Update( SALOME_Displayer* d ) { if ( d ) d->Update( this ); } -//=========================================================== /*! - * Function: SALOME_View::Display \n - * Purpose: Gives control to SALOME_Prs object, so that \n - * it could perform double dispatch - */ -//=========================================================== + Gives control to SALOME_Prs object, so that it could perform double dispatch +*/ void SALOME_View::Display( const SALOME_Prs* prs ) { prs->DisplayIn( this ); } -//=========================================================== /*! - * Function: SALOME_View::Erase \n - * Purpose: Gives control to SALOME_Prs object, so that \n - * it could perform double dispatch - */ -//=========================================================== + Gives control to SALOME_Prs object, so that it could perform double dispatch +*/ void SALOME_View::Erase( const SALOME_Prs* prs, const bool forced ) { prs->EraseIn( this, forced ); } -//=========================================================== /*! - * Function: SALOME_View::LocalSelection \n - * Purpose: Gives control to SALOME_Prs object, so that \n - * it could perform double dispatch - */ -//=========================================================== + Gives control to SALOME_Prs object, so that it could perform double dispatch +*/ void SALOME_View::LocalSelection( const SALOME_Prs* prs, const int mode ) { prs->LocalSelectionIn( this, mode ); } -//=========================================================== /*! - * Function: SALOME_View::Display \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Display( const SALOME_OCCPrs* ) { // MESSAGE( "SALOME_View::Display( const SALOME_OCCPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::Display \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Display( const SALOME_VTKPrs* ) { // MESSAGE( "SALOME_View::Display( const SALOME_VTKPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::Display \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Display( const SALOME_Prs2d* ) { // MESSAGE( "SALOME_View::Display( const SALOME_Prs2d& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::Erase \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Erase( const SALOME_OCCPrs*, const bool ) { // MESSAGE( "SALOME_View::Erase( const SALOME_OCCPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::Erase \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Erase( const SALOME_VTKPrs*, const bool ) { // MESSAGE( "SALOME_View::Erase( const SALOME_VTKPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::Erase \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::Erase( const SALOME_Prs2d*, const bool ) { // MESSAGE( "SALOME_View::Erase( const SALOME_Prs2d& ) called! Probably, presentation is being erased in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::EraseAll \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::EraseAll( const bool ) { // MESSAGE( "SALOME_View::EraseAll() called!" ); } -//=========================================================== /*! - * Function: SALOME_View::LocalSelection \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int ) { // MESSAGE( "SALOME_View::LocalSelection( const SALOME_OCCPrs* ) called! \ // Probably, selection is being activated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::LocalSelection \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::LocalSelection( const SALOME_VTKPrs*, const int ) { // MESSAGE( "SALOME_View::LocalSelection( const SALOME_VTKPrs* ) called! \ // Probably, selection is being activated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::LocalSelection \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::LocalSelection( const SALOME_Prs2d*, const int ) { // MESSAGE( "SALOME_View::LocalSelection( const SALOME_Prs2d* ) called! \ // Probably, selection is being activated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_View::GlobalSelection \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_View::GlobalSelection( const bool ) const { // MESSAGE( "SALOME_View::GlobalSelection() called! \ // Probably, selection is being activated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_Displayer::UpdatePrs \n - * Purpose: Gives control to SALOME_Prs object, so that \n - * it could perform double dispatch - */ -//=========================================================== + Gives control to SALOME_Prs object, so that it could perform double dispatch +*/ void SALOME_Displayer::UpdatePrs( SALOME_Prs* prs ) { prs->Update( this ); } -//=========================================================== /*! - * Function: SALOME_Displayer::Update \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_Displayer::Update( SALOME_OCCPrs* ) { // MESSAGE( "SALOME_Displayer::Update( SALOME_OCCPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_Displayer::Update \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_Displayer::Update( SALOME_VTKPrs* ) { // MESSAGE( "SALOME_Displayer::Update( SALOME_VTKPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." ); } -//=========================================================== /*! - * Function: SALOME_Displayer::Update \n - * Purpose: Virtual method, should be reimplemented in successors, \n - * by default issues a warning and does nothing. - */ -//=========================================================== + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ void SALOME_Displayer::Update( SALOME_Prs2d* ) { // MESSAGE( "SALOME_Displayer::Update( SALOME_Prs2d* ) called! Probably, presentation is being updated in uncompatible viewframe." ); diff --git a/src/Prs/SALOME_Prs.h b/src/Prs/SALOME_Prs.h index eec2a6055..6d21c79f9 100755 --- a/src/Prs/SALOME_Prs.h +++ b/src/Prs/SALOME_Prs.h @@ -33,13 +33,11 @@ class SALOME_View; class SALOME_Displayer; class Handle_SALOME_InteractiveObject; -//=========================================================== /*! - * Class: SALOME_Prs \n - * Description: Base class for SALOME graphic object wrappers - presentations.\n - * Presentations are temporary objects, so they can be created on the stack. - */ -//=========================================================== + \class SALOME_Prs + Base class for SALOME graphic object wrappers - presentations. + Presentations are temporary objects, so they can be created on the stack. +*/ class PRS_EXPORT SALOME_Prs { @@ -63,13 +61,11 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const = 0; }; -//=========================================================== /*! - * Class: SALOME_OCCPrs \n - * Description: Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers.\n - * This intermediate class is necessary to avoid dependencies from OCC libs. - */ -//=========================================================== + \class SALOME_OCCPrs + Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers. + This intermediate class is necessary to avoid dependencies from OCC libs. +*/ class PRS_EXPORT SALOME_OCCPrs : public SALOME_Prs { @@ -90,13 +86,11 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -//=========================================================== /*! - * Class: SALOME_VTKPrs \n - * Description: Base class for VTK graphic object (vtkActor) wrappers \n - * This intermediate class is necessary to avoid dependencies from VTK libs. - */ -//=========================================================== + \class SALOME_VTKPrs + Base class for VTK graphic object (vtkActor) wrappers. + This intermediate class is necessary to avoid dependencies from VTK libs. +*/ class PRS_EXPORT SALOME_VTKPrs : public SALOME_Prs { public: @@ -116,13 +110,10 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -//=========================================================== /*! - * Class: SALOME_Prs2d \n - * Description: Base class for Plot2d graphic object (Plot2d_Curve) wrappers. - */ -//=========================================================== - + \class SALOME_Prs2d + Base class for Plot2d graphic object (Plot2d_Curve) wrappers. +*/ class PRS_EXPORT SALOME_Prs2d : public SALOME_Prs { public: @@ -142,18 +133,13 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -///////////////////////////////////////////////////////////////////////// -// Base classes for object wrappers for any other visualization libraries -// should be added here! -///////////////////////////////////////////////////////////////////////// - -//=========================================================== /*! - * Class: SALOME_View \n - * Description: Base class for SALOME views (or view frames) - */ -//=========================================================== - + Base classes for object wrappers for any other visualization libraries should be added here! +*/ +/*! + \class SALOME_View + Base class for SALOME views (or view frames) +*/ class PRS_EXPORT SALOME_View { public: @@ -211,24 +197,18 @@ public: virtual void Repaint() {} //!< Null body here. }; -//=========================================================== -/* - * Classes: SALOME_Displayer - * Description: These classes are used to specify type of view - * VTK, OCC or Plot2d - */ -//=========================================================== +/*! + \class SALOME_Displayer + These classes are used to specify type of view VTK, OCC or Plot2d +*/ class PRS_EXPORT SALOME_OCCViewType {}; class PRS_EXPORT SALOME_VTKViewType {}; class PRS_EXPORT SALOME_Plot2dViewType {}; -//=========================================================== /*! - * Class: SALOME_Displayer \n - * Description: Base class for SALOME displayers - */ -//=========================================================== - + \class SALOME_Displayer + Base class for SALOME displayers +*/ class PRS_EXPORT SALOME_Displayer { public: diff --git a/src/PyInterp/PyInterp_Dispatcher.cxx b/src/PyInterp/PyInterp_Dispatcher.cxx index 3d5067dba..d772c34a2 100755 --- a/src/PyInterp/PyInterp_Dispatcher.cxx +++ b/src/PyInterp/PyInterp_Dispatcher.cxx @@ -22,10 +22,6 @@ using namespace std; PyInterp_Dispatcher* PyInterp_Dispatcher::myInstance = 0; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// - void PyInterp_Request::process() { safeExecute(); @@ -89,20 +85,12 @@ void PyInterp_LockRequest::safeExecute() } } -////////////////////////////////////////////////////////// -// class : PyInterp_Event -////////////////////////////////////////////////////////// - PyInterp_Event::~PyInterp_Event() { PyInterp_Request::Destroy( myRequest ); myRequest = 0; } -////////////////////////////////////////////////////////// -// class : PyInterp_Dispatcher -////////////////////////////////////////////////////////// - PyInterp_Dispatcher* PyInterp_Dispatcher::Get() { if ( !myInstance ) diff --git a/src/PyInterp/PyInterp_Dispatcher.h b/src/PyInterp/PyInterp_Dispatcher.h index a7a4ae72f..412c97194 100755 --- a/src/PyInterp/PyInterp_Dispatcher.h +++ b/src/PyInterp/PyInterp_Dispatcher.h @@ -25,9 +25,6 @@ class PyInterp_base; class PyInterp_Watcher; class PyInterp_Dispatcher; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Request { friend class PyInterp_Dispatcher; @@ -88,9 +85,6 @@ private: PyInterp_base* myInterp; }; -////////////////////////////////////////////////////////// -// class : PyInterp_Event -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Event : public QCustomEvent { PyInterp_Event(); @@ -111,9 +105,6 @@ private: PyInterp_Request* myRequest; }; -////////////////////////////////////////////////////////// -// class : PyInterp_Dispatcher -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Dispatcher : protected QThread { PyInterp_Dispatcher(); // private constructor diff --git a/src/PyInterp/PyInterp_base.cxx b/src/PyInterp/PyInterp_base.cxx index 0e0a5622c..1afac6ac2 100644 --- a/src/PyInterp/PyInterp_base.cxx +++ b/src/PyInterp/PyInterp_base.cxx @@ -224,7 +224,7 @@ int PyInterp_base::run(const char *command) _atFirst = false; return ret; } - ret = simpleRun("salome.salome_init()"); + ret = simpleRun("salome.salome_init(0,1)"); if (ret) { _atFirst = false; return ret; diff --git a/src/PythonConsole/Makefile.in b/src/PythonConsole/Makefile.in index b1b1713ea..a770ad86a 100755 --- a/src/PythonConsole/Makefile.in +++ b/src/PythonConsole/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : PythonConsole diff --git a/src/PythonConsole/PythonConsole_PyConsole.cxx b/src/PythonConsole/PythonConsole_PyConsole.cxx index c7f8f1c7c..7dd044d60 100755 --- a/src/PythonConsole/PythonConsole_PyConsole.cxx +++ b/src/PythonConsole/PythonConsole_PyConsole.cxx @@ -26,7 +26,9 @@ using namespace std; -//**************************************************************** +/*! + Constructor +*/ PythonConsole::PythonConsole(QWidget* parent, PyInterp_base* interp) : QWidget(parent), myEditor( 0 ) { @@ -44,26 +46,36 @@ PythonConsole::PythonConsole(QWidget* parent, PyInterp_base* interp) lay->addWidget( myEditor ); } -//**************************************************************** +/*! + Destructor +*/ PythonConsole::~PythonConsole() { } -//**************************************************************** +/*! + Executes command + \param command - string with command and arguments +*/ void PythonConsole::exec( const QString& command ) { if ( myEditor ) myEditor->exec( command ); } -//**************************************************************** +/*! + Changes font of python console + \param f - new font +*/ void PythonConsole::setFont( const QFont& f ) { if( myEditor ) myEditor->setFont( f ); } -//**************************************************************** +/*! + \return font of python console +*/ QFont PythonConsole::font() const { QFont res; diff --git a/src/PythonConsole/PythonConsole_PyEditor.cxx b/src/PythonConsole/PythonConsole_PyEditor.cxx index 5bb4aed68..afb6c0537 100755 --- a/src/PythonConsole/PythonConsole_PyEditor.cxx +++ b/src/PythonConsole/PythonConsole_PyEditor.cxx @@ -173,7 +173,7 @@ void PythonConsole_PyEditor::handleReturn() PyInterp_Dispatcher::Get()->Exec( new ExecCommand( myInterp, _buf.latin1(), this ) ); } -/* +/*! Processes drop event: paste dragged text */ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event ) @@ -197,7 +197,7 @@ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event ) } } -/* +/*! Processes middle button release event - paste clipboard's contents */ void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event ) @@ -703,6 +703,9 @@ void PythonConsole_PyEditor::onPyInterpChanged( PyInterp_base* interp ) } } +/*! + Creates popup menu +*/ QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos ) { QPopupMenu* popup = QTextEdit::createPopupMenu( pos ); diff --git a/src/PythonConsole/PythonConsole_PyInterp.cxx b/src/PythonConsole/PythonConsole_PyInterp.cxx index 5b7d3e579..81ff117c4 100755 --- a/src/PythonConsole/PythonConsole_PyInterp.cxx +++ b/src/PythonConsole/PythonConsole_PyInterp.cxx @@ -48,6 +48,9 @@ PythonConsole_PyInterp::PythonConsole_PyInterp(): PyInterp_base() { } +/*! + Destructor +*/ PythonConsole_PyInterp::~PythonConsole_PyInterp() { } @@ -96,14 +99,13 @@ bool PythonConsole_PyInterp::initState() return true; } - +/*! + 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 +*/ bool PythonConsole_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 - */ PyObject *m = PyImport_AddModule("__main__"); // interpreter main module (module context) if(!m){ // if(MYDEBUG) MESSAGE("problem..."); diff --git a/src/QDS/Makefile.in b/src/QDS/Makefile.in index 97b4ae3f7..5f0de87b3 100755 --- a/src/QDS/Makefile.in +++ b/src/QDS/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : QDS diff --git a/src/QDS/QDS.cxx b/src/QDS/QDS.cxx index e6bdd56c8..df0e762c8 100644 --- a/src/QDS/QDS.cxx +++ b/src/QDS/QDS.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS.h" #include "QDS_Datum.h" diff --git a/src/QDS/QDS.h b/src/QDS/QDS.h index c9ff5edd0..70c3feed8 100644 --- a/src/QDS/QDS.h +++ b/src/QDS/QDS.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_H #define QDS_H diff --git a/src/QDS/QDS_CheckBox.cxx b/src/QDS/QDS_CheckBox.cxx index ded537716..471a9522f 100644 --- a/src/QDS/QDS_CheckBox.cxx +++ b/src/QDS/QDS_CheckBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_CheckBox.h" #include diff --git a/src/QDS/QDS_CheckBox.h b/src/QDS/QDS_CheckBox.h index 8b1344b93..8ced09f30 100644 --- a/src/QDS/QDS_CheckBox.h +++ b/src/QDS/QDS_CheckBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_CHECKBOX_H #define QDS_CHECKBOX_H diff --git a/src/QDS/QDS_ComboBox.cxx b/src/QDS/QDS_ComboBox.cxx index fac69b6b4..a3e7a3af3 100644 --- a/src/QDS/QDS_ComboBox.cxx +++ b/src/QDS/QDS_ComboBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_ComboBox.h" #include diff --git a/src/QDS/QDS_ComboBox.h b/src/QDS/QDS_ComboBox.h index 9650f4c58..4355332e0 100644 --- a/src/QDS/QDS_ComboBox.h +++ b/src/QDS/QDS_ComboBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_COMBOBOX_H #define QDS_COMBOBOX_H diff --git a/src/QDS/QDS_Datum.cxx b/src/QDS/QDS_Datum.cxx index f7a76b649..ae2e26026 100644 --- a/src/QDS/QDS_Datum.cxx +++ b/src/QDS/QDS_Datum.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_Datum.h" #include "QDS_Validator.h" diff --git a/src/QDS/QDS_Datum.h b/src/QDS/QDS_Datum.h index 3a1a92985..9e3052ee3 100644 --- a/src/QDS/QDS_Datum.h +++ b/src/QDS/QDS_Datum.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_DATUM_H #define QDS_DATUM_H diff --git a/src/QDS/QDS_LineEdit.cxx b/src/QDS/QDS_LineEdit.cxx index 15cc3f057..9ad83744a 100644 --- a/src/QDS/QDS_LineEdit.cxx +++ b/src/QDS/QDS_LineEdit.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_LineEdit.h" #include diff --git a/src/QDS/QDS_LineEdit.h b/src/QDS/QDS_LineEdit.h index ec9ad48a2..e3466c5ef 100644 --- a/src/QDS/QDS_LineEdit.h +++ b/src/QDS/QDS_LineEdit.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_LINEEDIT_H #define QDS_LINEEDIT_H diff --git a/src/QDS/QDS_RadioBox.cxx b/src/QDS/QDS_RadioBox.cxx index 1b3350fb3..07271a4ad 100644 --- a/src/QDS/QDS_RadioBox.cxx +++ b/src/QDS/QDS_RadioBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_RadioBox.h" #include diff --git a/src/QDS/QDS_RadioBox.h b/src/QDS/QDS_RadioBox.h index 769a537ed..6d70c7f4e 100644 --- a/src/QDS/QDS_RadioBox.h +++ b/src/QDS/QDS_RadioBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_RADIOBOX_H #define QDS_RADIOBOX_H diff --git a/src/QDS/QDS_SpinBox.cxx b/src/QDS/QDS_SpinBox.cxx index b77aa8ba0..0fb13ccc1 100644 --- a/src/QDS/QDS_SpinBox.cxx +++ b/src/QDS/QDS_SpinBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_SpinBox.h" #include diff --git a/src/QDS/QDS_SpinBox.h b/src/QDS/QDS_SpinBox.h index f018ddfb8..d1c1d0e23 100644 --- a/src/QDS/QDS_SpinBox.h +++ b/src/QDS/QDS_SpinBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_SPINBOX_H #define QDS_SPINBOX_H diff --git a/src/QDS/QDS_SpinBoxDbl.cxx b/src/QDS/QDS_SpinBoxDbl.cxx index 8a4160e70..b4091a176 100644 --- a/src/QDS/QDS_SpinBoxDbl.cxx +++ b/src/QDS/QDS_SpinBoxDbl.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_SpinBoxDbl.h" #include diff --git a/src/QDS/QDS_SpinBoxDbl.h b/src/QDS/QDS_SpinBoxDbl.h index a0c5e3096..cabd8584e 100644 --- a/src/QDS/QDS_SpinBoxDbl.h +++ b/src/QDS/QDS_SpinBoxDbl.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_PINBOXDBL_H #define QDS_PINBOXDBL_H diff --git a/src/QDS/QDS_TextEdit.cxx b/src/QDS/QDS_TextEdit.cxx index 65fbcb28e..b3c50c56c 100644 --- a/src/QDS/QDS_TextEdit.cxx +++ b/src/QDS/QDS_TextEdit.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_TextEdit.h" #include diff --git a/src/QDS/QDS_TextEdit.h b/src/QDS/QDS_TextEdit.h index 917ff13e4..0f37fb238 100644 --- a/src/QDS/QDS_TextEdit.h +++ b/src/QDS/QDS_TextEdit.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_TEXTEEDIT_H #define QDS_TEXTEEDIT_H diff --git a/src/QDS/QDS_Validator.cxx b/src/QDS/QDS_Validator.cxx index d83463eae..120af3afc 100644 --- a/src/QDS/QDS_Validator.cxx +++ b/src/QDS/QDS_Validator.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_Validator.h" /*! diff --git a/src/QDS/QDS_Validator.h b/src/QDS/QDS_Validator.h index bc966c03c..9b4b0b7b9 100644 --- a/src/QDS/QDS_Validator.h +++ b/src/QDS/QDS_Validator.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_VALIDATOR_H #define QDS_VALIDATOR_H diff --git a/src/QDS/resources/QDS_msg_en.po b/src/QDS/resources/QDS_msg_en.po index e42b0191b..e73b3e81f 100644 --- a/src/QDS/resources/QDS_msg_en.po +++ b/src/QDS/resources/QDS_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/Qtx/Makefile.in b/src/Qtx/Makefile.in index 02f58984b..e8b915139 100755 --- a/src/Qtx/Makefile.in +++ b/src/Qtx/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : suit @@ -50,7 +68,8 @@ EXPORT_HEADERS= Qtx.h \ QtxResourceEdit.h \ QtxListView.h \ QtxDirListEditor.h \ - QtxDblValidator.h + QtxDblValidator.h \ + QtxSplash.h # .po files to transform in .qm @@ -98,7 +117,8 @@ LIB_SRC= \ QtxWorkstack.cxx \ QtxListView.cxx \ QtxDirListEditor.cxx \ - QtxDblValidator.cxx + QtxDblValidator.cxx \ + QtxSplash.cxx LIB_MOC = \ QtxAction.h \ @@ -131,7 +151,8 @@ LIB_MOC = \ QtxListView.h \ QtxListResourceEdit.h \ QtxDirListEditor.h \ - QtxDblValidator.h + QtxDblValidator.h \ + QtxSplash.h RESOURCES_FILES = \ diff --git a/src/Qtx/Qtx.h b/src/Qtx/Qtx.h index c16bd7b23..cbfc63b99 100755 --- a/src/Qtx/Qtx.h +++ b/src/Qtx/Qtx.h @@ -87,6 +87,10 @@ typedef QValueList QIntList; typedef QValueList QShortList; typedef QValueList QDoubleList; +/*! + \class Qtx + \brief Set of auxiliary static methods +*/ class QTX_EXPORT Qtx : public Qt { public: diff --git a/src/Qtx/QtxAction.cxx b/src/Qtx/QtxAction.cxx index 9fafdb7ac..ea8446430 100755 --- a/src/Qtx/QtxAction.cxx +++ b/src/Qtx/QtxAction.cxx @@ -22,6 +22,7 @@ #include "QtxAction.h" #include +#include /*! Name: QtxAction [public] @@ -30,7 +31,7 @@ */ QtxAction::QtxAction( QObject* parent, const char* name, bool toggle ) -: QAction( parent, name, toggle ) + : QAction( parent, name, toggle ) { } @@ -46,7 +47,7 @@ QtxAction::QtxAction( QObject* parent, const char* name, bool toggle ) QtxAction::QtxAction( const QString& text, const QIconSet& icon, const QString& menuText, int accel, QObject* parent, const char* name, bool toggle ) -: QAction( text, icon, menuText, accel, parent, name, toggle ) + : QAction( text, icon, menuText, accel, parent, name, toggle ) { } @@ -60,7 +61,7 @@ QtxAction::QtxAction( const QString& text, const QIconSet& icon, QtxAction::QtxAction( const QString& text, const QString& menuText, int accel, QObject* parent, const char* name, bool toggle ) -: QAction( text, menuText, accel, parent, name, toggle ) + : QAction( text, menuText, accel, parent, name, toggle ) { } @@ -81,6 +82,26 @@ QtxAction::~QtxAction() bool QtxAction::addTo( QWidget* w ) { + if ( w->inherits( "QMenuBar" ) ) { + // --- Add action to the QMenuBar --- + // n.b. currently for the actions inserted to the menu bar + // the following properties are not supported: + // * tooltips + // * what's this info + // * toggle mode + QMenuBar* mb = (QMenuBar*)w; + if ( myMenuIds.find( w ) != myMenuIds.end() ) + return false; // already added + if ( name() == "qt_separator_action" ) // separator + myMenuIds[ w ] = mb->insertSeparator(); + else if ( iconSet().isNull() ) // has no icon + myMenuIds[ w ] = mb->insertItem( menuText(), this, SIGNAL( activated() ), accel() ); + else // has icon + myMenuIds[ w ] = mb->insertItem( iconSet(), menuText(), this, SIGNAL( activated() ), accel() ); + mb->setItemEnabled( myMenuIds[ w ], isEnabled() ); + mb->setItemVisible( myMenuIds[ w ], isVisible() ); + return true; + } return QAction::addTo( w ); } @@ -96,91 +117,185 @@ bool QtxAction::addTo( QWidget* w, int index ) if ( !addTo( w ) ) return false; - if ( w->inherits( "QPopupMenu" ) ) - { + if ( w->inherits( "QPopupMenu" ) ) { + // --- Add action to the QPopupMenu --- QPopupMenu* popup = (QPopupMenu*)w; - if ( index < (int)popup->count() - 1 ) - { + if ( index >= 0 && index < (int)popup->count() - 1 ) { int id = popup->idAt( popup->count() - 1 ); - if ( id != -1 ) - { - QMenuItem* item = popup->findItem( id ); - if ( item && item->isSeparator() ) - { - popup->removeItem( id ); - popup->insertSeparator( index ); - } - else - { - QPopupMenu* p = item ? item->popup() : 0; - int accel = popup->accel( id ); - bool isOn = popup->isItemEnabled( id ); - QString text = popup->text( id ); - QIconSet icon; - if ( popup->iconSet( id ) ) - icon = *popup->iconSet( id ); - popup->removeItem( id ); - int pos; - if ( icon.isNull() ) - if ( p ) - pos = popup->indexOf( popup->insertItem( text, p, id, index ) ); - else - pos = popup->indexOf( popup->insertItem( text, id, index ) ); - else - if ( p ) - pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); - else - pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); - popup->setId( pos, id ); - popup->setAccel( accel, id ); - popup->setItemEnabled( id, isOn ); - if ( !p ) - popup->connectItem( id, this, SLOT( internalActivation() ) ); - } + if ( id != -1 ) { + QMenuItem* item = popup->findItem( id ); + if ( item && item->isSeparator() ) { + popup->removeItem( id ); + popup->insertSeparator( index ); + } + else { + QPopupMenu* p = item ? item->popup() : 0; + int accel = popup->accel( id ); + bool isOn = popup->isItemEnabled( id ); + bool isVisible = popup->isItemVisible( id ); + bool isChecked = popup->isItemChecked( id ); + QString text = popup->text( id ); + QIconSet icon; + if ( popup->iconSet( id ) ) + icon = *popup->iconSet( id ); + popup->removeItem( id ); + int pos; + if ( icon.isNull() ) + if ( p ) + pos = popup->indexOf( popup->insertItem( text, p, id, index ) ); + else + pos = popup->indexOf( popup->insertItem( text, id, index ) ); + else + if ( p ) + pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); + else + pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); + popup->setId( pos, id ); + popup->setAccel( accel, id ); + popup->setItemEnabled( id, isOn ); + popup->setItemVisible( id, isVisible ); + popup->setItemChecked( id, isChecked ); + if ( !whatsThis().isEmpty() ) + popup->setWhatsThis( id, whatsThis() ); + if ( !p ) + popup->connectItem( id, this, SLOT( internalActivation() ) ); + } + } + } + } + else if ( w->inherits( "QMenuBar" ) ) { + // --- Add action to the QMenuBar --- + QMenuBar* mb = (QMenuBar*)w; + if ( index >= 0 && index < (int)mb->count() - 1 ) { + int id = mb->idAt( mb->count() - 1 ); + if ( id != -1 ) { + QMenuItem* item = mb->findItem( id ); + if ( item && item->isSeparator() ) { + mb->removeItem( id ); + mb->insertSeparator( index ); + } + else { + QPopupMenu* p = item ? item->popup() : 0; + int accel = mb->accel( id ); + bool isOn = mb->isItemEnabled( id ); + bool isVisible = mb->isItemVisible( id ); + QString text = mb->text( id ); + QIconSet icon; + if ( mb->iconSet( id ) ) + icon = *mb->iconSet( id ); + mb->removeItem( id ); + int pos; + if ( icon.isNull() ) + if ( p ) + pos = mb->indexOf( mb->insertItem( text, p, id, index ) ); + else + pos = mb->indexOf( mb->insertItem( text, id, index ) ); + else + if ( p ) + pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) ); + else + pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) ); + mb->setId( pos, id ); + mb->setAccel( accel, id ); + mb->setItemEnabled( id, isOn ); + mb->setItemVisible( id, isVisible ); + if ( !p ) + mb->connectItem( id, this, SIGNAL( activated() ) ); + } } } } - return true; } +/*! + Name: removeFrom [virtual public] + Desc: Removes this action from widget. Returns true if the action was removed + successfully and false otherwise. +*/ + +bool QtxAction::removeFrom( QWidget* w ) +{ + // check if widget is QMenuBar + if ( w->inherits( "QMenuBar" ) ) { + QMenuBar* mb = (QMenuBar*)w; + if ( myMenuIds.find( w ) == myMenuIds.end() ) + return false; // not yet added + mb->removeItem( myMenuIds[ w ] ); + myMenuIds.remove( w ); + return true; + } + return QAction::removeFrom( w ); +} + /*! Name: setPopup [virtual public] Desc: Set or unset the sub popup menu for item with specified id in the given popup. */ -void QtxAction::setPopup( QPopupMenu* popup, const int id, QPopupMenu* subPopup ) const +void QtxAction::setPopup( QWidget* w, const int id, QPopupMenu* subPopup ) const { - if ( !popup ) + if ( !w ) return; + if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) ) + return; // unsupported widget type + QMenuData* md = 0; - const QMenuData* pmd = popup; - QMenuItem* item = popup->findItem( id, &md ); + QMenuData* pmd = dynamic_cast( w ); + if ( !pmd ) + return; // bad widget + + QMenuItem* item = pmd->findItem( id, &md ); if ( !item || md != pmd ) - return; + return; // item is not found QPopupMenu* oldPopup = item->popup(); if ( oldPopup == subPopup ) - return; + return; // popup is not changed - int accel = popup->accel( id ); - bool isOn = popup->isItemEnabled( id ); - QString text = popup->text( id ); + // get properties + int accel = pmd->accel( id ); + bool isOn = pmd->isItemEnabled( id ); + bool isVisible = pmd->isItemVisible( id ); + int pos = pmd->indexOf( id ); + QString text = pmd->text( id ); QIconSet icon; - if ( popup->iconSet( id ) ) - icon = *popup->iconSet( id ); - popup->removeItem( id ); + if ( pmd->iconSet( id ) ) + icon = *pmd->iconSet( id ); - int pos; - if ( icon.isNull() ) - pos = popup->indexOf( subPopup ? popup->insertItem( text, subPopup ) : popup->insertItem( text ) ); - else - pos = popup->indexOf( subPopup ? popup->insertItem( icon, text, subPopup ) : popup->insertItem( icon, text ) ); + // remove previous item + pmd->removeItem( id ); - popup->setId( pos, id ); - popup->setAccel( accel, id ); - popup->setItemEnabled( id, isOn ); + // add new item + if ( w->inherits( "QPopupMenu" ) ) { + // --- QPopupMenu --- + QPopupMenu* popup = (QPopupMenu*)w; + if ( icon.isNull() ) + pos = popup->indexOf( subPopup ? popup->insertItem( text, subPopup, id, pos ) : + popup->insertItem( text, id, pos ) ); + else + pos = popup->indexOf( subPopup ? popup->insertItem( icon, text, subPopup, id, pos ) : + popup->insertItem( icon, text, id, pos ) ); + } + else { + // --- QMenuBar --- + QMenuBar* mb = (QMenuBar*)w; + if ( icon.isNull() ) + pos = mb->indexOf( subPopup ? mb->insertItem( text, subPopup, id, pos ) : + mb->insertItem( text, id, pos ) ); + else + pos = mb->indexOf( subPopup ? mb->insertItem( icon, text, subPopup, id, pos ) : + mb->insertItem( icon, text, id, pos ) ); + } + // restore properties + pmd->setId( pos, id ); // for sure (if id < 0) + pmd->setAccel( accel, id ); + pmd->setItemEnabled( id, isOn ); + pmd->setItemVisible( id, isVisible ); + + // delete old popup delete oldPopup; } + diff --git a/src/Qtx/QtxAction.h b/src/Qtx/QtxAction.h index ffffcc4d8..5251ad50f 100755 --- a/src/Qtx/QtxAction.h +++ b/src/Qtx/QtxAction.h @@ -25,6 +25,7 @@ #include "Qtx.h" #include +#include class QTX_EXPORT QtxAction : public QAction { @@ -38,9 +39,13 @@ public: virtual bool addTo( QWidget* ); virtual bool addTo( QWidget*, int ); + virtual bool removeFrom( QWidget* ); protected: - void setPopup( QPopupMenu*, const int, QPopupMenu* ) const; + void setPopup( QWidget*, const int, QPopupMenu* ) const; + +private: + QMap myMenuIds; }; #endif diff --git a/src/Qtx/QtxActionMenuMgr.cxx b/src/Qtx/QtxActionMenuMgr.cxx index 2d09b2d09..50c1147bb 100644 --- a/src/Qtx/QtxActionMenuMgr.cxx +++ b/src/Qtx/QtxActionMenuMgr.cxx @@ -31,6 +31,58 @@ #include #include #include +#include + +// VSR: Uncomment this #define in order to allow dynamic menus support +// (emit signals when popup menu is pre-activated) +// Currently this support is disabled. +//#define ENABLE_DYNAMIC_MENU + +/*! + Service functions + Level: Internal +*/ +namespace { + QValueList prepareIds( const QWidget* w ) + { + QValueList l; + const QMenuData* md = 0; + if ( w->inherits( "QMenuBar" ) ) + md = dynamic_cast( w ); + else if ( w->inherits( "QPopupMenu" ) ) + md = dynamic_cast( w ); + if ( md ) { + for ( int i=0; i < md->count(); i++ ) + l.append( md->idAt( i ) ); + } + return l; + } + + int getNewId( const QWidget* w, const QValueList& l, bool retId = true ) + { + const QMenuData* md = 0; + if ( w->inherits( "QMenuBar" ) ) + md = dynamic_cast( w ); + else if ( w->inherits( "QPopupMenu" ) ) + md = dynamic_cast( w ); + if ( md ) { + for ( int i=0, j=0; i < md->count() && j < l.count(); i++, j++ ) + if ( md->idAt( i ) != l[ j ] ) return retId ? md->idAt( i ) : i; + if ( md->count() > l.count() ) return retId ? md->idAt( md->count()-1 ) : md->count()-1; + } + return -1; + } + + void dumpMenu( QWidget* w, bool before ) + { + QMenuData* md = dynamic_cast( w ); + if ( !w ) return; + printf(">>> start dump menu (%s) >>>\n", before ? "before" : "after" ); + for( int i = 0; i < md->count(); i++ ) + printf("%d: %d: %s\n",i,md->idAt(i),md->text(md->idAt(i)).latin1() ); + printf("<<< end dump menu (%s) <<<\n", before ? "before" : "after" ); + } +}; /*! Class: QtxActionMenuMgr::MenuAction @@ -40,7 +92,7 @@ class QtxActionMenuMgr::MenuAction : public QtxAction { public: - MenuAction( const QString&, const QString&, QObject*, const bool = false ); + MenuAction( const QString&, const QString&, QObject*, const int = -1, const bool = false ); virtual ~MenuAction(); virtual bool addTo( QWidget* ); @@ -50,54 +102,84 @@ public: QPopupMenu* popup() const; private: - int myId; - QPopupMenu* myPopup; - bool myEmptyEnabled; + int myId; + QPopupMenu* myPopup; + bool myEmptyEnabled; + QMap myIds; }; + +/*! + Constructor for menu action + \param text - description text + \param menutext - menu text + \param parent - parent object + \param id - integer identificator of action + \param allowEmpty - if it is true, it makes possible to add this action with empty popup to menu +*/ + QtxActionMenuMgr::MenuAction::MenuAction( const QString& text, const QString& menuText, QObject* parent, + const int id, const bool allowEmpty ) : QtxAction( text, menuText, 0, parent ), - myId( -1 ), + myId( id ), myPopup( 0 ), myEmptyEnabled( allowEmpty ) { myPopup = new QPopupMenu(); } +/*! + Destructor: deletes internal popup +*/ QtxActionMenuMgr::MenuAction::~MenuAction() { delete myPopup; } +/*! + Adds action to widget, for example, to popup menu or menu bar +*/ bool QtxActionMenuMgr::MenuAction::addTo( QWidget* w ) { - if ( myId != -1 || !w ) - return false; + if ( !w ) + return false; // bad widget if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) ) - return false; + return false; // not allowed widget type + + if ( myIds.find( w ) != myIds.end() ) + return false; // already added if ( !myPopup ) - return false; + return false; // bad own popup menu if ( !myEmptyEnabled && !myPopup->count() ) - return false; - - if ( w->inherits( "QPopupMenu" ) && QAction::addTo( w ) ) - { - QPopupMenu* pm = (QPopupMenu*)w; - myId = pm->idAt( pm->count() - 1 ); - setPopup( pm, myId, myPopup ); + return false; // not allowed empty menu + + if ( w->inherits( "QPopupMenu" ) ) { + QValueList l = prepareIds( w ); + int idx; + if ( QtxAction::addTo( w ) && ( idx = getNewId( w, l, false ) ) != -1 ) { + QPopupMenu* pm = (QPopupMenu*)w; + myIds[ w ] = pm->idAt( idx ); + if ( myId != -1 ) + pm->setId( idx, myId ); + setPopup( pm, myId != -1 ? myId : myIds[ w ], myPopup ); + } } - else if ( w->inherits( "QMenuBar" ) ) - { - QMenuBar* mb = (QMenuBar*)w; - myId = iconSet().isNull() ? mb->insertItem( menuText(), myPopup ) : - mb->insertItem( iconSet(), menuText(), myPopup ); - mb->setItemEnabled( myId, isEnabled() ); + else if ( w->inherits( "QMenuBar" ) ) { + QValueList l = prepareIds( w ); + int idx; + if ( QtxAction::addTo( w ) && ( idx = getNewId( w, l, false ) ) != -1 ) { + QMenuBar* mb = (QMenuBar*)w; + myIds[ w ] = mb->idAt( idx ); + if ( myId != -1 ) + mb->setId( idx, myId ); + setPopup( mb, myId != -1 ? myId : myIds[ w ], myPopup ); + } } else return false; @@ -105,20 +187,45 @@ bool QtxActionMenuMgr::MenuAction::addTo( QWidget* w ) return true; } +/*! + Removes action from widget, for example, from popup menu or menu bar +*/ bool QtxActionMenuMgr::MenuAction::removeFrom( QWidget* w ) { - if ( w->inherits( "QPopupMenu" ) && QAction::removeFrom( w ) ) - myId = -1; + if ( !w ) + return false; // bad widget + + if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) ) + return false; // not allowed widget type + + if ( myIds.find( w ) == myIds.end() ) + return false; // not yet added + + if ( w->inherits( "QPopupMenu" ) ) { + if ( myId != -1 ) { + QPopupMenu* pm = (QPopupMenu*)w; + int idx = pm->indexOf( myId ); + if ( idx != -1 ) pm->setId( idx, myIds[ w ] ); + } + myIds.remove( w ); + return QtxAction::removeFrom( w );; + } else if ( w->inherits( "QMenuBar" ) ) { - QMenuBar* mb = (QMenuBar*)w; - mb->removeItem( myId ); - myId = -1; + if ( myId != -1 ) { + QMenuBar* mb = (QMenuBar*)w; + int idx = mb->indexOf( myId ); + if ( idx != -1 ) mb->setId( idx, myIds[ w ] ); + } + myIds.remove( w ); + return QtxAction::removeFrom( w ); } - - return myId == -1; + return false; } +/*! + \return internal popup of action +*/ QPopupMenu* QtxActionMenuMgr::MenuAction::popup() const { return myPopup; @@ -128,25 +235,28 @@ QPopupMenu* QtxActionMenuMgr::MenuAction::popup() const Class: QtxActionMenuMgr Level: Public */ - - QtxActionMenuMgr::QtxActionMenuMgr( QMainWindow* p ) : QtxActionMgr( p ), -myMenu( p ? p->menuBar() : 0 ) + myMenu( p ? p->menuBar() : 0 ) { myRoot.id = -1; myRoot.group = -1; if ( myMenu ) { connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); +#ifdef ENABLE_DYNAMIC_MENU if ( myMenu->inherits( "QMenuBar" ) ) connect( myMenu, SIGNAL( highlighted( int ) ), this, SLOT( onHighlighted( int ) ) ); +#endif } } +/*! + Constructor +*/ QtxActionMenuMgr::QtxActionMenuMgr( QWidget* mw, QObject* p ) : QtxActionMgr( p ), -myMenu( mw ) + myMenu( mw ) { myRoot.id = -1; myRoot.group = -1; @@ -155,6 +265,9 @@ myMenu( mw ) connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + Destructor +*/ QtxActionMenuMgr::~QtxActionMenuMgr() { for ( NodeListIterator it( myRoot.children ); it.current() && myMenu; ++it ) @@ -171,12 +284,23 @@ QtxActionMenuMgr::~QtxActionMenuMgr() delete itr.data(); } +/*! + \return whether menu item corresponding to action is visible + \param actId - identificator of action + \param place - identificator of some parent action +*/ bool QtxActionMenuMgr::isVisible( const int actId, const int place ) const { MenuNode* node = find( actId, place ); return node && node->visible; } +/*! + Sets visible state of action + \param actId - identificator of action + \param place - identificator of some parent action + \param v - visibility state +*/ void QtxActionMenuMgr::setVisible( const int actId, const int place, const bool v ) { MenuNode* node = find( actId, place ); @@ -184,16 +308,40 @@ void QtxActionMenuMgr::setVisible( const int actId, const int place, const bool node->visible = v; } +/*! + Insert action as children menu item + \param id - identificator of action + \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const QString& menus, const int group, const int idx ) { return insert( id, QStringList::split( "|", menus ), group, idx ); } +/*! + Insert action as children menu item + \param a - action + \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( QAction* a, const QString& menus, const int group, const int idx ) { return insert( a, QStringList::split( "|", menus ), group, idx ); } +/*! + Insert action as children menu item + \param id - identificator of action + \param menus - list of names of parent menu items, separated by |. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const QStringList& menus, const int group, const int idx ) { int pId = createMenu( menus, -1 ); @@ -203,6 +351,14 @@ int QtxActionMenuMgr::insert( const int id, const QStringList& menus, const int return insert( id, pId, group, idx ); } +/*! + Insert action as children menu item + \param a - action + \param menus - list of names of parent menu items. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( QAction* a, const QStringList& menus, const int group, const int idx ) { int pId = createMenu( menus, -1 ); @@ -212,6 +368,13 @@ int QtxActionMenuMgr::insert( QAction* a, const QStringList& menus, const int gr return insert( a, pId, group, idx ); } +/*! + Insert action as children menu item + \param id - identificator of action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, const int idx ) { if ( id == -1 ) @@ -233,11 +396,28 @@ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, cons return node->id; } +/*! + Insert action as children menu item + \param a - action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( QAction* a, const int pId, const int group, const int idx ) { return insert( registerAction( a ), pId, group, idx ); } +/*! + Create and insert action as children menu item + \return identificator of inserted action + \param title - menu text of action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator + \param id - identificator of new action + \param idx - index inside Qt menu + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ int QtxActionMenuMgr::insert( const QString& title, const int pId, const int group, const int id, const int idx, const bool allowEmpty ) { MenuNode* pNode = pId == -1 ? &myRoot : find( pId ); @@ -257,13 +437,17 @@ int QtxActionMenuMgr::insert( const QString& title, const int pId, const int gro if ( fid != -1 ) return fid; - MenuAction* ma = new MenuAction( clearTitle( title ), title, this, allowEmpty ); + int gid = (id == -1 || eNode ) ? generateId() : id; + + MenuAction* ma = new MenuAction( clearTitle( title ), title, this, gid, allowEmpty ); +#ifdef ENABLE_DYNAMIC_MENU connect( ma->popup(), SIGNAL( highlighted( int ) ), this, SLOT( onHighlighted( int ) ) ); +#endif MenuNode* node = new MenuNode( pNode ); node->group = group; node->idx = idx; - node->id = myMenus.insert( (id == -1 || eNode ) ? generateId() : id, ma ).key(); + node->id = myMenus.insert( gid, ma ).key(); pNode->children.append( node ); @@ -272,53 +456,129 @@ int QtxActionMenuMgr::insert( const QString& title, const int pId, const int gro return node->id; } +/*! + Create and insert action as children menu item + \return identificator of inserted action + \param title - menu text of action + \param menus - string list of parents' menu texts, separated by | + \param group - group identificator + \param id - identificator of new action + \param idx - index inside Qt menu + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ int QtxActionMenuMgr::insert( const QString& title, const QString& menus, const int group, const int id, const int idx, const bool allowEmpty ) { return insert( title, QStringList::split( "|", menus ), group, id, idx, allowEmpty ); } +/*! + Create and insert action as children menu item + \return identificator of inserted action + \param title - menu text of action + \param menus - list of parents menu items + \param group - group identificator + \param id - identificator of new action + \param idx - index inside Qt menu + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ int QtxActionMenuMgr::insert( const QString& title, const QStringList& menus, const int group, const int id, const int idx, const bool allowEmpty ) { int pId = createMenu( menus, -1 ); return insert( title, pId, group, id, idx, allowEmpty ); } +/*! + Create and append action as last children + \return identificator of inserted action + \param title - menu text of action + \param pId - id of action corresponding to parent menu item + \param group - group identificator + \param id - identificator of new action + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ int QtxActionMenuMgr::append( const QString& title, const int pId, const int group, const int id, const bool allowEmpty ) { return insert( title, pId, group, id, allowEmpty ); } +/*! + Create and append action as last children + \return identificator of inserted action + \param id - identificator of existing action + \param pId - id of action corresponding to parent menu item + \param group - group identificator +*/ int QtxActionMenuMgr::append( const int id, const int pId, const int group ) { return insert( id, pId, group ); } +/*! + Create and append action as last children + \return identificator of inserted action + \param a - action + \param pId - id of action corresponding to parent menu item + \param group - group identificator +*/ int QtxActionMenuMgr::append( QAction* a, const int pId, const int group ) { return insert( a, pId, group ); } +/*! + Create and insert action as first children + \return identificator of inserted action + \param title - menu text of action + \param pId - id of action corresponding to parent menu item + \param group - group identificator + \param id - identificator of new action + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ int QtxActionMenuMgr::prepend( const QString& title, const int pId, const int group, const int id, const bool allowEmpty ) { return insert( title, pId, group, id, 0, allowEmpty ); } +/*! + Create and insert action as last children + \return identificator of inserted action + \param id - identificator of existing action + \param pId - id of action corresponding to parent menu item + \param group - group identificator +*/ int QtxActionMenuMgr::prepend( const int id, const int pId, const int group ) { return insert( id, pId, group, 0 ); } +/*! + Create and insert action as last children + \return identificator of inserted action + \param a - action + \param pId - id of action corresponding to parent menu item + \param group - group identificator +*/ int QtxActionMenuMgr::prepend( QAction* a, const int pId, const int group ) { return insert( a, pId, group, 0 ); } +/*! + Removes menu item corresponding to action + \param id - identificator of action +*/ void QtxActionMenuMgr::remove( const int id ) { removeMenu( id, 0 ); update(); } +/*! + Removes menu item + \param id - identificator of action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator +*/ void QtxActionMenuMgr::remove( const int id, const int pId, const int group ) { MenuNode* pNode = pId == -1 ? &myRoot : find( pId ); @@ -338,16 +598,28 @@ void QtxActionMenuMgr::remove( const int id, const int pId, const int group ) updateMenu( pNode, false ); } +/*! + Shows menu item corresponding to action + \param id - identificator of action +*/ void QtxActionMenuMgr::show( const int id ) { setShown( id, true ); } +/*! + Hides menu item corresponding to action + \param id - identificator of action +*/ void QtxActionMenuMgr::hide( const int id ) { setShown( id, false ); } +/*! + \return shown status of menu item corresponding to action + \param id - identificator of action +*/ bool QtxActionMenuMgr::isShown( const int id ) const { bool res = false; @@ -357,6 +629,11 @@ bool QtxActionMenuMgr::isShown( const int id ) const return res; } +/*! + Sets shown status of menu item corresponding to action + \param id - identificator of action + \param on - new shown status +*/ void QtxActionMenuMgr::setShown( const int id, const bool on ) { NodeList aNodes; @@ -376,12 +653,18 @@ void QtxActionMenuMgr::setShown( const int id, const bool on ) updateMenu( itr.key(), false ); } +/*! + SLOT: called when corresponding menu is destroyed, clears internal pointer to menu +*/ void QtxActionMenuMgr::onDestroyed( QObject* obj ) { if ( myMenu == obj ) myMenu = 0; } +/*! + SLOT: called when menu item is highlighted +*/ void QtxActionMenuMgr::onHighlighted( int id ) { const QObject* snd = sender(); @@ -406,6 +689,10 @@ void QtxActionMenuMgr::onHighlighted( int id ) } } +/*! + Assignes new menu with manager + \param mw - new menu +*/ void QtxActionMenuMgr::setWidget( QWidget* mw ) { if ( myMenu == mw ) @@ -420,11 +707,23 @@ void QtxActionMenuMgr::setWidget( QWidget* mw ) connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + \return menu node by it's place description + \param actId - identificator of action + \param pId - identificator of action corresponding to start menu item + \param rec - recursive search +*/ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId, const bool rec ) const { return find( actId, find( pId ), rec ); } +/*! + \return menu node by it's place description + \param actId - identificator of action + \param startNode - start menu item + \param rec - recursive search +*/ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode, const bool rec ) const { MenuNode* node = 0; @@ -439,6 +738,13 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* star return node; } +/*! + Finds menu node + \return true if at least one node is found + \param id - identificator of action + \param lst - list to be filled with found nodes + \param startNode - start menu item +*/ bool QtxActionMenuMgr::find( const int id, NodeList& lst, MenuNode* startNode ) const { MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot; @@ -452,11 +758,25 @@ bool QtxActionMenuMgr::find( const int id, NodeList& lst, MenuNode* startNode ) return !lst.isEmpty(); } +/*! + Finds menu node + \return menu node + \param title - menu text of searched node + \param pId - id of action corresponding to start menu item + \param rec - recursive searching +*/ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int pId, const bool rec ) const { return find( title, find( pId ), rec ); } +/*! + Finds menu node + \return true if at least one node is found + \param title - menu text of node + \param lst - list to be filled with found nodes + \param startNode - start menu item +*/ bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* startNode ) const { MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot; @@ -473,6 +793,13 @@ bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* star return !lst.isEmpty(); } +/*! + Finds menu node + \return menu node + \param title - menu text of searched node + \param startNode - start menu item + \param rec - recursive searching +*/ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, MenuNode* startNode, const bool rec ) const { MenuNode* node = 0; @@ -490,6 +817,12 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, MenuNo return node; } +/*! + Find id among children + \return id (>0) if on success or -1 on fail + \param id - id to be searched + \param pid - id of parent, among children of that 'id' must be searched +*/ int QtxActionMenuMgr::findId( const int id, const int pid ) const { MenuNode* start = pid != -1 ? find( pid ) : (MenuNode*)&myRoot; @@ -501,6 +834,11 @@ int QtxActionMenuMgr::findId( const int id, const int pid ) const return -1; } +/*! + Removes child + \param id - id of child to be removed + \param startNode - parent menu item +*/ void QtxActionMenuMgr::removeMenu( const int id, MenuNode* startNode ) { MenuNode* start = startNode ? startNode : &myRoot; @@ -513,11 +851,19 @@ void QtxActionMenuMgr::removeMenu( const int id, MenuNode* startNode ) } } +/*! + \return menu item action by id + \param id - id of action +*/ QAction* QtxActionMenuMgr::itemAction( const int id ) const { return action( id ); } +/*! + \return menu action by id + \param id - id of action +*/ QtxActionMenuMgr::MenuAction* QtxActionMenuMgr::menuAction( const int id ) const { MenuAction* a = 0; @@ -528,6 +874,13 @@ QtxActionMenuMgr::MenuAction* QtxActionMenuMgr::menuAction( const int id ) const return a; } +/*! + Updates menu ( isUpdatesEnabled() must return true ) + \param startNode - first menu item to be updated + \param rec - recursive update + \param updParent - update also parent item (without recursion) + \sa isUpdatesEnabled() +*/ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bool updParent ) { if ( !isUpdatesEnabled() ) @@ -550,12 +903,12 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo if ( a ) a->removeFrom( mw ); } - + /* VSR: commented to allow direct creating of menus by calling insertItem() methods if ( mw->inherits( "QMenuBar" ) ) ((QMenuBar*)mw)->clear(); else if ( mw->inherits( "QPopupMenu" ) ) ((QPopupMenu*)mw)->clear(); - + */ QMap idMap; for ( NodeListIterator it2( node->children ); it2.current(); ++it2 ) { @@ -591,18 +944,8 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo QAction* a = itemAction( iter.current()->id ); if ( !a ) a = menuAction( iter.current()->id ); - if ( a ) { - QMenuData* md = dynamic_cast( mw ); - int cnt = 0; - if ( md ) cnt = md->count(); + if ( a ) a->addTo( mw ); - if ( md && md->count() - cnt == 1 ) { //&& iter.current()->id > 0 - int lid = md->idAt( cnt ); - QMenuItem* mi = md->findItem( lid ); - if ( mi && !mi->isSeparator() ) - md->setId( cnt, iter.current()->id ); - } - } } } @@ -612,12 +955,19 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo updateMenu( node->parent, false ); } +/*! + Updates menu (virtual variant). To be redefined for custom activity on menu updating +*/ void QtxActionMenuMgr::internalUpdate() { if ( isUpdatesEnabled() ) updateMenu(); } +/*! + \return true if widget is non-empty menu + \param wid - widget to be checked +*/ bool QtxActionMenuMgr::checkWidget( QWidget* wid ) const { if ( !wid ) @@ -629,9 +979,13 @@ bool QtxActionMenuMgr::checkWidget( QWidget* wid ) const else if ( wid->inherits( "QMenuBar" ) ) md = (QMenuBar*)wid; - return md->count(); + return md ? md->count() : false; } +/*! + \return popup of menu item + \param node - menu item +*/ QWidget* QtxActionMenuMgr::menuWidget( MenuNode* node) const { if ( !node || node == &myRoot ) @@ -643,12 +997,21 @@ QWidget* QtxActionMenuMgr::menuWidget( MenuNode* node) const return myMenus[node->id]->popup(); } +/*! + Removes excess separators of menu + \param wid - menu to be processed +*/ void QtxActionMenuMgr::simplifySeparators( QWidget* wid ) { if ( wid && wid->inherits( "QPopupMenu" ) ) Qtx::simplifySeparators( (QPopupMenu*)wid, false ); } +/*! + Removes special symbols (&) from string + \param txt - string to be processed + \return clear variant of string +*/ QString QtxActionMenuMgr::clearTitle( const QString& txt ) const { QString res = txt; @@ -662,6 +1025,11 @@ QString QtxActionMenuMgr::clearTitle( const QString& txt ) const return res; } +/*! + Creates and inserts many menu items + \param lst - list of menu texts + \param pId - id of action corresponding to parent menu item +*/ int QtxActionMenuMgr::createMenu( const QStringList& lst, const int pId ) { if ( lst.isEmpty() ) @@ -677,27 +1045,44 @@ int QtxActionMenuMgr::createMenu( const QStringList& lst, const int pId ) return insert( title, parentId, -1 ); } +/*! + Loads actions description from file + \param fname - name of file + \param r - reader of file + \return true on success +*/ bool QtxActionMenuMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { MenuCreator cr( &r, this ); return r.read( fname, cr ); } +/*! + \return true if item has such child + \param title - menu text of child + \param pid - id of action corresponding to item +*/ bool QtxActionMenuMgr::containsMenu( const QString& title, const int pid ) const { return (bool)find( title, pid, false ); } +/*! + \return true if item has such child + \param id - id of action corresponding to child + \param pid - id of action corresponding to item +*/ bool QtxActionMenuMgr::containsMenu( const int id, const int pid ) const { return (bool)find( id, pid, false ); } + /*! - Class: QtxActionMenuMgr::MenuCreator - Level: Public + Constructor + \param r - menu reader + \param mgr - menu manager */ - QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r, QtxActionMenuMgr* mgr ) : QtxActionMgr::Creator( r ), @@ -705,10 +1090,20 @@ QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r, { } +/*! + Destructor +*/ QtxActionMenuMgr::MenuCreator::~MenuCreator() { } +/*! + Appends new menu items + \param tag - tag of item + \param subMenu - it has submenu + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxActionMenuMgr::MenuCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int pId ) { diff --git a/src/Qtx/QtxActionMenuMgr.h b/src/Qtx/QtxActionMenuMgr.h index f06ff9d3b..252ef42ab 100644 --- a/src/Qtx/QtxActionMenuMgr.h +++ b/src/Qtx/QtxActionMenuMgr.h @@ -35,6 +35,18 @@ class QMainWindow; #pragma warning( disable:4251 ) #endif +/*! + \class QtxActionMenuMgr + Allows to use set of action to automatically build main menu. + With help of methods insert/append/remove it is possible to + describe whole structure of menu. Method hide allows + to temporary remove some items from menu, method show allows to + recreate them. + Actions can be grouped with help of group identifictor. + Inside popup or menu bar items have order by increasing group id. + This manager is able to attune menu: to remove excess separators, + to remove empty popup menu etc. +*/ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr { Q_OBJECT @@ -44,6 +56,11 @@ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr typedef QPtrList NodeList; typedef QPtrListIterator NodeListIterator; + /*! + \class MenuNode + Represents a menu item inside main menu structure. + For internal purposes only + */ class MenuNode { public: @@ -148,6 +165,10 @@ private: MenuMap myMenus; }; +/*! + \class QtxActionMenuMgr::MenuCreator + Allows to create automatically main menu by data read from file +*/ class QtxActionMenuMgr::MenuCreator : public QtxActionMgr::Creator { public: diff --git a/src/Qtx/QtxActionMgr.cxx b/src/Qtx/QtxActionMgr.cxx index 16ec7b5b1..40823f61a 100644 --- a/src/Qtx/QtxActionMgr.cxx +++ b/src/Qtx/QtxActionMgr.cxx @@ -58,15 +58,25 @@ private: QMap myTools; }; +/*! + Constructor +*/ QtxActionMgr::SeparatorAction::SeparatorAction( QObject* parent ) : QtxAction( parent ) { } +/*! + Destructor +*/ QtxActionMgr::SeparatorAction::~SeparatorAction() { } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxActionMgr::SeparatorAction::addTo( QWidget* wid ) { if ( !wid ) @@ -90,6 +100,10 @@ bool QtxActionMgr::SeparatorAction::addTo( QWidget* wid ) return res; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxActionMgr::SeparatorAction::removeFrom( QWidget* wid ) { if ( !wid ) @@ -140,16 +154,28 @@ bool QtxActionMgr::SeparatorAction::removeFrom( QWidget* wid ) Level: Public */ +/*! + Constructor +*/ QtxActionMgr::QtxActionMgr( QObject* parent ) : QObject( parent ), myUpdate( true ) { } +/*! + Destructor +*/ QtxActionMgr::~QtxActionMgr() { } +/*! + Stores action in internal map + If action with such id is registered already, then it will be unregistered + \param a - action to be registered + \param userId - proposed id (if it is less than 0, then id will be generated automatically) +*/ int QtxActionMgr::registerAction( QAction* a, const int userId ) { if ( !a ) @@ -174,12 +200,20 @@ int QtxActionMgr::registerAction( QAction* a, const int userId ) return theId; } +/*! + Removes action from internal map + \param id - action id +*/ void QtxActionMgr::unRegisterAction( const int id ) { if( contains( id ) ) myActions.remove( id ); } +/*! + \return action by id + \param id - action id +*/ QAction* QtxActionMgr::action( const int id ) const { if ( contains( id ) ) @@ -188,6 +222,10 @@ QAction* QtxActionMgr::action( const int id ) const return 0; } +/*! + \return id by action + \param a - action +*/ int QtxActionMgr::actionId( const QAction* a ) const { if ( !a ) @@ -203,61 +241,101 @@ int QtxActionMgr::actionId( const QAction* a ) const return theId; } +/*! + \return true if internal map contains such id + \param id - action id +*/ bool QtxActionMgr::contains( const int id ) const { return myActions.contains( id ); } +/*! + \return count of actions in internal map +*/ int QtxActionMgr::count() const { return myActions.count(); } +/*! + \return true if internal map is empty +*/ bool QtxActionMgr::isEmpty() const { return myActions.isEmpty(); } +/*! + Fills list with ids of registered actions +*/ void QtxActionMgr::idList( QIntList& lst ) const { lst = myActions.keys(); } +/*! + \return true if updates are enabled +*/ bool QtxActionMgr::isUpdatesEnabled() const { return myUpdate; } +/*! + Enables/disables updates + \param upd - new state +*/ void QtxActionMgr::setUpdatesEnabled( const bool upd ) { myUpdate = upd; } +/*! + \return true if action is visible (by default \return always true) +*/ bool QtxActionMgr::isVisible( const int, const int ) const { return true; } +/*! + Sets visibility of action (by default, empty implementation) +*/ void QtxActionMgr::setVisible( const int, const int, const bool ) { } +/*! + Updates actions, check isUpdatesEnabled() and call internalUpdate() + \sa isUpdatesEnabled(), internalUpdate() +*/ void QtxActionMgr::update() { if ( isUpdatesEnabled() ) internalUpdate(); } +/*! + Real update (to be redefined in successors) +*/ void QtxActionMgr::internalUpdate() { } +/*! + \return global free id +*/ int QtxActionMgr::generateId() const { static int id = -1; return --id; } +/*! + \return true if action is enabled + \param id - action id +*/ bool QtxActionMgr::isEnabled( const int id ) const { QAction* a = action( id ); @@ -267,6 +345,11 @@ bool QtxActionMgr::isEnabled( const int id ) const return false; } +/*! + Enables/disables action + \param id - action id + \param en - new state +*/ void QtxActionMgr::setEnabled( const int id, const bool en ) { QAction* a = action( id ); @@ -274,6 +357,11 @@ void QtxActionMgr::setEnabled( const int id, const bool en ) a->setEnabled( en ); } +/*! + \return action for separator + If this action doesn't exist, then it will be created + \param individual - if it is false, then action will be shared, otherwise it will be created on every call +*/ QAction* QtxActionMgr::separator( const bool individual ) { if ( individual ) @@ -292,19 +380,33 @@ QAction* QtxActionMgr::separator( const bool individual ) Level: Public */ +/*! + Constructor +*/ QtxActionMgr::Reader::Reader() { } +/*! + Destructor +*/ QtxActionMgr::Reader::~Reader() { } +/*! + \return list of options +*/ QStringList QtxActionMgr::Reader::options() const { return myOptions.keys(); } +/*! + \return value of option + \param name - option name + \param def - default option value (is returned, if there is no such option) +*/ QString QtxActionMgr::Reader::option( const QString& name, const QString& def ) const { if( myOptions.contains( name ) ) @@ -313,6 +415,11 @@ QString QtxActionMgr::Reader::option( const QString& name, const QString& def ) return def; } +/*! + Sets value of option + \param name - option name + \param value - option value +*/ void QtxActionMgr::Reader::setOption( const QString& name, const QString& value ) { myOptions[ name ] = value; @@ -320,8 +427,7 @@ void QtxActionMgr::Reader::setOption( const QString& name, const QString& value /*! - Class: QtxActionMgr::XMLReader - Level: Public + Constructor */ QtxActionMgr::XMLReader::XMLReader( const QString& root, const QString& item, @@ -342,10 +448,18 @@ QtxActionMgr::XMLReader::XMLReader( const QString& root, setOption( QString( "toggle" ), QString( "toggle-id" ) ); } +/*! + Destructor +*/ QtxActionMgr::XMLReader::~XMLReader() { } +/*! + Reads file and fills action manager with help of creator + \param fname - file name + \param cr - creator +*/ bool QtxActionMgr::XMLReader::read( const QString& fname, Creator& cr ) const { bool res = false; @@ -386,6 +500,12 @@ bool QtxActionMgr::XMLReader::read( const QString& fname, Creator& cr ) const return res; } +/*! + Create item by xml node + \param parent_node - parent node + \param parent_id - parent id + \param cr - creator +*/ void QtxActionMgr::XMLReader::read( const QDomNode& parent_node, const int parent_id, Creator& cr ) const @@ -420,6 +540,9 @@ void QtxActionMgr::XMLReader::read( const QDomNode& parent_node, } } +/*! + \return true if node satisfies pattern +*/ bool QtxActionMgr::XMLReader::isNodeSimilar( const QDomNode& node, const QString& pattern ) const { @@ -445,8 +568,10 @@ bool QtxActionMgr::XMLReader::isNodeSimilar( const QDomNode& node, /*! - Class: QtxActionMgr::Creator - Level: Public + \return integer value by attributes + \param attrs - attributes + \param name - name of attribute + \param def - default value (is returned on fail) */ int QtxActionMgr::Creator::intValue( const ItemAttributes& attrs, const QString& name, int def ) @@ -461,6 +586,12 @@ int QtxActionMgr::Creator::intValue( const ItemAttributes& attrs, return def; } +/*! + \return string value by attributes + \param attrs - attributes + \param name - name of attribute + \param def - default value (is returned on fail) +*/ QString QtxActionMgr::Creator::strValue( const ItemAttributes& attrs, const QString& name, const QString& def ) @@ -471,24 +602,41 @@ QString QtxActionMgr::Creator::strValue( const ItemAttributes& attrs, return def; } +/*! + Constructor +*/ QtxActionMgr::Creator::Creator( QtxActionMgr::Reader* r ) : myReader( r ) { } +/*! + Destructor +*/ QtxActionMgr::Creator::~Creator() { } +/*! + \return corresponding reader +*/ QtxActionMgr::Reader* QtxActionMgr::Creator::reader() const { return myReader; } +/*! + Connects action to some slots (default implementation is empty) +*/ void QtxActionMgr::Creator::connect( QAction* ) const { } +/*! + Loads pixmap + \param fname - file name + \param pix - to return loaded pixmap +*/ bool QtxActionMgr::Creator::loadPixmap( const QString& fname, QPixmap& pix ) const { if( !reader() ) diff --git a/src/Qtx/QtxActionMgr.h b/src/Qtx/QtxActionMgr.h index 60fc342c0..8a82362f0 100644 --- a/src/Qtx/QtxActionMgr.h +++ b/src/Qtx/QtxActionMgr.h @@ -36,6 +36,12 @@ class QDomNode; #pragma warning( disable:4251 ) #endif + +/*! + \class QtxActionMgr + Contains set of actions accessible by id. + Base class for menu, popup creators and other action containers. +*/ class QTX_EXPORT QtxActionMgr : public QObject { Q_OBJECT @@ -93,6 +99,10 @@ private: QTX_EXPORT typedef QMap ItemAttributes; +/*! + \class QtxActionMgr::Creator + Allows to fill automatically action manager with actions created by data from file +*/ class QtxActionMgr::Creator { public: @@ -115,6 +125,11 @@ private: QtxActionMgr::Reader* myReader; }; +/*! + \class QtxActionMgr::Reader + This class is used to read files of some format + to create actions and to fill action manager automatically +*/ class QtxActionMgr::Reader { public: @@ -131,6 +146,11 @@ private: QMap< QString, QString > myOptions; }; +/*! + \class QtxActionMgr::Reader + This class is used to read files of XML format + to create actions and to fill action manager automatically +*/ class QtxActionMgr::XMLReader : public Reader { public: diff --git a/src/Qtx/QtxActionToolMgr.cxx b/src/Qtx/QtxActionToolMgr.cxx index b9ff56c8f..7529fe250 100644 --- a/src/Qtx/QtxActionToolMgr.cxx +++ b/src/Qtx/QtxActionToolMgr.cxx @@ -27,21 +27,36 @@ #include #include +/*! + Constructor +*/ QtxActionToolMgr::QtxActionToolMgr( QMainWindow* p ) : QtxActionMgr( p ), myMainWindow( p ) { } +/*! + Destructor +*/ QtxActionToolMgr::~QtxActionToolMgr() { } +/*! + \return desktop +*/ QMainWindow* QtxActionToolMgr::mainWindow() const { return myMainWindow; } +/*! + Creates toolbar + \return id of just created toolbar + \param name - name of toolbar + \param tid - proposed id (if such id is used already, then it will be returned without creation) +*/ int QtxActionToolMgr::createToolBar( const QString& name, const int tid ) { static int _toolBarId = -1; @@ -75,6 +90,11 @@ int QtxActionToolMgr::createToolBar( const QString& name, const int tid ) return tbId; } +/*! + \return toolbar by title + \param label - toolbar title + \param mw - desktop +*/ QToolBar* QtxActionToolMgr::find( const QString& label, QMainWindow* mw ) const { if ( !mw ) @@ -96,6 +116,10 @@ QToolBar* QtxActionToolMgr::find( const QString& label, QMainWindow* mw ) const return res; } +/*! + Removes toolbar + \param tid - toolbar id +*/ void QtxActionToolMgr::removeToolBar( const int tid ) { if ( !myToolBars.contains( tid ) ) @@ -105,16 +129,29 @@ void QtxActionToolMgr::removeToolBar( const int tid ) myToolBars.remove( tid ); } +/*! + Removes toolbar + \param tname - toolbar name +*/ void QtxActionToolMgr::removeToolBar( const QString& tname ) { removeToolBar( find( tname ) ); } +/*! + Insert action into toolbar + \param id - identificator of action + \param tId - identificator of toolbar + \param idx - position inside toolbar +*/ int QtxActionToolMgr::insert( const int id, const int tid, const int idx ) { if ( !contains( id ) || !hasToolBar( tid ) ) return -1; + if ( containsAction( id, tid ) ) + remove( id, tid ); + ToolNode node; node.id = id; @@ -126,61 +163,124 @@ int QtxActionToolMgr::insert( const int id, const int tid, const int idx ) return id; } +/*! + Insert action into toolbar + \param act - action + \param tId - identificator of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( QAction* act, const int tid, const int pos ) { return insert( registerAction( act ), tid, pos ); } +/*! + Insert action into toolbar + \param id - identificator of action + \param tname - name of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( const int id, const QString& tname, const int pos ) { return insert( id, createToolBar( tname ), pos ); } +/*! + Insert action into toolbar + \param act - action + \param tname - name of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( QAction* act, const QString& tname, const int pos ) { return insert( registerAction( act ), createToolBar( tname ), pos ); } +/*! + Append action into toolbar as last toolbutton + \param id - identificator of action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::append( const int id, const int tid ) { return insert( id, tid ); } +/*! + Append action into toolbar as last toolbutton + \param act - action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::append( QAction* act, const int tid ) { return insert( act, tid ); } +/*! + Append action into toolbar as last toolbutton + \param id - identificator of action + \param tname - toolbar name +*/ int QtxActionToolMgr::append( const int id, const QString& tname ) { return insert( id, tname ); } +/*! + Append action into toolbar as last toolbutton + \param act - action + \param tname - toolbar name +*/ int QtxActionToolMgr::append( QAction* act, const QString& tname ) { return insert( act, tname ); } +/*! + Append action into toolbar as first toolbutton + \param id - identificator of action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::prepend( const int id, const int tid ) { return insert( id, tid, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param act - action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::prepend( QAction* act, const int tid ) { return insert( act, tid, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param id - identificator of action + \param tname - toolbar name +*/ int QtxActionToolMgr::prepend( const int id, const QString& tname ) { return insert( id, tname, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param act - action + \param tname - toolbar name +*/ int QtxActionToolMgr::prepend( QAction* act, const QString& tname ) { return insert( act, tname, 0 ); } +/*! + Remove action from toolbar + \param id - identificator of action + \param tId - identificator of toolbar +*/ void QtxActionToolMgr::remove( const int id, const int tid ) { if ( !myToolBars.contains( tid ) ) @@ -199,11 +299,20 @@ void QtxActionToolMgr::remove( const int id, const int tid ) updateToolBar( tid ); } +/*! + Remove action from toolbar + \param id - identificator of action + \param tname - name of toolbar +*/ void QtxActionToolMgr::remove( const int id, const QString& tname ) { remove( id, find( tname ) ); } +/*! + \return toolbar by it's id + \param tId - identificator of toolbar +*/ QToolBar* QtxActionToolMgr::toolBar( const int tid ) const { QToolBar* tb = 0; @@ -212,21 +321,38 @@ QToolBar* QtxActionToolMgr::toolBar( const int tid ) const return tb; } +/*! + \return toolbar by it's name + \param tname - name of toolbar +*/ QToolBar* QtxActionToolMgr::toolBar( const QString& tname ) const { return toolBar( find( tname ) ); } +/*! + \return true if manager contains toolbar with such id + \param tId - identificator of toolbar +*/ bool QtxActionToolMgr::hasToolBar( const int tid ) const { return myToolBars.contains( tid ); } +/*! + \return true if manager contains toolbar with such name + \param tname - name of toolbar +*/ bool QtxActionToolMgr::hasToolBar( const QString& tname ) const { return find( tname ) != -1; } +/*! + \return true if toolbar contains action + \param id - identificator of action + \param tId - identificator of toolbar +*/ bool QtxActionToolMgr::containsAction( const int id, const int tid ) const { for ( ToolBarMap::ConstIterator it = myToolBars.begin(); it != myToolBars.end(); ++it ) @@ -241,11 +367,18 @@ bool QtxActionToolMgr::containsAction( const int id, const int tid ) const return false; } +/*! + SLOT: called when toolbar is destroyed, removes just destroyed toolbar from map +*/ void QtxActionToolMgr::onToolBarDestroyed() { myToolBars.remove( find( (QToolBar*)sender() ) ); } +/*! + \return id of toolbar by it's name + \param tname - name of toolbar +*/ int QtxActionToolMgr::find( const QString& tname ) const { int id = -1; @@ -257,6 +390,10 @@ int QtxActionToolMgr::find( const QString& tname ) const return id; } +/*! + \return id of toolbar + \param t - toolbar +*/ int QtxActionToolMgr::find( QToolBar* t ) const { int id = -1; @@ -268,6 +405,10 @@ int QtxActionToolMgr::find( QToolBar* t ) const return id; } +/*! + Updates toolbar + \param tId - toolbar id +*/ void QtxActionToolMgr::updateToolBar( const int tId ) { if ( !isUpdatesEnabled() ) @@ -301,34 +442,57 @@ void QtxActionToolMgr::updateToolBar( const int tId ) simplifySeparators( tb ); } +/*! + Updates all toolbars +*/ void QtxActionToolMgr::internalUpdate() { for ( ToolBarMap::ConstIterator it1 = myToolBars.begin(); it1 != myToolBars.end(); ++it1 ) updateToolBar( it1.key() ); } +/*! + Removes excess separators from toolbar +*/ void QtxActionToolMgr::simplifySeparators( QToolBar* t ) { if ( t ) Qtx::simplifySeparators( t ); } +/*! + Shows action in all toolbars + \param actId - action id +*/ void QtxActionToolMgr::show( const int actId ) { setShown( actId, true ); } +/*! + Hides action in all toolbars + \param actId - action id +*/ void QtxActionToolMgr::hide( const int actId ) { setShown( actId, false ); } +/*! + Changes shown status of action in all toolbars + \param id - action id + \param on - new shown status +*/ void QtxActionToolMgr::setShown( const int id, const bool on ) { for ( ToolBarMap::Iterator it = myToolBars.begin(); it != myToolBars.end(); ++it ) setVisible( id, it.key(), on ); } +/*! + \return true if action is shown in all toolbars + \param id - action id +*/ bool QtxActionToolMgr::isShown( const int id ) const { QPtrList nodes; @@ -353,6 +517,11 @@ bool QtxActionToolMgr::isShown( const int id ) const return vis; } +/*! + \return shown status of action in toolbar + \param id - action id + \param tId - toolbar id +*/ bool QtxActionToolMgr::isVisible( const int id, const int tId ) const { if ( !myToolBars.contains( tId ) ) @@ -369,6 +538,12 @@ bool QtxActionToolMgr::isVisible( const int id, const int tId ) const return vis; } +/*! + Changes action shown status in certain toolbar + \param id - action id + \param tId - toolbar id + \param on - new shown status +*/ void QtxActionToolMgr::setVisible( const int id, const int tId, const bool on ) { if ( !myToolBars.contains( tId ) ) @@ -390,6 +565,11 @@ void QtxActionToolMgr::setVisible( const int id, const int tId, const bool on ) updateToolBar( tId ); } +/*! + Loads toolbar content from file + \param fname - file name + \param r - reader +*/ bool QtxActionToolMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { ToolCreator cr( &r, this ); @@ -398,8 +578,7 @@ bool QtxActionToolMgr::load( const QString& fname, QtxActionMgr::Reader& r ) /*! - Class: QtxActionToolMgr::ToolCreator - Level: Public + Constructor */ QtxActionToolMgr::ToolCreator::ToolCreator( QtxActionMgr::Reader* r, QtxActionToolMgr* mgr ) @@ -408,10 +587,20 @@ QtxActionToolMgr::ToolCreator::ToolCreator( QtxActionMgr::Reader* r, { } +/*! + Destructor +*/ QtxActionToolMgr::ToolCreator::~ToolCreator() { } +/*! + Appends new tool buttons + \param tag - tag of toolmenu + \param subMenu - it has submenu (not used here) + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxActionToolMgr::ToolCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int tId ) { diff --git a/src/Qtx/QtxActionToolMgr.h b/src/Qtx/QtxActionToolMgr.h index 48a722785..b86c53f41 100644 --- a/src/Qtx/QtxActionToolMgr.h +++ b/src/Qtx/QtxActionToolMgr.h @@ -35,10 +35,22 @@ class QMainWindow; #pragma warning( disable:4251 ) #endif +/*! + \class QtxActionToolMgr + Allows to use set of action to automatically build set of toolbars. + With help of methods insert/append/remove it is possible to + describe toolbars and its internal structure. + This manager is able to attune toolbar by removing excess separators +*/ class QTX_EXPORT QtxActionToolMgr : public QtxActionMgr { Q_OBJECT + /*! + \class ToolNode + Represents a toolbutton inside toolbar + For internal purposes only + */ class ToolNode { public: @@ -122,6 +134,10 @@ private: QMainWindow* myMainWindow; }; +/*! + \class QtxActionToolMgr::ToolCreator + Allows to create automatically toolbar by data read from file +*/ class QtxActionToolMgr::ToolCreator : public QtxActionMgr::Creator { public: diff --git a/src/Qtx/QtxColorScale.cxx b/src/Qtx/QtxColorScale.cxx index 7be7ba48d..1c703dad0 100755 --- a/src/Qtx/QtxColorScale.cxx +++ b/src/Qtx/QtxColorScale.cxx @@ -34,12 +34,9 @@ #include -/********************************************************************* -** Class: QtxColorScale -** Descr: Color Scale widget. -** Level: Public -*********************************************************************/ - +/*! + Constructor +*/ QtxColorScale::QtxColorScale( QWidget* parent, const char* name, WFlags f ) : QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ), myDock( 0 ), @@ -59,6 +56,9 @@ myFlags( AtBorder | WrapTitle ) setCaption( tr ( "Color scale" ) ); } +/*! + Constructor +*/ QtxColorScale::QtxColorScale( const int num, QWidget* parent, const char* name, WFlags f ) : QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ), myDock( 0 ), @@ -80,6 +80,9 @@ myFlags( AtBorder | WrapTitle ) #if QT_VER == 3 +/*! + Constructor +*/ QtxColorScale::QtxColorScale( Dock* dock, const char* name, WFlags f ) : QFrame( dock, name, f | WResizeNoErase | WRepaintNoErase ), myMin( 0.0 ), @@ -101,107 +104,89 @@ myFlags( AtBorder | WrapTitle ) #endif +/*! + Destructor +*/ QtxColorScale::~QtxColorScale() { } -//================================================================ -// Function : minimum -// Purpose : Returns minimal limit of scale. -//================================================================ - +/*! + \returns minimal limit of scale. +*/ double QtxColorScale::minimum() const { return myMin; } -//================================================================ -// Function : maximum -// Purpose : Returns maximal limit of scale. -//================================================================ - +/*! + \return maximal limit of scale. +*/ double QtxColorScale::maximum() const { return myMax; } -//================================================================ -// Function : range -// Purpose : Returns range (minimal and maximal limits) of scale. -//================================================================ - +/*! + \return range (minimal and maximal limits) of scale. +*/ void QtxColorScale::range( double& min, double& max ) const { min = myMin; max = myMax; } -//================================================================ -// Function : title -// Purpose : Returns the current title string. -//================================================================ - +/*! + \return the current title string. +*/ QString QtxColorScale::title() const { return myTitle; } -//================================================================ -// Function : format -// Purpose : Returns the current format of number presentation in -// labels for Auto label mode (sprintf specification). -//================================================================ - +/*! + \returns the current format of number presentation in labels for Auto label mode (sprintf specification). +*/ QString QtxColorScale::format() const { return myFormat; } -//================================================================ -// Function : dumpMode -// Purpose : Returns dump mode. -//================================================================ - +/*! + \return dump mode. +*/ int QtxColorScale::dumpMode() const { return myDumpMode; } -//================================================================ -// Function : labelMode -// Purpose : Returns label mode. -//================================================================ - +/*! + \return label mode. +*/ int QtxColorScale::labelMode() const { return myLabelMode; } -//================================================================ -// Function : colorMode -// Purpose : Returns color mode. -//================================================================ - +/*! + \return color mode. +*/ int QtxColorScale::colorMode() const { return myColorMode; } -//================================================================ -// Function : intervalsNumber -// Purpose : Returns intervals number of color scale. -//================================================================ - +/*! + \return intervals number of color scale. +*/ int QtxColorScale::intervalsNumber() const { return myInterval; } -//================================================================ -// Function : label -// Purpose : Returns the user label of specified interval. -//================================================================ - +/*! + \return the user label of specified interval. +*/ QString QtxColorScale::label( const int idx ) const { QString res; @@ -210,11 +195,9 @@ QString QtxColorScale::label( const int idx ) const return res; } -//================================================================ -// Function : color -// Purpose : Returns the user color of specified interval. -//================================================================ - +/*! + \return the user color of specified interval. +*/ QColor QtxColorScale::color( const int idx ) const { QColor res; @@ -223,71 +206,57 @@ QColor QtxColorScale::color( const int idx ) const return res; } -//================================================================ -// Function : labels -// Purpose : Returns the user labels. -//================================================================ - +/*! + \return the user labels. +*/ void QtxColorScale::labels( QStringList& list ) const { list = myLabels; } -//================================================================ -// Function : colors -// Purpose : Returns the user color. -//================================================================ - +/*! + \return the user color. +*/ void QtxColorScale::colors( QValueList& list ) const { list = myColors; } -//================================================================ -// Function : labelPosition -// Purpose : Returns the label position. -//================================================================ - +/*! + \return the label position. +*/ int QtxColorScale::labelPosition() const { return myLabelPos; } -//================================================================ -// Function : titlePosition -// Purpose : Returns the title position. -//================================================================ - +/*! + \return the title position. +*/ int QtxColorScale::titlePosition() const { return myTitlePos; } -//================================================================ -// Function : setMinimum -// Purpose : Sets the minimum limit. -//================================================================ - +/*! + Sets the minimum limit. +*/ void QtxColorScale::setMinimum( const double val ) { setRange( val, maximum() ); } -//================================================================ -// Function : setMaximum -// Purpose : Sets the maximum limit. -//================================================================ - +/*! + Sets the maximum limit. +*/ void QtxColorScale::setMaximum( const double val ) { setRange( minimum(), val ); } -//================================================================ -// Function : setRange -// Purpose : Sets the minimum and maximum limits. -//================================================================ - +/*! + Sets the minimum and maximum limits. +*/ void QtxColorScale::setRange( const double min, const double max ) { if ( myMin == min && myMax == max ) @@ -302,11 +271,9 @@ void QtxColorScale::setRange( const double min, const double max ) updateScale(); } -//================================================================ -// Function : setTitle -// Purpose : Sets the title string. -//================================================================ - +/*! + Sets the title string. +*/ void QtxColorScale::setTitle( const QString& str ) { if ( myTitle == str ) @@ -316,12 +283,10 @@ void QtxColorScale::setTitle( const QString& str ) updateScale(); } -//================================================================ -// Function : setFormat -// Purpose : Sets the format of number presentation in labels for -// Auto label mode (sprintf specification). -//================================================================ - +/*! + Sets the format of number presentation in labels for + Auto label mode (sprintf specification). +*/ void QtxColorScale::setFormat( const QString& format ) { if ( myFormat == format ) @@ -333,11 +298,9 @@ void QtxColorScale::setFormat( const QString& format ) updateScale(); } -//================================================================ -// Function : setIntervalsNumber -// Purpose : Sets the number of intervals. -//================================================================ - +/*! + Sets the number of intervals. +*/ void QtxColorScale::setIntervalsNumber( const int num ) { if ( myInterval == num || num < 1 ) @@ -349,13 +312,11 @@ void QtxColorScale::setIntervalsNumber( const int num ) updateScale(); } -//================================================================ -// Function : setLabel -// Purpose : Sets the user label for specified interval. If number -// of interval is negative then user label will be added -// as new at the end of list. -//================================================================ - +/*! + Sets the user label for specified interval. If number + of interval is negative then user label will be added + as new at the end of list. +*/ void QtxColorScale::setLabel( const QString& txt, const int idx ) { bool changed = false; @@ -376,13 +337,11 @@ void QtxColorScale::setLabel( const QString& txt, const int idx ) updateScale(); } -//================================================================ -// Function : setColor -// Purpose : Sets the user color for specified interval. If number -// of interval is negative then user color will be added -// as new at the end of list. -//================================================================ - +/*! + Sets the user color for specified interval. If number + of interval is negative then user color will be added + as new at the end of list. +*/ void QtxColorScale::setColor( const QColor& clr, const int idx ) { bool changed = false; @@ -403,11 +362,9 @@ void QtxColorScale::setColor( const QColor& clr, const int idx ) updateScale(); } -//================================================================ -// Function : setLabels -// Purpose : Replace the all user label with specified list. -//================================================================ - +/*! + Replace the all user label with specified list. +*/ void QtxColorScale::setLabels( const QStringList& list ) { if ( list.isEmpty() ) @@ -417,11 +374,9 @@ void QtxColorScale::setLabels( const QStringList& list ) updateScale(); } -//================================================================ -// Function : setColors -// Purpose : Replace the all user colors with specified list. -//================================================================ - +/*! + Replace the all user colors with specified list. +*/ void QtxColorScale::setColors( const QValueList& list ) { if ( list.isEmpty() ) @@ -431,11 +386,9 @@ void QtxColorScale::setColors( const QValueList& list ) updateScale(); } -//================================================================ -// Function : setColorMode -// Purpose : Sets the color mode (Auto or User). -//================================================================ - +/*! + Sets the color mode (Auto or User). +*/ void QtxColorScale::setColorMode( const int mode ) { if ( myColorMode == mode ) @@ -445,21 +398,17 @@ void QtxColorScale::setColorMode( const int mode ) updateScale(); } -//================================================================ -// Function : setDumpMode -// Purpose : Sets the dump mode. -//================================================================ - +/*! + Sets the dump mode. +*/ void QtxColorScale::setDumpMode( const int mode ) { myDumpMode = mode; } -//================================================================ -// Function : setLabelMode -// Purpose : Sets the label mode (Auto or User). -//================================================================ - +/*! + Sets the label mode (Auto or User). +*/ void QtxColorScale::setLabelMode( const int mode ) { if ( myLabelMode != mode ) @@ -469,11 +418,9 @@ void QtxColorScale::setLabelMode( const int mode ) } } -//================================================================ -// Function : setLabelPosition -// Purpose : Sets the label position. -//================================================================ - +/*! + Sets the label position. +*/ void QtxColorScale::setLabelPosition( const int pos ) { if ( myLabelPos != pos && pos >= None && pos <= Center ) @@ -483,11 +430,9 @@ void QtxColorScale::setLabelPosition( const int pos ) } } -//================================================================ -// Function : setTitlePosition -// Purpose : Sets the title position. -//================================================================ - +/*! + Sets the title position. +*/ void QtxColorScale::setTitlePosition( const int pos ) { if ( myTitlePos != pos && pos >= None && pos <= Center ) @@ -497,11 +442,9 @@ void QtxColorScale::setTitlePosition( const int pos ) } } -//================================================================ -// Function : setFlags -// Purpose : Set the specified flags. -//================================================================ - +/*! + Set the specified flags. +*/ void QtxColorScale::setFlags( const int flags ) { int prev = myFlags; @@ -510,21 +453,17 @@ void QtxColorScale::setFlags( const int flags ) updateScale(); } -//================================================================ -// Function : testFlags -// Purpose : Returns true if specified flags are setted. -//================================================================ - +/*! + \return true if specified flags are setted. +*/ bool QtxColorScale::testFlags( const int flags ) const { return ( myFlags & flags ) == flags; } -//================================================================ -// Function : clearFlags -// Purpose : Clear (reset) the specified flags. -//================================================================ - +/*! + Clear (reset) the specified flags. +*/ void QtxColorScale::clearFlags( const int flags ) { int prev = myFlags; @@ -533,33 +472,27 @@ void QtxColorScale::clearFlags( const int flags ) updateScale(); } -//================================================================ -// Function : minimumSizeHint -// Purpose : -//================================================================ - +/*! + \return minimum size hint +*/ QSize QtxColorScale::minimumSizeHint() const { QSize sz = calculateSize( true, myFlags, titlePosition() != None, labelPosition() != None, true ); return sz + QSize( frameWidth(), frameWidth() ); } -//================================================================ -// Function : sizeHint -// Purpose : -//================================================================ - +/*! + \return size hint +*/ QSize QtxColorScale::sizeHint() const { QSize sz = calculateSize( false, myFlags, titlePosition() != None, labelPosition() != None, true ); return sz + QSize( frameWidth(), frameWidth() ); } -//================================================================ -// Function : calculateSize -// Purpose : Dump color scale into pixmap with current size. -//================================================================ - +/*! + Dump color scale into pixmap with current size. +*/ QSize QtxColorScale::calculateSize( const bool min, const int flags, const bool title, const bool labels, const bool colors ) const { @@ -631,11 +564,9 @@ QSize QtxColorScale::calculateSize( const bool min, const int flags, const bool return QSize( W, H ); } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with current size. -//================================================================ - +/*! + Dump color scale into pixmap with current size. +*/ QPixmap QtxColorScale::dump() const { QPixmap aPix; @@ -667,11 +598,9 @@ QPixmap QtxColorScale::dump() const return aPix; } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with specified size. -//================================================================ - +/*! + Dump color scale into pixmap with specified size. +*/ QPixmap QtxColorScale::dump( const int w, const int h ) const { #if QT_VER < 3 @@ -681,12 +610,9 @@ QPixmap QtxColorScale::dump( const int w, const int h ) const #endif } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with specified size -// and background color. -//================================================================ - +/*! + Dump color scale into pixmap with specified size and background color. +*/ QPixmap QtxColorScale::dump( const QColor& bg, const int w, const int h ) const { QPixmap aPix; @@ -724,11 +650,9 @@ QPixmap QtxColorScale::dump( const QColor& bg, const int w, const int h ) const return aPix; } -//================================================================ -// Function : show -// Purpose : Show the color scale. [Reimplemented] -//================================================================ - +/*! + Show the color scale. [Reimplemented] +*/ void QtxColorScale::show() { #if QT_VER == 3 @@ -739,11 +663,9 @@ void QtxColorScale::show() QFrame::show(); } -//================================================================ -// Function : hide -// Purpose : Hides the color scale. [Reimplemented] -//================================================================ - +/*! + Hides the color scale. [Reimplemented] +*/ void QtxColorScale::hide() { #if QT_VER == 3 @@ -754,11 +676,9 @@ void QtxColorScale::hide() QFrame::hide(); } -//================================================================ -// Function : drawContents -// Purpose : Draw color scale contents. [Reimplemented] -//================================================================ - +/*! + Draw color scale contents. [Reimplemented] +*/ void QtxColorScale::drawContents( QPainter* p ) { if ( !isUpdatesEnabled() ) @@ -771,11 +691,9 @@ void QtxColorScale::drawContents( QPainter* p ) titlePosition() != None, labelPosition() != None, true ); } -//================================================================ -// Function : drawScale -// Purpose : Draw color scale contents. -//================================================================ - +/*! + Draw color scale contents. +*/ void QtxColorScale::drawScale( QPainter* p, const bool transp, const int X, const int Y, const int W, const int H, const bool title, const bool label, const bool scale ) const @@ -793,11 +711,9 @@ void QtxColorScale::drawScale( QPainter* p, const bool transp, const int X, cons p->drawPixmap( X, Y, cache ); } -//================================================================ -// Function : drawScale -// Purpose : Draw color scale contents. -//================================================================ - +/*! + Draw color scale contents. +*/ void QtxColorScale::drawScale( QPainter* p, const QColor& bg, const bool transp, const int X, const int Y, const int W, const int H, const bool drawTitle, const bool drawLabel, const bool drawColors ) const @@ -964,11 +880,9 @@ void QtxColorScale::drawScale( QPainter* p, const QColor& bg, const bool transp, } } -//================================================================ -// Function : getFormat -// Purpose : Returns the format for number labels. -//================================================================ - +/*! + \return the format for number labels. +*/ QString QtxColorScale::getFormat() const { QString aFormat = format(); @@ -1029,11 +943,9 @@ QString QtxColorScale::getFormat() const return aFormat; } -//================================================================ -// Function : getNumber -// Purpose : Returns the number for specified interval. -//================================================================ - +/*! + \return the number for specified interval. +*/ double QtxColorScale::getNumber( const int idx ) const { double val = 0; @@ -1042,12 +954,9 @@ double QtxColorScale::getNumber( const int idx ) const return val; } -//================================================================ -// Function : getLabel -// Purpose : Returns the label for specified interval according -// to the current label mode. -//================================================================ - +/*! + \return the label for specified interval according to the current label mode. +*/ QString QtxColorScale::getLabel( const int idx ) const { QString res; @@ -1061,12 +970,9 @@ QString QtxColorScale::getLabel( const int idx ) const return res; } -//================================================================ -// Function : getColor -// Purpose : Returns the color for specified interval according -// to the current color mode. -//================================================================ - +/*! + \return the color for specified interval according to the current color mode. +*/ QColor QtxColorScale::getColor( const int idx ) const { QColor res; @@ -1077,24 +983,20 @@ QColor QtxColorScale::getColor( const int idx ) const return res; } -//================================================================ -// Function : updateScale -// Purpose : Update color scale if it required. -//================================================================ - +/*! + Update color scale if it required. +*/ void QtxColorScale::updateScale() { update(); updateGeometry(); } -//================================================================ -// Function : simpleRichText -// Purpose : Return QSimpleRichText object for title. If title -// not defined (empty string) then return null pointer. -// Object should be deleted by caller function. -//================================================================ - +/*! + \return QSimpleRichText object for title. If title + not defined (empty string) then return null pointer. + Object should be deleted by caller function. +*/ QSimpleRichText* QtxColorScale::simpleRichText( const int flags ) const { QSimpleRichText* srt = 0; @@ -1141,17 +1043,14 @@ QSimpleRichText* QtxColorScale::simpleRichText( const int flags ) const #if QT_VER == 3 -/********************************************************************* -** Class: QtxColorScale::Dock -** Descr: Dockable window contains the color scale. -** Level: Public -*********************************************************************/ - -//================================================================ -// Function : Dock -// Purpose : Constructor. -//================================================================ +/*! + \class QtxColorScale::Dock + Dockable window contains the color scale. +*/ +/*! + Constructor +*/ QtxColorScale::Dock::Dock( Place p, QWidget* parent, const char* name, WFlags f ) : QDockWindow( p, parent, name, f ), myBlockShow( false ), @@ -1169,30 +1068,24 @@ myBlockResize( false ) setCaption( tr ( "Color scale" ) ); } -//================================================================ -// Function : ~Dock -// Purpose : Destructor. -//================================================================ - +/*! + Destructor. +*/ QtxColorScale::Dock::~Dock() { } -//================================================================ -// Function : colorScale -// Purpose : Returns color scale widget. -//================================================================ - +/*! + \return color scale widget. +*/ QtxColorScale* QtxColorScale::Dock::colorScale() const { return myScale; } -//================================================================ -// Function : activate -// Purpose : Set the dockable window is visible for main window. -//================================================================ - +/*! + Set the dockable window is visible for main window. +*/ void QtxColorScale::Dock::activate() { if ( myBlockShow ) @@ -1210,11 +1103,9 @@ void QtxColorScale::Dock::activate() mw->setAppropriate( this, true ); } -//================================================================ -// Function : deactivate -// Purpose : Set the dockable window is hidden for main window. -//================================================================ - +/*! + Set the dockable window is hidden for main window. +*/ void QtxColorScale::Dock::deactivate() { if ( myBlockShow ) @@ -1232,11 +1123,9 @@ void QtxColorScale::Dock::deactivate() mw->setAppropriate( this, false ); } -//================================================================ -// Function : isActive -// Purpose : Returns true if the dockable window is visible. -//================================================================ - +/*! + \return true if the dockable window is visible. +*/ bool QtxColorScale::Dock::isActive() const { QMainWindow* mw = 0; @@ -1253,11 +1142,9 @@ bool QtxColorScale::Dock::isActive() const return false; } -//================================================================ -// Function : show -// Purpose : Reimplemented for internal reasons. -//================================================================ - +/*! + Redefined show +*/ void QtxColorScale::Dock::show() { bool f = myBlockShow; @@ -1266,11 +1153,9 @@ void QtxColorScale::Dock::show() myBlockShow = f; } -//================================================================ -// Function : hide -// Purpose : Reimplemented for internal reasons. -//================================================================ - +/*! + Redefined hide +*/ void QtxColorScale::Dock::hide() { bool f = myBlockShow; @@ -1279,11 +1164,9 @@ void QtxColorScale::Dock::hide() myBlockShow = f; } -//================================================================ -// Function : resize -// Purpose : Make extent width as maximum value of widget width. -//================================================================ - +/*! + Make extent width as maximum value of widget width. +*/ void QtxColorScale::Dock::resize( int w, int h ) { QDockWindow::resize( w, h ); @@ -1297,11 +1180,10 @@ void QtxColorScale::Dock::resize( int w, int h ) setFixedExtentHeight( QMAX( fixedExtent().height(), h ) ); } -//================================================================ -// Function : setOrientation -// Purpose : -//================================================================ - +/*! + Set orientation + \param o - new orientation +*/ void QtxColorScale::Dock::setOrientation( Orientation o ) { bool b = myBlockResize; diff --git a/src/Qtx/QtxColorScale.h b/src/Qtx/QtxColorScale.h index fa81c0d1a..164ea91be 100755 --- a/src/Qtx/QtxColorScale.h +++ b/src/Qtx/QtxColorScale.h @@ -38,6 +38,10 @@ class QSimpleRichText; #pragma warning( disable:4251 ) #endif +/*! + \class QtxColorScale + Color Scale widget. +*/ class QTX_EXPORT QtxColorScale : public QFrame { Q_OBJECT diff --git a/src/Qtx/QtxComboBox.cxx b/src/Qtx/QtxComboBox.cxx index 4e7c3b5cb..1f4325efd 100755 --- a/src/Qtx/QtxComboBox.cxx +++ b/src/Qtx/QtxComboBox.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ QtxComboBox::QtxComboBox( QWidget* parent, const char* name ) : QComboBox( parent, name ), myCleared( false ) @@ -33,6 +36,9 @@ myCleared( false ) connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) ); } +/*! + Constructor +*/ QtxComboBox::QtxComboBox( bool rw, QWidget* parent, const char* name ) : QComboBox( rw, parent, name ), myCleared( false ) @@ -41,15 +47,25 @@ myCleared( false ) connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) ); } +/*! + Destructor +*/ QtxComboBox::~QtxComboBox() { } +/*! + \return true if combobox is cleared +*/ bool QtxComboBox::isCleared() const { return myCleared; } +/*! + Sets cleared status + \param isClear - new status +*/ void QtxComboBox::setCleared( const bool isClear ) { if ( myCleared == isClear ) @@ -68,6 +84,10 @@ void QtxComboBox::setCleared( const bool isClear ) update(); } +/*! + Sets currently selected item + \param idx - index of item +*/ void QtxComboBox::setCurrentItem( int idx ) { if ( idx < 0 || idx >= count() ) @@ -77,6 +97,10 @@ void QtxComboBox::setCurrentItem( int idx ) QComboBox::setCurrentItem( idx ); } +/*! + Sets current text + \param txt - new current text +*/ void QtxComboBox::setCurrentText( const QString& txt ) { myCleared = false; @@ -96,16 +120,25 @@ void QtxComboBox::setCurrentText( const QString& txt ) #endif } +/*! + \return current selected id +*/ int QtxComboBox::currentId() const { return id( currentItem() ); } +/*! + Sets current selected id +*/ void QtxComboBox::setCurrentId( int num ) { setCurrentItem( index( num ) ); } +/*! + Custom paint event handler +*/ void QtxComboBox::paintEvent( QPaintEvent* e ) { if ( !count() || !myCleared || editable() ) @@ -114,6 +147,10 @@ void QtxComboBox::paintEvent( QPaintEvent* e ) paintClear( e ); } +/*! + SLOT: called if some item is activated + \param idx - index of activated item +*/ void QtxComboBox::onActivated( int idx ) { resetClear(); @@ -122,11 +159,16 @@ void QtxComboBox::onActivated( int idx ) emit activatedId( myIndexId[idx] ); } -void QtxComboBox::onActivated( const QString& ) +/*! + SLOT: called if some item is activated +*/void QtxComboBox::onActivated( const QString& ) { resetClear(); } +/*! + Strips "cleared" state and updates +*/ void QtxComboBox::resetClear() { if ( !myCleared ) @@ -136,6 +178,9 @@ void QtxComboBox::resetClear() update(); } +/*! + Draws combobox when it is cleared or isn't editable +*/ void QtxComboBox::paintClear( QPaintEvent* e ) { int curIndex = currentItem(); @@ -159,6 +204,9 @@ void QtxComboBox::paintClear( QPaintEvent* e ) setUpdatesEnabled( upd ); } +/*! + \return id by index +*/ int QtxComboBox::id( const int idx ) const { int id = -1; @@ -167,6 +215,9 @@ int QtxComboBox::id( const int idx ) const return id; } +/*! + \return index by id +*/ int QtxComboBox::index( const int id ) const { int idx = -1; diff --git a/src/Qtx/QtxDblSpinBox.cxx b/src/Qtx/QtxDblSpinBox.cxx index b10c28bd6..6c3655240 100755 --- a/src/Qtx/QtxDblSpinBox.cxx +++ b/src/Qtx/QtxDblSpinBox.cxx @@ -27,11 +27,10 @@ #include -/* - Class: QtxDblSpinBox::Validator [internal] - Descr: Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator) +/*! + \class QtxDblSpinBox::Validator [internal] + Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator) */ - class QtxDblSpinBox::Validator : public QDoubleValidator { public: @@ -44,6 +43,10 @@ private: QtxDblSpinBox* spinBox; }; + +/*! + Checks string and \return QValidator::State +*/ QValidator::State QtxDblSpinBox::Validator::validate( QString& str, int& pos ) const { QString pref = spinBox->prefix(); @@ -84,11 +87,9 @@ QValidator::State QtxDblSpinBox::Validator::validate( QString& str, int& pos ) c return state; } -/* - Class: QtxDblSpinBox - Descr: Spin box for real numbers. +/*! + Constructor */ - QtxDblSpinBox::QtxDblSpinBox( QWidget* parent, const char* name ) : QSpinBox( parent, name ), myCleared( false ), @@ -106,6 +107,9 @@ myPrecision( 0 ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Constructor +*/ QtxDblSpinBox::QtxDblSpinBox( double min, double max, double step, QWidget* parent, const char* name ) : QSpinBox( parent, name ), myMin( min ), @@ -123,25 +127,42 @@ myPrecision( 0 ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Destructor +*/ QtxDblSpinBox::~QtxDblSpinBox() { } +/*! + \return min value of spin box +*/ double QtxDblSpinBox::minValue() const { return myMin; } +/*! + \return max value of spin box +*/ double QtxDblSpinBox::maxValue() const { return myMax; } +/*! + Changes min value of spin box + \param min - new min value +*/ void QtxDblSpinBox::setMinValue( int min ) { setMinValue( (double)min ); } +/*! + Changes min value of spin box + \param min - new min value +*/ void QtxDblSpinBox::setMinValue( double min ) { if ( myMin != min ) @@ -151,11 +172,19 @@ void QtxDblSpinBox::setMinValue( double min ) } } +/*! + Changes max value of spin box + \param max - new max value +*/ void QtxDblSpinBox::setMaxValue( int max ) { setMaxValue( (double)max ); } +/*! + Changes max value of spin box + \param max - new max value +*/ void QtxDblSpinBox::setMaxValue( double max ) { if ( myMax != max ) @@ -165,11 +194,21 @@ void QtxDblSpinBox::setMaxValue( double max ) } } +/*! + Changes min and max value of spin box + \param min - new min value + \param max - new max value +*/ void QtxDblSpinBox::setRange( int min, int max ) { setRange( (double)min, (double)max ); } +/*! + Changes min and max value of spin box + \param min - new min value + \param max - new max value +*/ void QtxDblSpinBox::setRange( double min, double max ) { if ( myMin != min || myMax != max ) @@ -180,21 +219,35 @@ void QtxDblSpinBox::setRange( double min, double max ) } } +/*! + \return step of spin box +*/ double QtxDblSpinBox::lineStep() const { return myStep; } +/*! + Changes step of spin box + \param step - new step +*/ void QtxDblSpinBox::setLineStep( int step ) { setLineStep( (double)step ); } +/*! + Changes step of spin box + \param step - new step +*/ void QtxDblSpinBox::setLineStep( double step ) { myStep = step; } +/*! + \return value of spin box +*/ double QtxDblSpinBox::value() const { QSpinBox::value(); @@ -202,11 +255,19 @@ double QtxDblSpinBox::value() const return myValue; } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxDblSpinBox::setValue( int val ) { setValue( (double)val ); } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxDblSpinBox::setValue( double val ) { myCleared = false; @@ -216,6 +277,9 @@ void QtxDblSpinBox::setValue( double val ) valueChange(); } +/*! + Adds step to value +*/ void QtxDblSpinBox::stepUp() { interpretText(); @@ -225,6 +289,9 @@ void QtxDblSpinBox::stepUp() setValue( myValue + myStep ); } +/*! + Subtracks step from value +*/ void QtxDblSpinBox::stepDown() { interpretText(); @@ -234,11 +301,18 @@ void QtxDblSpinBox::stepDown() setValue( myValue - myStep ); } +/*! + \return number of digit after comma +*/ int QtxDblSpinBox::precision() const { return myPrecision; } +/*! + Changes number of digit after comma + \param prec - new digit number +*/ void QtxDblSpinBox::setPrecision( const int prec ) { int newPrec = QMAX( prec, 0 ); @@ -248,11 +322,18 @@ void QtxDblSpinBox::setPrecision( const int prec ) updateDisplay(); } +/*! + \return true if spin box is cleared +*/ bool QtxDblSpinBox::isCleared() const { return myCleared; } +/*! + Changes cleared status of spin box + \param on - new status +*/ void QtxDblSpinBox::setCleared( const bool on ) { if ( myCleared == on ) @@ -262,6 +343,9 @@ void QtxDblSpinBox::setCleared( const bool on ) updateDisplay(); } +/*! + Selects all content of spin box editor +*/ void QtxDblSpinBox::selectAll() { #if QT_VER >= 3 @@ -271,6 +355,9 @@ void QtxDblSpinBox::selectAll() #endif } +/*! + Custom event filter, updates text of spin box editor +*/ bool QtxDblSpinBox::eventFilter( QObject* o, QEvent* e ) { if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() ) @@ -294,6 +381,9 @@ bool QtxDblSpinBox::eventFilter( QObject* o, QEvent* e ) return QSpinBox::eventFilter( o, e ); } +/*! + Updates text of editor +*/ void QtxDblSpinBox::updateDisplay() { if ( myBlocked ) @@ -332,6 +422,9 @@ void QtxDblSpinBox::updateDisplay() myBlocked = isBlock; } +/*! + Sets double value by text in editor +*/ void QtxDblSpinBox::interpretText() { myCleared = false; @@ -356,6 +449,9 @@ void QtxDblSpinBox::interpretText() updateDisplay(); } +/*! + Emits signal "valueChanged" +*/ void QtxDblSpinBox::valueChange() { updateDisplay(); @@ -363,6 +459,9 @@ void QtxDblSpinBox::valueChange() emit valueChanged( currentValueText() ); } +/*! + Attune parameters on range changing +*/ void QtxDblSpinBox::rangeChange() { double min = QMIN( myMin, myMax ); @@ -382,6 +481,9 @@ void QtxDblSpinBox::rangeChange() updateDisplay(); } +/*! + \return text of editor +*/ QString QtxDblSpinBox::currentValueText() { QString s; @@ -396,6 +498,10 @@ QString QtxDblSpinBox::currentValueText() return s; } +/*! + Converts number to string + \param v - number to be converted +*/ QString QtxDblSpinBox::mapValueToText( double v ) { QString s; @@ -403,6 +509,9 @@ QString QtxDblSpinBox::mapValueToText( double v ) return removeTrailingZeroes( s ); } +/*! + Converts value to string +*/ QString QtxDblSpinBox::mapValueToText( int ) { QString s; @@ -410,6 +519,9 @@ QString QtxDblSpinBox::mapValueToText( int ) return removeTrailingZeroes( s ); } +/*! + Converts current text of editor to double +*/ double QtxDblSpinBox::mapTextToDoubleValue( bool* ok ) { QString s = text(); @@ -422,6 +534,10 @@ double QtxDblSpinBox::mapTextToDoubleValue( bool* ok ) return newVal; } +/*! + \return value corrected in accordance with borders + \param val - value to be corrected +*/ double QtxDblSpinBox::bound( double val ) { double newVal = val; @@ -432,12 +548,18 @@ double QtxDblSpinBox::bound( double val ) return newVal; } +/*! + Custom handler for leave event +*/ void QtxDblSpinBox::leaveEvent( QEvent* e ) { if ( !myCleared ) QSpinBox::leaveEvent( e ); } +/*! + Custom handler for wheel event +*/ void QtxDblSpinBox::wheelEvent( QWheelEvent* e ) { if ( !isEnabled() ) @@ -447,12 +569,18 @@ void QtxDblSpinBox::wheelEvent( QWheelEvent* e ) updateDisplay(); } +/*! + SLOT: called if text is changed +*/ void QtxDblSpinBox::onTextChanged( const QString& str ) { if ( !myBlocked ) myCleared = false; } +/*! + \return string without excess zeros in start and in end +*/ QString QtxDblSpinBox::removeTrailingZeroes( const QString& src ) const { QString delim( "." ); diff --git a/src/Qtx/QtxDblSpinBox.h b/src/Qtx/QtxDblSpinBox.h index e59fe4f3d..d145390e0 100755 --- a/src/Qtx/QtxDblSpinBox.h +++ b/src/Qtx/QtxDblSpinBox.h @@ -26,6 +26,10 @@ #include +/*! + \class QtxDblSpinBox + Spin box for real numbers. +*/ class QTX_EXPORT QtxDblSpinBox : public QSpinBox { Q_OBJECT diff --git a/src/Qtx/QtxDblValidator.cxx b/src/Qtx/QtxDblValidator.cxx index 2769fd406..4b204f8db 100644 --- a/src/Qtx/QtxDblValidator.cxx +++ b/src/Qtx/QtxDblValidator.cxx @@ -21,16 +21,31 @@ #include "QtxDblValidator.h" +/*! + Constructor + \param bot - minimal possible value + \param top - maximal possible value + \param dec - number of digits + \param o - parent object + \param name - name of validator +*/ QtxDblValidator::QtxDblValidator( const double bot, const double top, const int dec, QObject* o, const char* name ) : QDoubleValidator( bot, top, dec, o, name ) { } +/*! + Destructor +*/ QtxDblValidator::~QtxDblValidator() { } +/*! + Corrects string: if it represent double value less then bottom, it becomes equal to bottom, + if it is more then top, it becomes equal to top, if it isn't number is becomes '0' +*/ void QtxDblValidator::fixup( QString& str ) const { bool ok = false; diff --git a/src/Qtx/QtxDialog.cxx b/src/Qtx/QtxDialog.cxx index 347479e55..5bbc1f79b 100755 --- a/src/Qtx/QtxDialog.cxx +++ b/src/Qtx/QtxDialog.cxx @@ -33,7 +33,6 @@ Class: QtxDialog::Area Level: Internal */ - class QtxDialog::Area : public QFrame { public: @@ -68,6 +67,9 @@ private: Orientation myOrientation; }; +/*! + Contructor +*/ QtxDialog::Area::Area( Orientation o, QtxDialog* dlg, QWidget* parent ) : QFrame( parent ), myDlg( dlg ), @@ -84,10 +86,17 @@ myOrientation( o ) hide(); } +/*! + Destructor +*/ QtxDialog::Area::~Area() { } +/*! + Inserts button to area + \param b - button +*/ void QtxDialog::Area::insertButton( QButton* b ) { if ( !b || myButtons.findRef( b ) != -1 ) @@ -108,6 +117,10 @@ void QtxDialog::Area::insertButton( QButton* b ) updateBorder(); } +/*! + Removes button from area + \param b - button +*/ void QtxDialog::Area::removeButton( QButton* b ) { if ( !b ) @@ -126,16 +139,27 @@ void QtxDialog::Area::removeButton( QButton* b ) layoutButtons(); } +/*! + \return true if area contains button + \param b - button +*/ bool QtxDialog::Area::contains( QButton* b ) const { return myButtons.containsRef( b ); } +/*! + \return policy of button layouting. +*/ int QtxDialog::Area::policy() const { return myPolicy; } +/*! + Changes policy of button layouting. + \param p - new policy +*/ void QtxDialog::Area::setPolicy( const int p ) { if ( myPolicy == p ) @@ -145,11 +169,18 @@ void QtxDialog::Area::setPolicy( const int p ) layoutButtons(); } +/*! + \return true if border enabled +*/ bool QtxDialog::Area::isBorderEnabled() const { return myLine && myBorder; } +/*! + Enables/disable separator between main frame and button frame + \param on - new state +*/ void QtxDialog::Area::setBorderEnabled( const bool on ) { if ( !myLine || myBorder == on ) @@ -159,6 +190,10 @@ void QtxDialog::Area::setBorderEnabled( const bool on ) updateBorder(); } +/*! + Sets label as separator between main frame and button frame + \param line - new separator +*/ void QtxDialog::Area::setBorderWidget( QLabel* line ) { if ( myLine == line ) @@ -169,11 +204,17 @@ void QtxDialog::Area::setBorderWidget( QLabel* line ) updateBorder(); } +/*! + \return const reference to list of buttons +*/ const QPtrList& QtxDialog::Area::buttons() const { return myButtons; } +/*! + Updates visibility of border +*/ void QtxDialog::Area::updateBorder() { if ( !myLine ) @@ -192,6 +233,9 @@ void QtxDialog::Area::updateBorder() myLine->setLineWidth( myBorder ? 1 : 0 ); } +/*! + Installs buttons into layout +*/ void QtxDialog::Area::layoutButtons() { int aPolicy = policy(); @@ -285,11 +329,12 @@ void QtxDialog::Area::layoutButtons() Qtx::setTabOrder( wids ); } + /*! - Class: QtxDialog::Border - Level: Internal -*/ + \class QtxDialog::Border + Special label used as separator between main frame and button frame +*/ class QtxDialog::Border : public QLabel { public: @@ -302,16 +347,26 @@ public: virtual QSize minimumSizeHint() const; }; +/*! + Constructor +*/ QtxDialog::Border::Border( QWidget* parent ) : QLabel( parent ) { setAlignment( Qt::AlignCenter ); } +/*! + Destructor +*/ QtxDialog::Border::~Border() { } +/*! + Set line width of separator + \param lw - new line width +*/ void QtxDialog::Border::setLineWidth( int lw ) { bool isOn = lineWidth() > 0; @@ -322,6 +377,9 @@ void QtxDialog::Border::setLineWidth( int lw ) updateGeometry(); } +/*! + \return the recommended size for the widget +*/ QSize QtxDialog::Border::sizeHint() const { QSize sz( 5, 5 ); @@ -339,26 +397,22 @@ QSize QtxDialog::Border::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxDialog::Border::minimumSizeHint() const { return sizeHint(); } /*! - Class: QtxDialog - Level: Public + Constructor + Construct a dialog with specified parent and name. + \param modal define modal status of dialog (default non modal dialog created). + \param allowResize - if it is true then dialog can be resize by user (default non resizable dialog created). + \param Button flags specified control buttons for dialog (default buttons is OK, Cancel and Help). + \param Widget flags used as in any widget. */ - -/*! - Name: QtxDialog [public] - Desc: Construct a dialog with specified parent and name. - Parameter 'modal' define modal status of dialog (default non modal - dialog created). If parameter 'allowResize' is true then dialog - can be resize by user (default non resizable dialog created). - Button flags specified control buttons for dialog (default buttons - is OK, Cancel and Help). Widget flags used as in any widget. -*/ - QtxDialog::QtxDialog( QWidget* parent, const char* name, bool modal, bool allowResize, const int f, WFlags wf ) : QDialog( parent, name, modal, diff --git a/src/Qtx/QtxDockAction.cxx b/src/Qtx/QtxDockAction.cxx index 0a0295559..a8b7ddf7c 100755 --- a/src/Qtx/QtxDockAction.cxx +++ b/src/Qtx/QtxDockAction.cxx @@ -255,6 +255,10 @@ bool QtxDockAction::removeFrom( QWidget* wid ) return QtxAction::removeFrom( wid ); } +/*! + Sets menu text of action + \param txt - new menu text +*/ void QtxDockAction::setMenuText( const QString& txt ) { if ( menuText() == txt ) @@ -721,6 +725,11 @@ void QtxDockAction::dockWindows( QPtrList& lst, QMainWindow* main ) delete objs; } +/*! + \return true if main window is parent of object + \param mw - main window + \param win - object +*/ bool QtxDockAction::dockMainWindow( QMainWindow* mw, QObject* win ) const { if ( !mw || !win ) @@ -1251,6 +1260,9 @@ void QtxDockAction::collectNames( const int place, QStringList& lst ) const } } +/*! + Updates menu of action +*/ void QtxDockAction::updateMenus() { for ( MenuMap::Iterator it = myMenu.begin(); it != myMenu.end(); ++it ) diff --git a/src/Qtx/QtxDockWindow.cxx b/src/Qtx/QtxDockWindow.cxx index 9872d8505..df05b42dc 100644 --- a/src/Qtx/QtxDockWindow.cxx +++ b/src/Qtx/QtxDockWindow.cxx @@ -28,10 +28,9 @@ #include /*! - Class: QtxDockWindow::Watcher [Internal] - Descr: Internal object with event filter. + \class QtxDockWindow::Watcher [Internal] + Internal object with event filter. */ - class QtxDockWindow::Watcher : public QObject { public: @@ -62,6 +61,9 @@ private: bool myVisible; }; +/*! + Constructor +*/ QtxDockWindow::Watcher::Watcher( QtxDockWindow* cont ) : QObject( cont ), myCont( cont ), myState( true ), @@ -76,6 +78,9 @@ myEmpty( true ) installFilters(); } +/*! + Custom event filter +*/ bool QtxDockWindow::Watcher::eventFilter( QObject* o, QEvent* e ) { if ( o == myCont && @@ -98,6 +103,9 @@ bool QtxDockWindow::Watcher::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Sets internal status to shown +*/ void QtxDockWindow::Watcher::shown( QtxDockWindow* dw ) { if ( dw != myCont ) @@ -106,6 +114,9 @@ void QtxDockWindow::Watcher::shown( QtxDockWindow* dw ) myVisible = true; } +/*! + Sets internal status to hidden +*/ void QtxDockWindow::Watcher::hided( QtxDockWindow* dw ) { if ( dw != myCont ) @@ -114,6 +125,9 @@ void QtxDockWindow::Watcher::hided( QtxDockWindow* dw ) myVisible = false; } +/*! + Shows corresponding dock window +*/ void QtxDockWindow::Watcher::showContainer() { if ( !myCont ) @@ -125,6 +139,9 @@ void QtxDockWindow::Watcher::showContainer() myCont = cont; } +/*! + Hides corresponding dock window +*/ void QtxDockWindow::Watcher::hideContainer() { if ( !myCont ) @@ -136,6 +153,9 @@ void QtxDockWindow::Watcher::hideContainer() myCont = cont; } +/*! + Event filter of custom events +*/ void QtxDockWindow::Watcher::customEvent( QCustomEvent* e ) { installFilters(); @@ -145,6 +165,9 @@ void QtxDockWindow::Watcher::customEvent( QCustomEvent* e ) updateVisibility(); } +/*! + Installs this object as event filter to all widgets inside corresponding main window +*/ void QtxDockWindow::Watcher::installFilters() { if ( !myCont ) @@ -161,6 +184,9 @@ void QtxDockWindow::Watcher::installFilters() } } +/*! + Updates visibility of all widgets inside corresponding main window +*/ void QtxDockWindow::Watcher::updateVisibility() { if ( !myCont ) @@ -192,6 +218,9 @@ void QtxDockWindow::Watcher::updateVisibility() vis ? showContainer() : hideContainer(); } +/*! + Updates icon of corresponding main window +*/ void QtxDockWindow::Watcher::updateIcon() { if ( !myCont || !myCont->widget() ) @@ -201,6 +230,9 @@ void QtxDockWindow::Watcher::updateIcon() myCont->setIcon( ico ? *ico : QPixmap() ); } +/*! + Updates caption of corresponding main window +*/ void QtxDockWindow::Watcher::updateCaption() { if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() ) @@ -208,10 +240,8 @@ void QtxDockWindow::Watcher::updateCaption() } /*! - Class: QtxDockWindow [Public] - Descr: + Constructor */ - QtxDockWindow::QtxDockWindow( Place p, QWidget* parent, const char* name, WFlags f ) : QDockWindow( p, parent, name, f ), myWatcher( 0 ), @@ -219,6 +249,9 @@ myStretch( false ) { } +/*! + Constructor +*/ QtxDockWindow::QtxDockWindow( const bool watch, QWidget* parent, const char* name, WFlags f ) : QDockWindow( InDock, parent, name, f ), myWatcher( 0 ), @@ -228,6 +261,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxDockWindow::QtxDockWindow( QWidget* parent, const char* name, WFlags f ) : QDockWindow( InDock, parent, name, f ), myWatcher( 0 ), @@ -235,10 +271,17 @@ myStretch( false ) { } +/*! + Destructor +*/ QtxDockWindow::~QtxDockWindow() { } +/*! + Sets the dock window's main widget + \param wid - new main widget +*/ void QtxDockWindow::setWidget( QWidget* wid ) { if ( wid ) @@ -247,11 +290,18 @@ void QtxDockWindow::setWidget( QWidget* wid ) QDockWindow::setWidget( wid ); } +/*! + \return true if the dock window is stretchable +*/ bool QtxDockWindow::isStretchable() const { return myStretch; } +/*! + Sets the dock window "stretchable" state + \param on - new state +*/ void QtxDockWindow::setStretchable( const bool on ) { if ( myStretch == on ) @@ -271,6 +321,9 @@ void QtxDockWindow::setStretchable( const bool on ) } } +/*! + \return the recommended size for the widget +*/ QSize QtxDockWindow::sizeHint() const { QSize sz = QDockWindow::sizeHint(); @@ -286,6 +339,9 @@ QSize QtxDockWindow::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxDockWindow::minimumSizeHint() const { QSize sz = QDockWindow::minimumSizeHint(); @@ -306,6 +362,9 @@ QSize QtxDockWindow::minimumSizeHint() const return sz; } +/*! + \return corresponding main window +*/ QMainWindow* QtxDockWindow::mainWindow() const { QMainWindow* mw = 0; @@ -321,6 +380,9 @@ QMainWindow* QtxDockWindow::mainWindow() const return mw; } +/*! + Shows window +*/ void QtxDockWindow::show() { if ( myWatcher ) @@ -329,6 +391,9 @@ void QtxDockWindow::show() QDockWindow::show(); } +/*! + Hides window +*/ void QtxDockWindow::hide() { if ( myWatcher ) diff --git a/src/Qtx/QtxGroupBox.cxx b/src/Qtx/QtxGroupBox.cxx index 51732dc75..801c3a599 100644 --- a/src/Qtx/QtxGroupBox.cxx +++ b/src/Qtx/QtxGroupBox.cxx @@ -27,12 +27,18 @@ #include #include +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( QWidget* parent, const char* name ) : QGroupBox( parent, name ), myContainer( 0 ) { } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( const QString& title, QWidget* parent, const char* name ) : QGroupBox( title, parent, name ), myContainer( 0 ) @@ -40,6 +46,9 @@ myContainer( 0 ) initialize(); } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( int strips, Orientation o, QWidget* parent, const char* name ) : QGroupBox( strips, o, parent, name ), myContainer( 0 ) @@ -47,6 +56,9 @@ myContainer( 0 ) initialize(); } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( int strips, Orientation o, const QString& title, QWidget* parent, const char* name ) : QGroupBox( strips, o, title, parent, name ), @@ -55,11 +67,17 @@ myContainer( 0 ) initialize(); } +/*! + Destructor +*/ QtxGroupBox::~QtxGroupBox() { delete myContainer; } +/*! + Creates horizontal box as container +*/ void QtxGroupBox::initialize() { myContainer = new QHBox( this, 0, WStyle_Customize | WStyle_NoBorderEx | WStyle_Tool ); @@ -69,6 +87,9 @@ void QtxGroupBox::initialize() #if QT_VER < 3 +/*! + \return the width of the empty space between the items in the group and the frame of the group +*/ int QtxGroupBox::insideMargin() const { int m = 0; @@ -77,6 +98,9 @@ int QtxGroupBox::insideMargin() const return m; } +/*! + \return the width of the empty space between each of the items in the group +*/ int QtxGroupBox::insideSpacing() const { int s = 0; @@ -85,12 +109,18 @@ int QtxGroupBox::insideSpacing() const return s; } +/*! + Sets the width of the empty space between the items in the group and the frame of the group +*/ void QtxGroupBox::setInsideMargin( int m ) { if ( layout() ) layout()->setMargin( m ); } +/*! + Sets the width of the empty space between each of the items in the group +*/ void QtxGroupBox::setInsideSpacing( int s ) { if ( layout() ) @@ -99,6 +129,10 @@ void QtxGroupBox::setInsideSpacing( int s ) #endif +/*! + Inserts title widget + \param wid - new title widget +*/ void QtxGroupBox::insertTitleWidget( QWidget* wid ) { if ( !myContainer ) @@ -110,6 +144,10 @@ void QtxGroupBox::insertTitleWidget( QWidget* wid ) updateTitle(); } +/*! + Removes title widget + \param wid - title widget +*/ void QtxGroupBox::removeTitleWidget( QWidget* wid ) { if ( !myContainer || wid->parentWidget() != myContainer ) @@ -121,6 +159,9 @@ void QtxGroupBox::removeTitleWidget( QWidget* wid ) updateTitle(); } +/*! + Calculates margin +*/ void QtxGroupBox::adjustInsideMargin() { QApplication::sendPostedEvents( myContainer, QEvent::ChildInserted ); @@ -130,6 +171,9 @@ void QtxGroupBox::adjustInsideMargin() setInsideMargin( myContainer->height() ); } +/*! + Sets the alignment of the group box title +*/ void QtxGroupBox::setAlignment( int align ) { QGroupBox::setAlignment( align ); @@ -137,6 +181,9 @@ void QtxGroupBox::setAlignment( int align ) updateTitle(); } +/*! + Sets title of groop box +*/ void QtxGroupBox::setTitle( const QString& title ) { QGroupBox::setTitle( title ); @@ -144,6 +191,11 @@ void QtxGroupBox::setTitle( const QString& title ) updateTitle(); } +/*! + Changes the layout of the group box + \param strips - number of column/rows + \param o - orientation +*/ void QtxGroupBox::setColumnLayout( int strips, Orientation o ) { if ( myContainer ) @@ -157,6 +209,9 @@ void QtxGroupBox::setColumnLayout( int strips, Orientation o ) updateTitle(); } +/*! + Shows group box +*/ void QtxGroupBox::show() { QGroupBox::show(); @@ -164,6 +219,9 @@ void QtxGroupBox::show() updateTitle(); } +/*! + Updates group box +*/ void QtxGroupBox::update() { QGroupBox::update(); @@ -171,6 +229,9 @@ void QtxGroupBox::update() updateTitle(); } +/*! + \return the recommended size for the widget +*/ QSize QtxGroupBox::sizeHint() const { QSize sz = QGroupBox::sizeHint(); @@ -190,6 +251,9 @@ QSize QtxGroupBox::sizeHint() const return QSize( QMAX( sz.width(), sw ), sz.height() ); } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxGroupBox::minimumSizeHint() const { QSize sz = QGroupBox::minimumSizeHint(); @@ -209,6 +273,9 @@ QSize QtxGroupBox::minimumSizeHint() const return QSize( QMAX( sz.width(), sw ), sz.height() ); } +/*! + Custom event filter +*/ bool QtxGroupBox::eventFilter( QObject* obj, QEvent* e ) { QEvent::Type type = e->type(); @@ -220,6 +287,9 @@ bool QtxGroupBox::eventFilter( QObject* obj, QEvent* e ) return QGroupBox::eventFilter( obj, e ); } +/*! + Custom resize event filter +*/ void QtxGroupBox::resizeEvent( QResizeEvent* e ) { QGroupBox::resizeEvent( e ); @@ -227,6 +297,9 @@ void QtxGroupBox::resizeEvent( QResizeEvent* e ) updateTitle(); } +/*! + Custom child event filter +*/ void QtxGroupBox::childEvent( QChildEvent* e ) { if ( e->type() == QEvent::ChildInserted && e->child() == myContainer ) @@ -235,16 +308,25 @@ void QtxGroupBox::childEvent( QChildEvent* e ) QGroupBox::childEvent( e ); } +/*! + Event filter of custom items +*/ void QtxGroupBox::customEvent( QCustomEvent* ) { updateTitle(); } +/*! + On frame changed +*/ void QtxGroupBox::frameChanged() { updateTitle(); } +/*! + \return size of title +*/ QSize QtxGroupBox::titleSize() const { QSize sz( 0, 0 ); @@ -264,6 +346,9 @@ QSize QtxGroupBox::titleSize() const return QSize( w, h ); } +/*! + Updates title +*/ void QtxGroupBox::updateTitle() { if ( !myContainer ) diff --git a/src/Qtx/QtxIntSpinBox.cxx b/src/Qtx/QtxIntSpinBox.cxx index 35672e5ee..2e694cd18 100755 --- a/src/Qtx/QtxIntSpinBox.cxx +++ b/src/Qtx/QtxIntSpinBox.cxx @@ -24,6 +24,9 @@ #include #include +/*! + Constructor +*/ QtxIntSpinBox::QtxIntSpinBox( QWidget* parent, const char* name ) : QSpinBox( parent, name ), myCleared( false ), @@ -32,6 +35,9 @@ myBlocked( false ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Constructor +*/ QtxIntSpinBox::QtxIntSpinBox( int min, int max, int step, QWidget* parent, const char* name ) : QSpinBox( min, max, step, parent, name ), myCleared( false ), @@ -40,15 +46,25 @@ myBlocked( false ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Destructor +*/ QtxIntSpinBox::~QtxIntSpinBox() { } +/*! + \return true if spin box is cleared +*/ bool QtxIntSpinBox::isCleared() const { return myCleared; } +/*! + Changes cleared status of spin box + \param on - new status +*/ void QtxIntSpinBox::setCleared( const bool on ) { if ( myCleared == on ) @@ -58,6 +74,10 @@ void QtxIntSpinBox::setCleared( const bool on ) updateDisplay(); } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxIntSpinBox::setValue( int value ) { myCleared = false; @@ -65,6 +85,9 @@ void QtxIntSpinBox::setValue( int value ) QSpinBox::setValue( value ); } +/*! + Custom event filter +*/ bool QtxIntSpinBox::eventFilter( QObject* o, QEvent* e ) { if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() ) @@ -83,6 +106,9 @@ bool QtxIntSpinBox::eventFilter( QObject* o, QEvent* e ) return QSpinBox::eventFilter( o, e ); } +/*! + Sets integer value by text in editor +*/ void QtxIntSpinBox::interpretText() { myCleared = false; @@ -90,6 +116,9 @@ void QtxIntSpinBox::interpretText() QSpinBox::interpretText(); } +/*! + Updates text of editor +*/ void QtxIntSpinBox::updateDisplay() { if ( myBlocked ) @@ -113,12 +142,18 @@ void QtxIntSpinBox::updateDisplay() myBlocked = block; } +/*! + Custom handler for leave event +*/ void QtxIntSpinBox::leaveEvent( QEvent* e ) { if ( !myCleared ) QSpinBox::leaveEvent( e ); } +/*! + Custom handler for wheel event +*/ void QtxIntSpinBox::wheelEvent( QWheelEvent* e ) { if ( !isEnabled() ) @@ -128,6 +163,9 @@ void QtxIntSpinBox::wheelEvent( QWheelEvent* e ) updateDisplay(); } +/*! + SLOT: called if text is changed +*/ void QtxIntSpinBox::onTextChanged( const QString& ) { if ( !myBlocked ) diff --git a/src/Qtx/QtxListAction.cxx b/src/Qtx/QtxListAction.cxx index 725120238..84fbed93b 100755 --- a/src/Qtx/QtxListAction.cxx +++ b/src/Qtx/QtxListAction.cxx @@ -46,10 +46,9 @@ static const char* list_arrow_icon[] = { }; /*! - Class: QtxListAction::ToolButton - Level: Internal + \class QtxListAction::ToolButton + Custom tool button */ - class QtxListAction::ToolButton : public QToolButton { public: @@ -62,6 +61,9 @@ private: QtxListAction* myAction; }; +/*! + Constructor +*/ QtxListAction::ToolButton::ToolButton( QtxListAction* a, QWidget* parent, const char* name ) : QToolButton( parent, name ), myAction( a ) @@ -69,12 +71,18 @@ myAction( a ) setIconSet( QPixmap( list_arrow_icon ) ); } +/*! + Destructor +*/ QtxListAction::ToolButton::~ToolButton() { if ( myAction ) myAction->controlDeleted( this ); } +/*! + \return the recommended size for the widget +*/ QSize QtxListAction::ToolButton::sizeHint() const { QSize sz = iconSet().pixmap().size(); @@ -82,16 +90,9 @@ QSize QtxListAction::ToolButton::sizeHint() const } /*! - Class: QtxListAction - Level: Public + Constructs an list action with given parent and name. If toggle is true the + action will be a toggle action, otherwise it will be a command action. */ - -/*! - Name: QtxListAction [public] - Desc: Constructs an list action with given parent and name. If toggle is true the - action will be a toggle action, otherwise it will be a command action. -*/ - QtxListAction::QtxListAction( QObject* parent, const char* name, bool toggle ) : QtxAction( parent, name, toggle ), myFrame( 0 ), @@ -102,12 +103,11 @@ myRaise( false ) } /*! - Name: QtxListAction [public] - Desc: This constructor creates an action with the following properties: the - description text, the icon or iconset icon, the menu text and keyboard - accelerator. It is a child of given parent and named specified name. - If toggle is true the action will be a toggle action, otherwise it will - be a command action. + This constructor creates an action with the following properties: the + description text, the icon or iconset icon, the menu text and keyboard + accelerator. It is a child of given parent and named specified name. + If toggle is true the action will be a toggle action, otherwise it will + be a command action. */ QtxListAction::QtxListAction( const QString& text, const QIconSet& icon, @@ -122,11 +122,10 @@ myRaise( false ) } /*! - Name: QtxListAction [public] - Desc: This constructor creates an action with the following properties: the - description text, the menu text and keyboard accelerator. It is a child - of given parent and named specified name. If toggle is true the action - will be a toggle action, otherwise it will be a command action. + This constructor creates an action with the following properties: the + description text, the menu text and keyboard accelerator. It is a child + of given parent and named specified name. If toggle is true the action + will be a toggle action, otherwise it will be a command action. */ QtxListAction::QtxListAction( const QString& text, const QString& menuText, @@ -140,8 +139,7 @@ myRaise( false ) } /*! - Name: ~QtxListAction [virtual public] - Desc: Destructor. + Destructor. */ QtxListAction::~QtxListAction() @@ -173,6 +171,9 @@ void QtxListAction::setPopupMode( const int mode ) myMode = mode; } +/*! + \return list of names +*/ QStringList QtxListAction::names() const { QStringList lst; @@ -505,6 +506,9 @@ void QtxListAction::onExpand( bool on ) myFrame->hide(); } +/*! + SLOT: called when frame is hidden +*/ void QtxListAction::onHided() { for ( ButtonsMap::Iterator bit = myButtons.begin(); bit != myButtons.end(); ++bit ) @@ -624,12 +628,10 @@ void QtxListAction::controlDeleted( QWidget* wid ) } } -/********************************************************************** -** Class: QtxListFrame -** Descr: Frame for the list of actions -** Level: Internal -***********************************************************************/ - +/*! + \class QtxListFrame + Frame for the list of actions +*/ class QtxListFrame::ScrollEvent : public QCustomEvent { public: @@ -693,6 +695,9 @@ myScrollBlock( false ) setFrameStyle( Panel | Raised ); } +/*! + Destructor +*/ QtxListFrame::~QtxListFrame() { if ( myAction ) @@ -709,6 +714,11 @@ void QtxListFrame::clear() setNames( myNames ); } +/*! + Adds a names to the list. Truncates the name to fit to the frame width. + Use QtxListAction::setMaxLineChar( int ) to set the width in characters. [ public ] +*/ + void QtxListFrame::addNames( const QStringList& names ) { for ( QStringList::ConstIterator it = names.begin(); it != names.end(); ++it ) @@ -754,6 +764,9 @@ void QtxListFrame::setNames( const QStringList& names ) } } +/*! + \return list of names +*/ const QStringList QtxListFrame::names() const { return myNames; @@ -822,6 +835,10 @@ void QtxListFrame::updateComment() myComment->setText( com ); } +/*! + Sets owner + \param wo - new owner +*/ void QtxListFrame::setOwner( QWidget* wo ) { myOwner = wo; @@ -1005,6 +1022,9 @@ bool QtxListFrame::handleMouseEvent( QObject* o, QMouseEvent* e ) return true; } +/*! + Custom event filter +*/ bool QtxListFrame::event( QEvent* e ) { if ( e->type() != (int)ScrollEvent::Scroll ) @@ -1089,6 +1109,9 @@ void QtxListFrame::setSelected( const int lastSel ) updateComment(); } +/*! + return number of selected items +*/ int QtxListFrame::selected() const { uint sel = 0; diff --git a/src/Qtx/QtxListAction.h b/src/Qtx/QtxListAction.h index 30c85acc0..d285d7ab2 100755 --- a/src/Qtx/QtxListAction.h +++ b/src/Qtx/QtxListAction.h @@ -118,11 +118,9 @@ private: friend class QtxListFrame; }; -/************************************* -** Class: QtxListFrame -** Level: Internal -*************************************/ - +/*! + \class QtxListFrame +*/ class QtxListFrame : public QFrame { Q_OBJECT diff --git a/src/Qtx/QtxListBox.cxx b/src/Qtx/QtxListBox.cxx index 6d2ce0cd9..47cff9d1d 100755 --- a/src/Qtx/QtxListBox.cxx +++ b/src/Qtx/QtxListBox.cxx @@ -24,6 +24,9 @@ #include #include +/*! + Constructor +*/ QtxListBox::QtxListBox( QWidget* parent, const char* name, WFlags f ) : QListBox( parent, name, f ), myEditor( 0 ), @@ -36,15 +39,25 @@ myModifEnabled( true ) this, SLOT( onContentsMoving( int, int ) ) ); } +/*! + Destructor +*/ QtxListBox::~QtxListBox() { } +/*! + \return true if editing is enabled +*/ bool QtxListBox::isEditEnabled() const { return myEditState; } +/*! + Enables/disables editing + \param on - new state +*/ void QtxListBox::setEditEnabled( bool on ) { if ( isEditEnabled() == on ) @@ -56,36 +69,66 @@ void QtxListBox::setEditEnabled( bool on ) endEdition( defaultEditAction() ); } +/*! + \return default edit action + \sa setDefaultEditAction() +*/ bool QtxListBox::defaultEditAction() const { return myEditDefault; } +/*! + Changes default edit action. + Pressing of ENTER button always accepts new value of edited item. + But other ways, such as focus out or edition of other item accepts + new value of edited item only if "default edit action" is true + \param def - new value +*/ void QtxListBox::setDefaultEditAction( bool def ) { myEditDefault = def; } +/*! + \return modification enabled state + \sa setModificationEnabled() +*/ bool QtxListBox::isModificationEnabled() const { return myModifEnabled; } +/*! + Changes "modification enabled" state + If it is true, then pressing of CTRL + { Up, Down, Home, End } allows move items in list + \param on - new state +*/ void QtxListBox::setModificationEnabled( bool on ) { myModifEnabled = on; } +/*! + \return current edited item +*/ QListBoxItem* QtxListBox::editedItem() const { return item( editedIndex() ); } +/*! + \return current edited index +*/ int QtxListBox::editedIndex() const { return myEditIndex; } +/*! + Starts edition of item + \param idx - index of item +*/ void QtxListBox::startEdition( const int idx ) { if ( idx < 0 || editedIndex() == idx || !isEditEnabled() ) @@ -108,11 +151,19 @@ void QtxListBox::startEdition( const int idx ) ed->setFocus(); } +/*! + Starts edition of item + \param item - item to be edited +*/ void QtxListBox::startEdition( const QListBoxItem* item ) { startEdition( index( item ) ); } +/*! + Finishes edition of item + \param action - if it is true, then new values must be accepted +*/ void QtxListBox::endEdition( const bool action ) { int idx = editedIndex(); @@ -141,6 +192,10 @@ void QtxListBox::endEdition( const bool action ) } } +/*! + Ensures that the item is visible. + \param idx - index of item +*/ void QtxListBox::ensureItemVisible( const int idx ) { if ( idx < 0 ) @@ -152,11 +207,18 @@ void QtxListBox::ensureItemVisible( const int idx ) setTopItem( idx ); } +/*! + Ensures that the item is visible. + \param item - item to be made visible +*/ void QtxListBox::ensureItemVisible( const QListBoxItem* item ) { ensureItemVisible( index( item ) ); } +/*! + \return validator of item editor +*/ const QValidator* QtxListBox::validator() const { const QValidator* v = 0; @@ -165,28 +227,48 @@ const QValidator* QtxListBox::validator() const return v; } +/*! + Removes validator of item editor +*/ void QtxListBox::clearValidator() { if ( editor() ) editor()->clearValidator(); } +/*! + Changes validator of item editor + \param v - new validator +*/ void QtxListBox::setValidator( const QValidator* v ) { if ( editor() ) editor()->setValidator( v ); } +/*! + Moves item to top + \param idx - index of item +*/ void QtxListBox::moveItemToTop( const int idx ) { moveItem( idx, -idx ); } +/*! + Moves item to bottom + \param idx - index of item +*/ void QtxListBox::moveItemToBottom( const int idx ) { moveItem( idx, count() - idx ); } +/*! + Moves item + \param idx - index of item + \param step - changing of position +*/ void QtxListBox::moveItem( const int idx, const int step ) { QListBoxItem* i = item( idx ); @@ -210,6 +292,10 @@ void QtxListBox::moveItem( const int idx, const int step ) emit itemMoved( idx, pos ); } +/*! + Inserts empty item + \param i - position of item (if it is less than 0, then current position is used) +*/ void QtxListBox::createItem( const int i ) { if ( !isEditEnabled() ) @@ -224,6 +310,10 @@ void QtxListBox::createItem( const int i ) startEdition( idx ); } +/*! + Removes item + \param i - position of item (if it is less than 0, then current position is used) +*/ void QtxListBox::deleteItem( const int i ) { if ( !isEditEnabled() ) @@ -240,6 +330,10 @@ void QtxListBox::deleteItem( const int i ) updateEditor(); } +/*! + Scrolls the content so that the point is in the top-left corner. + \param x, y - point co-ordinates +*/ void QtxListBox::setContentsPos( int x, int y ) { QListBox::setContentsPos( x, y ); @@ -247,6 +341,9 @@ void QtxListBox::setContentsPos( int x, int y ) updateEditor(); } +/*! + Custom event filter, performs finish of edition on focus out, escape/return/enter pressing +*/ bool QtxListBox::eventFilter( QObject* o, QEvent* e ) { if ( editor() == o ) @@ -267,6 +364,10 @@ bool QtxListBox::eventFilter( QObject* o, QEvent* e ) return QListBox::eventFilter( o, e ); } +/*! + Custom key press event handler + Allows to move items by CTRL + { Up, Down, Home, End } +*/ void QtxListBox::keyPressEvent( QKeyEvent* e ) { if ( e->key() == Key_Up && e->state() & ControlButton && isModificationEnabled() ) @@ -285,6 +386,9 @@ void QtxListBox::keyPressEvent( QKeyEvent* e ) QListBox::keyPressEvent( e ); } +/*! + Custom resize event handler +*/ void QtxListBox::viewportResizeEvent( QResizeEvent* e ) { QListBox::viewportResizeEvent( e ); @@ -292,6 +396,9 @@ void QtxListBox::viewportResizeEvent( QResizeEvent* e ) updateEditor(); } +/*! + Custom mouse double click event handler +*/ void QtxListBox::mouseDoubleClickEvent( QMouseEvent* e ) { if ( isEditEnabled() ) @@ -300,11 +407,17 @@ void QtxListBox::mouseDoubleClickEvent( QMouseEvent* e ) QListBox::mouseDoubleClickEvent( e ); } +/*! + Updates editor on contents moving +*/ void QtxListBox::onContentsMoving( int, int ) { updateEditor(); } +/*! + \return item editor +*/ QLineEdit* QtxListBox::editor() const { if ( !myEditor ) @@ -315,6 +428,9 @@ QLineEdit* QtxListBox::editor() const return myEditor; } +/*! + Creates item editor +*/ void QtxListBox::createEditor() { if ( myEditor ) @@ -332,6 +448,9 @@ void QtxListBox::createEditor() addChild( myEditor ); } +/*! + Updates item editor +*/ void QtxListBox::updateEditor() { if ( !editedItem() || !editor() ) diff --git a/src/Qtx/QtxListOfOperations.cxx b/src/Qtx/QtxListOfOperations.cxx index 1be04a75d..39eb5f1a2 100644 --- a/src/Qtx/QtxListOfOperations.cxx +++ b/src/Qtx/QtxListOfOperations.cxx @@ -20,26 +20,25 @@ #include "QtxListOfOperations.h" #include -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor +*/ QtxListOfOperations::QtxListOfOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxListOfOperations::~QtxListOfOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return fills list with brackets symbols + \param list - list to be filled + \param open - if it is true, it is necessary to fill with open brackets otherwise with close +*/ void QtxListOfOperations::bracketsList( QStringList& list, bool open ) const { OperationSetsIterator anIt = mySets.begin(), @@ -57,10 +56,9 @@ void QtxListOfOperations::bracketsList( QStringList& list, bool open ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with operation names +*/ void QtxListOfOperations::opersList( QStringList& list ) const { OperationSetsIterator anIt = mySets.begin(), @@ -78,10 +76,9 @@ void QtxListOfOperations::opersList( QStringList& list ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Create some value by it's string representation +*/ bool QtxListOfOperations::createValue( const QString& str, QtxValue& val ) const { bool ok; @@ -96,10 +93,9 @@ bool QtxListOfOperations::createValue( const QString& str, QtxValue& val ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of operation +*/ int QtxListOfOperations::prior( const QString& op, bool isBin ) const { OperationSetsIterator anIt = mySets.begin(), @@ -117,10 +113,12 @@ int QtxListOfOperations::prior( const QString& op, bool isBin ) const return prior>0 ? prior : 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxListOfOperations::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -137,10 +135,13 @@ QtxParser::Error QtxListOfOperations::isValid( const QString& op, return err; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxListOfOperations::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const @@ -169,19 +170,18 @@ QtxParser::Error QtxListOfOperations::calculate( const QString& op, return QtxParser::InvalidOperation; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Clears list of operations +*/ void QtxListOfOperations::clear() { mySets.clear(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if list contains operations + \param name - name of operation +*/ bool QtxListOfOperations::has( const QString& name ) const { OperationSetsIterator anIt = mySets.begin(), @@ -192,30 +192,37 @@ bool QtxListOfOperations::has( const QString& name ) const return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Appends operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior +*/ void QtxListOfOperations::append( const QString& name, QtxOperations* oper, int prior ) { insert( name, oper, prior ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Prepends operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior +*/ void QtxListOfOperations::prepend( const QString& name, QtxOperations* oper, int prior ) { insert( name, oper, prior, 0 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Inserts operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior + \param pos - insert position +*/ void QtxListOfOperations::insert( const QString& name, QtxOperations* oper, int prior, int pos ) { @@ -232,10 +239,10 @@ void QtxListOfOperations::insert( const QString& name, QtxOperations* oper, mySets.insert( mySets.at( pos ), op ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes operations from list + \param name - name of operations +*/ void QtxListOfOperations::remove( const QString& name ) { OperationSets::iterator anIt = mySets.begin(), @@ -248,19 +255,18 @@ void QtxListOfOperations::remove( const QString& name ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return count of operations in list +*/ int QtxListOfOperations::count() const { return mySets.count(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return operations by name + \name - name of operations +*/ QtxOperations* QtxListOfOperations::operations( const QString& name ) const { OperationSetsIterator anIt = mySets.begin(), diff --git a/src/Qtx/QtxListOfOperations.h b/src/Qtx/QtxListOfOperations.h index 3e1a711f1..05a737389 100644 --- a/src/Qtx/QtxListOfOperations.h +++ b/src/Qtx/QtxListOfOperations.h @@ -30,10 +30,15 @@ #endif -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + Class: QtxListOfOperations + + This class provides special variant of QtxOperations. It contains list of QtxOperations* with + fixed order. When it is necessary to calculate operation or get it's priority, this operation is + being found starting from first item. It makes possible to create unions of operations. Every QtxOperations* + has priority, which is added to priority of operation, so that it makes possible to increase priority of + whole group of operations +*/ class QTX_EXPORT QtxListOfOperations : public QtxOperations { public: diff --git a/src/Qtx/QtxListResourceEdit.cxx b/src/Qtx/QtxListResourceEdit.cxx index 038e189b7..bc3bcccb6 100644 --- a/src/Qtx/QtxListResourceEdit.cxx +++ b/src/Qtx/QtxListResourceEdit.cxx @@ -46,11 +46,9 @@ #include "QtxComboBox.h" #include "QtxDirListEditor.h" -/* - Class: QtxListResourceEdit - Descr: GUI implementation of QtxResourceEdit - manager of resources +/*! + Constructor */ - QtxListResourceEdit::QtxListResourceEdit( QtxResourceMgr* mgr, QWidget* parent ) : QFrame( parent ), QtxResourceEdit( mgr ) @@ -76,10 +74,19 @@ QtxResourceEdit( mgr ) updateState(); } +/*! + Destructor +*/ QtxListResourceEdit::~QtxListResourceEdit() { } +/*! + Sets value to widget + \param id - id of widget + \param prop - name of resource + \param val - value of resource +*/ void QtxListResourceEdit::setItemProperty( const int id, const QString& prop, const QVariant& val ) { Item* i = item( id ); @@ -96,6 +103,9 @@ void QtxListResourceEdit::setItemProperty( const int id, const QString& prop, co updateVisible(); } +/*! + SLOT: called if main list selection changed, raises resource group widgets +*/ void QtxListResourceEdit::onSelectionChanged() { QString title = myList->text( myList->index( myList->selectedItem() ) ); @@ -115,6 +125,10 @@ void QtxListResourceEdit::onSelectionChanged() myStack->raiseWidget( i->id() ); } +/*! + Custom activity after item addition + \param i - added item +*/ void QtxListResourceEdit::itemAdded( QtxResourceEdit::Item* i ) { if ( !i ) @@ -127,6 +141,10 @@ void QtxListResourceEdit::itemAdded( QtxResourceEdit::Item* i ) updateVisible(); } +/*! + Creates and \return category + \param title - category title +*/ QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, const int ) { Item* i = item( title, -1 ); @@ -146,6 +164,10 @@ QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, co return category; } +/*! + Emits signal about resource changing + \param map - map of changed resources +*/ void QtxListResourceEdit::changedResources( const QMap& map ) { QMap idMap; @@ -163,6 +185,9 @@ void QtxListResourceEdit::changedResources( const QMap& map ) emit resourcesChanged( idMap ); } +/*! + Updates widgets with accordance with main list selection +*/ void QtxListResourceEdit::updateState() { if ( myList->selectedItem() && myStack->visibleWidget() ) @@ -173,6 +198,9 @@ void QtxListResourceEdit::updateState() myList->setShown( myList->count() > 1 ); } +/*! + Updates visibility state +*/ void QtxListResourceEdit::updateVisible() { QPtrList items; @@ -201,11 +229,9 @@ void QtxListResourceEdit::updateVisible() updateState(); } -/* - Class: QtxListResourceEdit::Category - Descr: GUI implementation of preferences category. +/*! + Constructor */ - QtxListResourceEdit::Category::Category( QtxListResourceEdit* edit, QWidget* parent ) : QFrame( parent ), Item( edit ) @@ -226,28 +252,47 @@ Item( edit ) updateState(); } +/*! + Destructor +*/ QtxListResourceEdit::Category::~Category() { } +/*! + \return true if it is empty +*/ bool QtxListResourceEdit::Category::isEmpty() const { return Item::isEmpty() && myInfo->text().isEmpty(); } +/*! + \return category type +*/ int QtxListResourceEdit::Category::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Category::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Category::retrieve() { } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::Category::property( const QString& prop ) const { QVariant var; @@ -256,6 +301,11 @@ QVariant QtxListResourceEdit::Category::property( const QString& prop ) const return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::Category::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -268,6 +318,10 @@ void QtxListResourceEdit::Category::setProperty( const QString& name, const QVar updateState(); } +/*! + Creates new tab + \param title - name of tab +*/ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& title, const int ) { Item* i = item( title, id() ); @@ -282,6 +336,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& return tab; } +/*! + Updates category +*/ void QtxListResourceEdit::Category::updateState() { if ( myTabs->count() ) @@ -295,11 +352,10 @@ void QtxListResourceEdit::Category::updateState() myInfo->hide(); } -/* - Class: QtxListResourceEdit::Tab - Descr: GUI implementation of resources tab. -*/ +/*! + Constructor +*/ QtxListResourceEdit::Tab::Tab( QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : QFrame( parent ), Item( edit, pItem ) @@ -312,23 +368,38 @@ Item( edit, pItem ) main->addStretch( 1 ); } +/*! + Destructor +*/ QtxListResourceEdit::Tab::~Tab() { } +/*! + \return tab type +*/ int QtxListResourceEdit::Tab::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Tab::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Tab::retrieve() { } +/*! + Delayed initialization of a widget +*/ void QtxListResourceEdit::Tab::polish() { QFrame::polish(); @@ -336,6 +407,10 @@ void QtxListResourceEdit::Tab::polish() adjustLabels(); } +/*! + Creates new group + \param title - name of group +*/ QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& title, const int ) { Item* i = item( title, id() ); @@ -347,6 +422,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& titl return group; } +/*! + Adjusts sizes of labels +*/ void QtxListResourceEdit::Tab::adjustLabels() { QObjectList* labels = queryList( "QLabel" ); @@ -373,34 +451,48 @@ void QtxListResourceEdit::Tab::adjustLabels() } } -/* - Class: QtxListResourceEdit::Group - Descr: GUI implementation of resources group. +/*! + Constructor */ - QtxListResourceEdit::Group::Group( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : QGroupBox( 2, Qt::Horizontal, title, parent ), Item( edit, pItem ) { } +/*! + Destructor +*/ QtxListResourceEdit::Group::~Group() { } +/*! + \return group type +*/ int QtxListResourceEdit::Group::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Group::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Group::retrieve() { } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::Group::property( const QString& prop ) const { QVariant var; @@ -413,6 +505,11 @@ QVariant QtxListResourceEdit::Group::property( const QString& prop ) const return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::Group::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -435,12 +532,21 @@ void QtxListResourceEdit::Group::setProperty( const QString& name, const QVarian } } +/*! + Sets title of group + \param title - new title of group +*/ void QtxListResourceEdit::Group::setTitle( const QString& title ) { Item::setTitle( title ); QGroupBox::setTitle( title ); } +/*! + Creates new item + \param title - title of new item + \type - type of new item +*/ QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& title, const int type ) { Item* item = 0; @@ -491,11 +597,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& ti return item; } -/* - Class: QtxListResourceEdit::PrefItem - Descr: Base class for preferences items. +/*! + Constructor */ - QtxListResourceEdit::PrefItem::PrefItem( const int type, QtxResourceEdit* edit, Item* pi, QWidget* parent ) : QHBox( parent ), Item( edit, pi ), @@ -504,48 +608,62 @@ myType( type ) setSpacing( 5 ); } +/*! + Destructor +*/ QtxListResourceEdit::PrefItem::~PrefItem() { } +/*! + \return preference item type +*/ int QtxListResourceEdit::PrefItem::type() const { return myType; } +/*! + Doesn't create item, \return 0 by default +*/ QtxResourceEdit::Item* QtxListResourceEdit::PrefItem::createItem( const QString&, const int ) { return 0; } -/* - Class: QtxListResourceEdit::Spacer - Descr: GUI implementation of resources spacer. +/*! + Constructor */ - QtxListResourceEdit::Spacer::Spacer( QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Space, edit, pItem, parent ) { setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::Spacer::~Spacer() { } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Spacer::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Spacer::retrieve() { } -/* - Class: QtxListResourceEdit::SelectItem - Descr: GUI implementation of resources list item. +/*! + Constructor */ - QtxListResourceEdit::SelectItem::SelectItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Selector, edit, pItem, parent ) @@ -555,10 +673,16 @@ QtxListResourceEdit::SelectItem::SelectItem( const QString& title, QtxResourceEd myList->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::SelectItem::~SelectItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::SelectItem::store() { int idx = myList->currentItem(); @@ -566,6 +690,9 @@ void QtxListResourceEdit::SelectItem::store() setInteger( myIndex[idx] ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::SelectItem::retrieve() { int id = getInteger( -1 ); @@ -580,6 +707,10 @@ void QtxListResourceEdit::SelectItem::retrieve() myList->setCurrentItem( idx ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::SelectItem::property( const QString& name ) const { QVariant val; @@ -600,6 +731,11 @@ QVariant QtxListResourceEdit::SelectItem::property( const QString& name ) const return val; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::SelectItem::setProperty( const QString& name, const QVariant& val ) { if ( name == QString( "strings" ) ) @@ -608,6 +744,10 @@ void QtxListResourceEdit::SelectItem::setProperty( const QString& name, const QV setIndexes( val ); } +/*! + Sets property "strings" - items for selection in combo box + \param var - must be string list: list of items +*/ void QtxListResourceEdit::SelectItem::setStrings( const QVariant& var ) { if ( var.type() != QVariant::StringList ) @@ -616,6 +756,10 @@ void QtxListResourceEdit::SelectItem::setStrings( const QVariant& var ) setStrings( var.toStringList() ); } +/*! + Sets property "indexes" - corresponding indices of items in combo box + \param var - must be list of integer variants: list of indices +*/ void QtxListResourceEdit::SelectItem::setIndexes( const QVariant& var ) { if ( var.type() != QVariant::List ) @@ -631,12 +775,20 @@ void QtxListResourceEdit::SelectItem::setIndexes( const QVariant& var ) setIndexes( lst ); } +/*! + Sets property "strings" - items for selection in combo box + \param lst - list of items +*/ void QtxListResourceEdit::SelectItem::setStrings( const QStringList& lst ) { myList->clear(); myList->insertStringList( lst ); } +/*! + Sets property "indexes" - corresponding indices of items in combo box + \param var - list of indices +*/ void QtxListResourceEdit::SelectItem::setIndexes( const QValueList& lst ) { myIndex.clear(); @@ -646,11 +798,9 @@ void QtxListResourceEdit::SelectItem::setIndexes( const QValueList& lst ) myIndex.insert( idx, *it ); } -/* - Class: QtxListResourceEdit::StateItem - Descr: GUI implementation of resources bool item. +/*! + Constructor */ - QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Bool, edit, pItem, parent ) @@ -659,25 +809,32 @@ QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit myState->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::StateItem::~StateItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::StateItem::store() { setBoolean( myState->isChecked() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::StateItem::retrieve() { myState->setChecked( getBoolean() ); } -/* - Class: QtxListResourceEdit::StringItem - Descr: GUI implementation of resources string item. +/*! + Constructor */ - QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( String, edit, pItem, parent ) @@ -687,25 +844,32 @@ QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEd myString->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::StringItem::~StringItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::StringItem::store() { setString( myString->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::StringItem::retrieve() { myString->setText( getString() ); } -/* - Class: QtxListResourceEdit::IntegerEditItem - Descr: GUI implementation of resources integer item. +/*! + Constructor */ - QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Integer, edit, pItem, parent ) { @@ -715,25 +879,32 @@ QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, Qtx myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::IntegerEditItem::~IntegerEditItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::IntegerEditItem::store() { setString( myInteger->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::IntegerEditItem::retrieve() { myInteger->setText( getString() ); } -/* - Class: QtxListResourceEdit::IntegerSpinItem - Descr: GUI implementation of resources integer item. +/*! + Constructor */ - QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( IntSpin, edit, pItem, parent ) { @@ -742,20 +913,33 @@ QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, Qtx myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::IntegerSpinItem::~IntegerSpinItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::IntegerSpinItem::store() { setInteger( myInteger->value() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::IntegerSpinItem::retrieve() { myInteger->setValue( getInteger() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) const { QVariant var; @@ -774,6 +958,11 @@ QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) c return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -792,11 +981,9 @@ void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, con myInteger->setSuffix( prop.toString() ); } -/* - Class: QtxListResourceEdit::DoubleEditItem - Descr: GUI implementation of resources string item. +/*! + Constructor */ - QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Double, edit, pItem, parent ) @@ -807,25 +994,32 @@ QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxRe myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::DoubleEditItem::~DoubleEditItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DoubleEditItem::store() { setString( myDouble->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DoubleEditItem::retrieve() { myDouble->setText( getString() ); } -/* - Class: QtxListResourceEdit::DoubleSpinItem - Descr: GUI implementation of resources double item. +/*! + Constructor */ - QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( DblSpin, edit, pItem, parent ) @@ -835,20 +1029,33 @@ QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxRe myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::DoubleSpinItem::~DoubleSpinItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DoubleSpinItem::store() { setDouble( myDouble->value() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DoubleSpinItem::retrieve() { myDouble->setValue( getDouble() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) const { QVariant var; @@ -869,6 +1076,11 @@ QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) co return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -889,15 +1101,17 @@ void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, cons myDouble->setSuffix( prop.toString() ); } -/* - Class: QtxListResourceEdit::ColorItem - Descr: GUI implementation of resources color item. +/*! + Constructor */ - QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Color, edit, pItem, parent ) { + /*! + \class QtxListResourceEdit::ColorItem::ColorSelector + \brief Label, showing color and allowing to pick color with help of standard color dialog + */ class ColorSelector : public QLabel { public: @@ -931,24 +1145,32 @@ QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit myColor->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::ColorItem::~ColorItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::ColorItem::store() { setColor( myColor->paletteBackgroundColor() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::ColorItem::retrieve() { myColor->setPaletteBackgroundColor( getColor() ); } -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. +/*! + Constructor */ QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) @@ -974,10 +1196,16 @@ QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit* setProperty( "widget_flags", ( int )All ); } +/*! + Destructor +*/ QtxListResourceEdit::FontItem::~FontItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::FontItem::store() { QFont f( family(), size() ); @@ -989,6 +1217,9 @@ void QtxListResourceEdit::FontItem::store() Item::setFont( f ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::FontItem::retrieve() { QFont f = getFont(); @@ -997,6 +1228,10 @@ void QtxListResourceEdit::FontItem::retrieve() setParams( f.bold(), f.italic(), f.underline() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::FontItem::property( const QString& name ) const { if( name=="system" ) @@ -1066,6 +1301,11 @@ QVariant QtxListResourceEdit::FontItem::property( const QString& name ) const return QVariant(); } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::FontItem::setProperty( const QString& name, const QVariant& value ) { if( name=="system" ) @@ -1117,6 +1357,10 @@ void QtxListResourceEdit::FontItem::setProperty( const QString& name, const QVar myProperties[ name ] = value; } +/*! + Sets family of font + \param f - new family +*/ void QtxListResourceEdit::FontItem::setFamily( const QString& f ) { QString curtext; @@ -1148,11 +1392,18 @@ void QtxListResourceEdit::FontItem::setFamily( const QString& f ) onActivateFamily( idx ); } +/*! + \return family of font +*/ QString QtxListResourceEdit::FontItem::family() const { return myFamilies->currentText(); } +/*! + Sets size of font + \param s - new size of font +*/ void QtxListResourceEdit::FontItem::setSize( const int s ) { int cursize = -1; @@ -1171,6 +1422,9 @@ void QtxListResourceEdit::FontItem::setSize( const int s ) mySizes->setCurrentText( cursize>0 ? QString( "%1" ).arg( cursize ) : "" ); } +/*! + \return size of font +*/ int QtxListResourceEdit::FontItem::size() const { QString s = mySizes->currentText(); @@ -1179,6 +1433,12 @@ int QtxListResourceEdit::FontItem::size() const return ( ok ? pSize : 0 ); } +/*! + Sets font parameters + \param bold - is font bold + \param italic - is font italic + \param underline - is font underlined +*/ void QtxListResourceEdit::FontItem::setParams( const bool bold, const bool italic, const bool underline ) { bool curbold = false, curitalic = false, curunderline = false; @@ -1211,6 +1471,12 @@ void QtxListResourceEdit::FontItem::setParams( const bool bold, const bool itali myUnderline->setChecked( curunderline ); } +/*! + \return font parameters + \param bold - is font bold + \param italic - is font italic + \param underline - is font underlined +*/ void QtxListResourceEdit::FontItem::params( bool& bold, bool& italic, bool& underline ) { bold = myBold->isChecked(); @@ -1218,9 +1484,11 @@ void QtxListResourceEdit::FontItem::params( bool& bold, bool& italic, bool& unde underline = myUnderline->isChecked(); } +/*! + Updates internal selection of font properties +*/ void QtxListResourceEdit::FontItem::internalUpdate() { - //update internal selection of font properties setFamily( family() ); setSize( size() ); bool b1, b2, b3; @@ -1228,6 +1496,9 @@ void QtxListResourceEdit::FontItem::internalUpdate() setParams( b1, b2, b3 ); } +/*! + SLOT: called if family is activated, updates list of possible sizes +*/ void QtxListResourceEdit::FontItem::onActivateFamily( int ) { QVariant sizes = property( QString( "%1:sizes" ).arg( family() ) ); @@ -1248,6 +1519,9 @@ void QtxListResourceEdit::FontItem::onActivateFamily( int ) setSize( s ); } +/*! + SLOT: called if it is necessary to show font preview +*/ void QtxListResourceEdit::FontItem::onPreview() { QFont f( family(), size() ); @@ -1270,11 +1544,8 @@ void QtxListResourceEdit::FontItem::onPreview() - - -/* - Class: QtxListResourceEdit::DirListItem - Descr: +/*! + Constructor */ QtxListResourceEdit::DirListItem::DirListItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Font, edit, pItem, parent ) @@ -1282,10 +1553,16 @@ QtxListResourceEdit::DirListItem::DirListItem( const QString& title, QtxResource myDirListEditor = new QtxDirListEditor( this ); } +/*! + Destructor +*/ QtxListResourceEdit::DirListItem::~DirListItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DirListItem::store() { QStringList list; @@ -1293,6 +1570,9 @@ void QtxListResourceEdit::DirListItem::store() setString( QString(list.join(";")) ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DirListItem::retrieve() { myDirListEditor->setPathList(QStringList::split(";", getString())); @@ -1300,9 +1580,8 @@ void QtxListResourceEdit::DirListItem::retrieve() -/* - Class: QtxListResourceEdit::FileItem - Descr: GUI implementation of resources file item. +/*! + Constructor */ QtxListResourceEdit::FileItem::FileItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) @@ -1321,22 +1600,35 @@ QtxListResourceEdit::FileItem::FileItem( const QString& title, QtxResourceEdit* connect( myOpenFile, SIGNAL( clicked() ), this, SLOT( onOpenFile() ) ); } +/*! + Destructor +*/ QtxListResourceEdit::FileItem::~FileItem() { if( myFileDlg ) delete myFileDlg; } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::FileItem::store() { setString( myFile->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::FileItem::retrieve() { myFile->setText( getString() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::FileItem::property( const QString& name ) const { if( name=="filter" ) @@ -1351,6 +1643,11 @@ QVariant QtxListResourceEdit::FileItem::property( const QString& name ) const return QVariant(); } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::FileItem::setProperty( const QString& name, const QVariant& value ) { if( name=="filter" ) @@ -1375,6 +1672,9 @@ void QtxListResourceEdit::FileItem::setProperty( const QString& name, const QVar } } +/*! + SLOT: called if user click "Open File" button, shows dialog +*/ void QtxListResourceEdit::FileItem::onOpenFile() { if( !myFileDlg ) @@ -1393,6 +1693,10 @@ void QtxListResourceEdit::FileItem::onOpenFile() } } +/*! + \return true if file satisfies permissions + \param f - file name +*/ bool QtxListResourceEdit::FileItem::isFileCorrect( const QString& f ) const { bool res = false; @@ -1403,6 +1707,10 @@ bool QtxListResourceEdit::FileItem::isFileCorrect( const QString& f ) const return res; } +/*! + SLOT: called if user has selected file in file dialog, checks file permissions and passes it's name to widget + \param f - file name +*/ void QtxListResourceEdit::FileItem::onFileSelected( const QString& f ) { if( myFileDlg && !isFileCorrect( f ) ) @@ -1410,17 +1718,26 @@ void QtxListResourceEdit::FileItem::onFileSelected( const QString& f ) } - +/*! + Constructor +*/ QtxListResourceEdit::FileItem::FileValidator::FileValidator( FileItem* item, QObject* parent ) : QValidator( parent ), myItem( item ) { } +/*! + Destructor +*/ QtxListResourceEdit::FileItem::FileValidator::~FileValidator() { } +/*! + Check file permissions + \param f - file name +*/ QValidator::State QtxListResourceEdit::FileItem::FileValidator::validate( QString& f, int& ) const { if( myItem && myItem->isFileCorrect( f ) ) diff --git a/src/Qtx/QtxListResourceEdit.h b/src/Qtx/QtxListResourceEdit.h index 19713ca08..7b3aa7ea7 100644 --- a/src/Qtx/QtxListResourceEdit.h +++ b/src/Qtx/QtxListResourceEdit.h @@ -43,9 +43,9 @@ class QtxDblSpinBox; class QtxDirListEditor; -/* - Class: QtxListResourceEdit - Descr: GUI implementation of QtxResourceEdit - manager of resources +/*! + \class QtxListResourceEdit + GUI implementation of QtxResourceEdit - manager of resources */ class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit @@ -101,9 +101,9 @@ private: QWidgetStack* myStack; }; -/* - Class: QtxListResourceEdit::Category - Descr: GUI implementation of 'Category' frame +/*! + \class QtxListResourceEdit::Category + GUI implementation of 'Category' frame */ class QtxListResourceEdit::Category : public QFrame, public Item @@ -132,9 +132,9 @@ private: QTabWidget* myTabs; }; -/* - Class: QtxListResourceEdit::Tab - Descr: GUI implementation of resources tab. +/*! + \class QtxListResourceEdit::Tab + GUI implementation of resources tab. */ class QtxListResourceEdit::Tab : public QFrame, public Item @@ -160,9 +160,9 @@ private: QWidget* myMainFrame; }; -/* - Class: QtxListResourceEdit::Group - Descr: GUI implementation of resources group. +/*! + \class QtxListResourceEdit::Group + GUI implementation of resources group. */ class QtxListResourceEdit::Group : public QGroupBox, public Item @@ -184,9 +184,9 @@ protected: virtual Item* createItem( const QString&, const int ); }; -/* - Class: QtxListResourceEdit::PrefItem - Descr: Base class for preferences items. +/*! + \class QtxListResourceEdit::PrefItem + Base class for preferences items. */ class QtxListResourceEdit::PrefItem : public QHBox, public Item @@ -204,9 +204,9 @@ private: int myType; }; -/* - Class: QtxListResourceEdit::Spacer - Descr: GUI implementation of resources spacer. +/*! + \class QtxListResourceEdit::Spacer + GUI implementation of resources spacer. */ class QtxListResourceEdit::Spacer : public PrefItem @@ -219,9 +219,9 @@ public: virtual void retrieve(); }; -/* - Class: QtxListResourceEdit::SelectItem - Descr: GUI implementation of resources selector item. +/*! + \class QtxListResourceEdit::SelectItem + GUI implementation of resources selector item. */ class QtxListResourceEdit::SelectItem : public PrefItem @@ -248,11 +248,10 @@ private: QMap myIndex; }; -/* - Class: QtxListResourceEdit::StateItem - Descr: GUI implementation of resources bool item. +/*! + \class QtxListResourceEdit::StateItem + GUI implementation of resources bool item. */ - class QtxListResourceEdit::StateItem : public PrefItem { public: @@ -266,9 +265,9 @@ private: QCheckBox* myState; }; -/* - Class: QtxListResourceEdit::StringItem - Descr: GUI implementation of resources string item. +/*! + \class QtxListResourceEdit::StringItem + GUI implementation of resources string item. */ class QtxListResourceEdit::StringItem : public PrefItem @@ -284,9 +283,9 @@ private: QLineEdit* myString; }; -/* - Class: QtxListResourceEdit::IntegerEditItem - Descr: GUI implementation of resources integer item. +/*! + \class QtxListResourceEdit::IntegerEditItem + GUI implementation of resources integer item. */ class QtxListResourceEdit::IntegerEditItem : public PrefItem @@ -302,9 +301,9 @@ private: QLineEdit* myInteger; }; -/* - Class: QtxListResourceEdit::IntegerSpinItem - Descr: GUI implementation of resources integer item. +/*! + \class QtxListResourceEdit::IntegerSpinItem + GUI implementation of resources integer item. */ class QtxListResourceEdit::IntegerSpinItem : public PrefItem @@ -323,9 +322,9 @@ private: QtxIntSpinBox* myInteger; }; -/* - Class: QtxListResourceEdit::DoubleEditItem - Descr: GUI implementation of resources double item. +/*! + \class QtxListResourceEdit::DoubleEditItem + GUI implementation of resources double item. */ class QtxListResourceEdit::DoubleEditItem : public PrefItem @@ -341,9 +340,9 @@ private: QLineEdit* myDouble; }; -/* - Class: QtxListResourceEdit::DoubleSpinItem - Descr: GUI implementation of resources double item. +/*! + \class QtxListResourceEdit::DoubleSpinItem + GUI implementation of resources double item. */ class QtxListResourceEdit::DoubleSpinItem : public PrefItem @@ -362,9 +361,9 @@ private: QtxDblSpinBox* myDouble; }; -/* - Class: QtxListResourceEdit::ColorItem - Descr: GUI implementation of resources color item. +/*! + \class QtxListResourceEdit::ColorItem + GUI implementation of resources color item. */ class QtxListResourceEdit::ColorItem : public PrefItem @@ -380,14 +379,13 @@ private: QWidget* myColor; }; -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. -*/ - class QtxComboBox; class QToolButton; +/*! + \class QtxListResourceEdit::FontItem + GUI implementation of resources font item. +*/ class QtxListResourceEdit::FontItem : public PrefItem { Q_OBJECT @@ -441,10 +439,9 @@ private: /*! - * \brief GUI implementation of resources directory list item. - * - * - */ + \class QtxListResourceEdit + \brief GUI implementation of resources directory list item. +*/ class QtxListResourceEdit::DirListItem : public PrefItem { Q_OBJECT @@ -474,20 +471,25 @@ private: QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories }; -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. -*/ - class QtxComboBox; class QToolButton; class QFileDialog; +/*! + \class QtxListResourceEdit::FontItem + GUI implementation of resources font item. +*/ + class QtxListResourceEdit::FileItem : public PrefItem { Q_OBJECT private: + /*! + \class QtxListResourceEdit::FileItem::FileValidator + custom file validator: checks files on some rights + */ + class FileValidator : public QValidator { public: diff --git a/src/Qtx/QtxListView.cxx b/src/Qtx/QtxListView.cxx index e0ccd4991..83e74d95d 100755 --- a/src/Qtx/QtxListView.cxx +++ b/src/Qtx/QtxListView.cxx @@ -48,6 +48,9 @@ static const char* list_xpm[] = { "................", "................" }; +/*! + Constructor +*/ QtxListView::QtxListView( const int state, QWidget* parent, const char* name, WFlags f ) : QListView( parent, name, f ), myButton( 0 ), @@ -56,6 +59,9 @@ myHeaderState( state ) initialize(); } +/*! + Constructor +*/ QtxListView::QtxListView( QWidget* parent, const char* name, WFlags f ) : QListView( parent, name, f ), myButton( 0 ), @@ -64,6 +70,9 @@ myHeaderState( HeaderAuto ) initialize(); } +/*! + Initialization +*/ void QtxListView::initialize() { if ( myHeaderState == HeaderButton ) @@ -91,10 +100,18 @@ void QtxListView::initialize() connect( header(), SIGNAL( sizeChange( int, int, int ) ), this, SLOT( onHeaderResized() ) ); } +/*! + Destructor +*/ QtxListView::~QtxListView() { } +/*! + Add new column + \param label - column title + \param width - column width +*/ int QtxListView::addColumn( const QString& label, int width ) { int res = QListView::addColumn( label, width ); @@ -104,6 +121,12 @@ int QtxListView::addColumn( const QString& label, int width ) return res; } +/*! + Add new column + \param iconset - column icon + \param label - column title + \param width - column width +*/ int QtxListView::addColumn( const QIconSet& iconset, const QString& label, int width ) { int res = QListView::addColumn( iconset, label, width ); @@ -113,6 +136,10 @@ int QtxListView::addColumn( const QIconSet& iconset, const QString& label, int w return res; } +/*! + Removes column + \param index - column index +*/ void QtxListView::removeColumn( int index ) { QListView::removeColumn( index ); @@ -121,11 +148,19 @@ void QtxListView::removeColumn( int index ) onHeaderResized(); } +/*! + \return true if column is situated in popup for show/hide columns +*/ bool QtxListView::appropriate( const int index ) const { return index >= 0 && index < (int)myAppropriate.count() && myAppropriate[index]; } +/*! + Sets appropriate state: whether column is situated in popup for show/hide columns + \param index - column index + \param on - new state +*/ void QtxListView::setAppropriate( const int index, const bool on ) { if ( index < 0 || index >= (int)myAppropriate.count() ) @@ -134,18 +169,27 @@ void QtxListView::setAppropriate( const int index, const bool on ) myAppropriate[index] = on ? 1 : 0; } +/*! + Resizes list view and header +*/ void QtxListView::resize( int w, int h ) { QListView::resize( w, h ); onHeaderResized(); } +/*! + Shows list view +*/ void QtxListView::show() { QListView::show(); onHeaderResized(); } +/*! + Update on resize contents +*/ void QtxListView::resizeContents( int w, int h ) { /* @@ -162,16 +206,28 @@ void QtxListView::resizeContents( int w, int h ) onHeaderResized(); } +/*! + Shows column + \param ind - column index +*/ void QtxListView::show( int ind ) { setShown( ind, true ); } +/*! + Hides column + \param ind - column index +*/ void QtxListView::hide( int ind ) { setShown( ind, false ); } +/*! + \return true if column is shown + \param ind - column index +*/ bool QtxListView::isShown( int ind ) const { if ( ind>=0 && indcount() ) @@ -180,6 +236,11 @@ bool QtxListView::isShown( int ind ) const return false; } +/*! + Shows/hides column + \param ind - column index + \param sh - new is shown state +*/ void QtxListView::setShown( int ind, bool sh ) { if( ind<0 || ind>=header()->count() || isShown( ind )==sh ) @@ -207,6 +268,11 @@ void QtxListView::setShown( int ind, bool sh ) updateContents(); } +/*! + Changes column width + \param c - column index + \param w - new width +*/ void QtxListView::setColumnWidth( int c, int w ) { if ( myColumns.contains( c ) ) @@ -215,6 +281,9 @@ void QtxListView::setColumnWidth( int c, int w ) QListView::setColumnWidth( c, !myColumns.contains( c ) ? w : 0 ); } +/*! + \return the recommended size for the widget +*/ QSize QtxListView::sizeHint() const { QSize sz = QListView::sizeHint(); @@ -225,6 +294,9 @@ QSize QtxListView::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxListView::minimumSizeHint() const { QSize sz = QListView::minimumSizeHint(); @@ -235,6 +307,9 @@ QSize QtxListView::minimumSizeHint() const return sz; } +/*! + SLOT: called if header is resized +*/ void QtxListView::onHeaderResized() { if ( myHeaderState == HeaderAuto ) @@ -273,6 +348,10 @@ void QtxListView::onHeaderResized() } } +/*! + Shows popup filled with column names to show/hide column + \param x, y - position of popup +*/ void QtxListView::showPopup( const int x, const int y ) { myPopup->clear(); @@ -289,6 +368,9 @@ void QtxListView::showPopup( const int x, const int y ) myPopup->exec( mapToGlobal( QPoint( x, y ) ) ); } +/*! + SLOT: shows popup on button ".." click +*/ void QtxListView::onButtonClicked() { if ( myHeaderState != HeaderButton ) @@ -300,6 +382,10 @@ void QtxListView::onButtonClicked() showPopup( x, y ); } +/*! + SLOT: called on popup action is activated, toggles shown state of column + \param id - column index +*/ void QtxListView::onShowHide( int id ) { //if ( myHeaderState != HeaderButton ) @@ -308,12 +394,18 @@ void QtxListView::onShowHide( int id ) setShown( id, !isShown( id ) ); } +/*! + Receives all resize events sent to the viewport +*/ void QtxListView::viewportResizeEvent( QResizeEvent* e ) { QListView::viewportResizeEvent( e ); onHeaderResized(); } +/*! + Custom event filter, shows popup on right button click +*/ bool QtxListView::eventFilter( QObject* o, QEvent* e ) { if( o==header() && e->type()==QEvent::MouseButtonPress ) diff --git a/src/Qtx/QtxLogoMgr.cxx b/src/Qtx/QtxLogoMgr.cxx index 68811c5f3..5156bc795 100644 --- a/src/Qtx/QtxLogoMgr.cxx +++ b/src/Qtx/QtxLogoMgr.cxx @@ -27,6 +27,9 @@ #include #include +/*! + Constructor +*/ QtxLogoMgr::QtxLogoMgr( QMenuBar* mb ) : QObject( mb ), myMenus( mb ), @@ -34,6 +37,9 @@ myId( 0 ) { } +/*! + Destructor +*/ QtxLogoMgr::~QtxLogoMgr() { } @@ -106,6 +112,9 @@ void QtxLogoMgr::clear() generate(); } +/*! + Inserts logo to menu bar +*/ void QtxLogoMgr::generate() { if ( !menuBar() ) @@ -175,6 +184,10 @@ void QtxLogoMgr::generate() QApplication::postEvent( menuBar()->parentWidget(), new QEvent( QEvent::LayoutHint ) ); } +/*! + \return index of found logo + \param id - logo id +*/ int QtxLogoMgr::find( const QString& id ) const { int idx = -1; diff --git a/src/Qtx/QtxMainWindow.cxx b/src/Qtx/QtxMainWindow.cxx index b8968ef8c..39b385fea 100644 --- a/src/Qtx/QtxMainWindow.cxx +++ b/src/Qtx/QtxMainWindow.cxx @@ -47,6 +47,9 @@ private: QWidget* myWidget; }; +/*! + Constructor +*/ QtxMainWindow::Filter::Filter( QWidget* wid, QtxMainWindow* mw, QObject* parent ) : QObject( parent ), myMain( mw ), @@ -55,10 +58,16 @@ myWidget( wid ) myMain->installEventFilter( this ); }; +/*! + Destructor +*/ QtxMainWindow::Filter::~Filter() { } +/*! + Custom event filter +*/ bool QtxMainWindow::Filter::eventFilter( QObject* o, QEvent* e ) { if ( myMain == o && e->type() == QEvent::ChildRemoved && @@ -73,7 +82,6 @@ bool QtxMainWindow::Filter::eventFilter( QObject* o, QEvent* e ) Descr: Main window with support of dockable menubar/status bar and geometry store/retrieve. */ - QtxMainWindow::QtxMainWindow( QWidget* parent, const char* name, WFlags f ) : QMainWindow( parent, name, f ), myMode( -1 ), @@ -82,17 +90,27 @@ myStatusBar( NULL ) { } +/*! + Destructor +*/ QtxMainWindow::~QtxMainWindow() { setDockableMenuBar( false ); setDockableStatusBar( false ); } +/*! + \return true if menu bar exists +*/ bool QtxMainWindow::isDockableMenuBar() const { return myMenuBar; } +/*! + Creates or deletes menu bar + \param on - if it is true, then to create, otherwise - to delete +*/ void QtxMainWindow::setDockableMenuBar( const bool on ) { if ( isDockableMenuBar() == on ) @@ -134,11 +152,18 @@ void QtxMainWindow::setDockableMenuBar( const bool on ) setUpLayout(); } +/*! + \return true if status bar exists +*/ bool QtxMainWindow::isDockableStatusBar() const { return myStatusBar; } +/*! + Creates or deletes status bar + \param on - if it is true, then to create, otherwise - to delete +*/ void QtxMainWindow::setDockableStatusBar( const bool on ) { if ( isDockableStatusBar() == on ) @@ -185,6 +210,11 @@ void QtxMainWindow::setDockableStatusBar( const bool on ) setUpLayout(); } +/*! + Retrieve the geometry information from the specified resource manager section. + \param resMgr - instance of ersource manager + \param section - section name +*/ void QtxMainWindow::loadGeometry( QtxResourceMgr* resMgr, const QString& section ) { QString sec = section.stripWhiteSpace(); @@ -232,6 +262,9 @@ void QtxMainWindow::loadGeometry( QtxResourceMgr* resMgr, const QString& section myMode = winState; } +/*! + Shows main window +*/ void QtxMainWindow::show() { if ( myMode != -1 ) @@ -242,11 +275,14 @@ void QtxMainWindow::show() QMainWindow::show(); } +/*! + Handler of custom events +*/ void QtxMainWindow::customEvent( QCustomEvent* e ) { QMainWindow::customEvent( e ); - int mode = (int)e->data(); + size_t mode = size_t(e->data()); switch ( mode ) { case WS_Normal: @@ -261,6 +297,12 @@ void QtxMainWindow::customEvent( QCustomEvent* e ) } } +/*! + \return relative co-ordinate by two points + \param type - type of result: WP_Center (center), WP_Left (left), WP_Right (right) + \param wh - left point + \param WH - right point +*/ int QtxMainWindow::relativeCoordinate( const int type, const int WH, const int wh ) const { int res = 0; @@ -279,6 +321,11 @@ int QtxMainWindow::relativeCoordinate( const int type, const int WH, const int w return res; } +/*! + Store the geometry information into the specified resource manager section. + \param resMgr - instance of ersource manager + \param section - section name +*/ void QtxMainWindow::saveGeometry( QtxResourceMgr* resMgr, const QString& section ) const { QString sec = section.stripWhiteSpace(); @@ -299,16 +346,28 @@ void QtxMainWindow::saveGeometry( QtxResourceMgr* resMgr, const QString& section resMgr->setValue( sec, "state", winState ); } +/*! + Custom event filter +*/ bool QtxMainWindow::eventFilter( QObject* o, QEvent* e ) { return QMainWindow::eventFilter( o, e ); } +/*! + Controls whether or not the dw dock window's caption should appear + as a menu item on the dock window menu that lists the dock windows. + \param dw - window + \param a - if it is true, then it appears in menu +*/ void QtxMainWindow::setAppropriate( QDockWindow* dw, bool a ) { QMainWindow::setAppropriate( dw, myStatusBar != dw && myMenuBar != dw && a ); } +/*! + Sets up layout +*/ void QtxMainWindow::setUpLayout() { QMainWindow::setUpLayout(); @@ -317,6 +376,9 @@ void QtxMainWindow::setUpLayout() layout()->setMenuBar( 0 ); } +/*! + SLOT: called on object destroyed, clears internal fields in case of deletion of menu bar or status bar +*/ void QtxMainWindow::onDestroyed( QObject* obj ) { QObject* o = 0; @@ -338,6 +400,10 @@ void QtxMainWindow::onDestroyed( QObject* obj ) } } +/*! + \return flag of window state by it's name + \param str - name of flag +*/ int QtxMainWindow::windowState( const QString& str ) const { static QMap winStateMap; @@ -363,6 +429,10 @@ int QtxMainWindow::windowState( const QString& str ) const return res; } +/*! + \return flag of position by it's name + \param str - name of position +*/ int QtxMainWindow::windowPosition( const QString& str ) const { static QMap winPosMap; diff --git a/src/Qtx/QtxMenuButton.cxx b/src/Qtx/QtxMenuButton.cxx index 88bfc1061..ef4ac5253 100755 --- a/src/Qtx/QtxMenuButton.cxx +++ b/src/Qtx/QtxMenuButton.cxx @@ -39,6 +39,11 @@ private: QtxMenuButton* myMenuButton; }; +/*! + Sets the widget's minimum size + \param w - width + \param h - height +*/ void QtxMenuButton::PopupMenu::setMinimumSize( int w, int h ) { if ( myMenuButton->isAlignWidth() && @@ -49,6 +54,12 @@ void QtxMenuButton::PopupMenu::setMinimumSize( int w, int h ) } +/*! + Constructor + \param pos - position + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( int pos, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( pos ) @@ -56,6 +67,12 @@ myPos( pos ) initialize(); } +/*! + Constructor + \param text - button text + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( const QString& text, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( Bottom ) @@ -64,6 +81,13 @@ myPos( Bottom ) initialize(); } +/*! + Constructor + \param pos - position + \param text - button text + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( int pos, const QString& text, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( pos ) @@ -72,6 +96,11 @@ myPos( pos ) initialize(); } +/*! + Constructor + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( Bottom ) @@ -79,10 +108,16 @@ myPos( Bottom ) initialize(); } +/*! + Destructor +*/ QtxMenuButton::~QtxMenuButton() { } +/*! + Initialization +*/ void QtxMenuButton::initialize() { myArrow = true; @@ -96,21 +131,34 @@ void QtxMenuButton::initialize() connect( this, SIGNAL( clicked() ), this, SLOT( onShowPopup() ) ); } +/*! + \return position +*/ int QtxMenuButton::position() const { return myPos; } +/*! + \return true if align is enabled +*/ bool QtxMenuButton::isAlignWidth() const { return myAlign; } +/*! + \return true if arrow is shown +*/ bool QtxMenuButton::isArrowEnabled() const { return myArrow; } +/*! + Changes position + \param pos - new position +*/ void QtxMenuButton::setPosition( const int pos ) { if ( myPos == pos ) @@ -121,6 +169,10 @@ void QtxMenuButton::setPosition( const int pos ) onShowPopup(); } +/*! + Changes align state + \param on - new align state +*/ void QtxMenuButton::setAlignWidth( const bool on ) { if ( myAlign == on ) @@ -130,6 +182,10 @@ void QtxMenuButton::setAlignWidth( const bool on ) updateGeometry(); } +/*! + Enables/disable arrow + \param on - new enabled state +*/ void QtxMenuButton::setArrowEnabled( const bool on ) { if ( myArrow == on ) @@ -139,6 +195,9 @@ void QtxMenuButton::setArrowEnabled( const bool on ) repaint(); } +/*! + Clears popup +*/ void QtxMenuButton::clear() { if ( myPopup ) @@ -147,13 +206,21 @@ void QtxMenuButton::clear() updateGeometry(); } +/*! + Removes item from popup + \param id - item id +*/ void QtxMenuButton::removeItem( int id ) { if ( myPopup ) - removeItem( id ); + myPopup->removeItem( id ); updateGeometry(); } +/*! + Inserts separator into popup + \param id - position +*/ int QtxMenuButton::insertSeparator( int id ) { int res = -1; @@ -162,6 +229,12 @@ int QtxMenuButton::insertSeparator( int id ) return res; } +/*! + Inserts item into popup + \param t - menu text + \param id - item id + \param index - position +*/ int QtxMenuButton::insertItem( const QString& t, int id, int index ) { int resId = -1; @@ -174,6 +247,13 @@ int QtxMenuButton::insertItem( const QString& t, int id, int index ) return resId; } +/*! + Inserts item into popup + \param is - icons + \param t - menu text + \param id - item id + \param index - position +*/ int QtxMenuButton::insertItem( const QIconSet& is, const QString& t, int id, int index ) { int resId = -1; @@ -186,6 +266,9 @@ int QtxMenuButton::insertItem( const QIconSet& is, const QString& t, int id, int return resId; } +/*! + SLOT: calls when button is clicked, shows popup +*/ void QtxMenuButton::onShowPopup() { if ( !myPopup || !myPopup->count() ) @@ -224,6 +307,9 @@ void QtxMenuButton::onShowPopup() myPopup->exec( QPoint( x, y ) ); } +/*! + Custom event handler +*/ bool QtxMenuButton::event( QEvent* e ) { if ( e->type() == QEvent::MouseButtonPress || @@ -237,6 +323,9 @@ bool QtxMenuButton::event( QEvent* e ) return QPushButton::event( e ); } +/*! + \return the recommended size for the widget +*/ QSize QtxMenuButton::sizeHint() const { QSize sz = QPushButton::sizeHint(); @@ -246,6 +335,9 @@ QSize QtxMenuButton::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxMenuButton::minimumSizeHint() const { QSize sz = QPushButton::minimumSizeHint(); @@ -255,6 +347,9 @@ QSize QtxMenuButton::minimumSizeHint() const return sz; } +/*! + Custom resize event handler +*/ void QtxMenuButton::resizeEvent( QResizeEvent* re ) { if ( re ) @@ -264,11 +359,17 @@ void QtxMenuButton::resizeEvent( QResizeEvent* re ) myPopup->setMinimumWidth( re ? re->size().width() : width() ); } +/*! + \return corresponding popup +*/ QPopupMenu* QtxMenuButton::popup() const { return myPopup; } +/*! + Draws label +*/ void QtxMenuButton::drawButtonLabel( QPainter* p ) { QPushButton::drawButtonLabel( p ); diff --git a/src/Qtx/QtxOperations.cxx b/src/Qtx/QtxOperations.cxx index 0034d41e4..5e4517428 100644 --- a/src/Qtx/QtxOperations.cxx +++ b/src/Qtx/QtxOperations.cxx @@ -19,26 +19,23 @@ #include "QtxOperations.h" -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxOperations::QtxOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxOperations::~QtxOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates QtxValue by it's string representation +*/ bool QtxOperations::createValue( const QString& str, QtxValue& v ) const { v = str; diff --git a/src/Qtx/QtxOperations.h b/src/Qtx/QtxOperations.h index 9dae0b336..a4a8524a9 100644 --- a/src/Qtx/QtxOperations.h +++ b/src/Qtx/QtxOperations.h @@ -25,10 +25,6 @@ #include "Qtx.h" #include "QtxParser.h" -//================================================================ -// Class : -// Purpose : -//================================================================ class QTX_EXPORT QtxOperations { public: diff --git a/src/Qtx/QtxParser.cxx b/src/Qtx/QtxParser.cxx index 105ddb7a5..b71f26bed 100644 --- a/src/Qtx/QtxParser.cxx +++ b/src/Qtx/QtxParser.cxx @@ -20,12 +20,10 @@ #include "QtxParser.h" #include "QtxOperations.h" -//================================================================ -// Function : -// Purpose : -//================================================================ -QtxParser::QtxParser( QtxOperations* operations, - const QString& expr ) +/*! + Constructor +*/ +QtxParser::QtxParser( QtxOperations* operations, const QString& expr ) : myOperations( operations ) { if( myOperations ) @@ -37,18 +35,22 @@ QtxParser::QtxParser( QtxOperations* operations, setLastError( OperationsNull ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxParser::~QtxParser() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Search elements of list as substrings starting on 'offset' + \returns the least position of substrings inside string + \param list - list of substrings + \param str - string where search + \param offset - starting index for search + \param matchLen - the length of appropriate substring + \param listind - list index of appropriate substring +*/ int QtxParser::search( const QStringList& list, const QString& str, int offset, int& matchLen, int& listind ) { @@ -71,19 +73,22 @@ int QtxParser::search( const QStringList& list, const QString& str, int offset, return min; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return substring + \param str - string + \param pos - start position of substring + \param len - length of substring +*/ QString QtxParser::note( const QString& str, int pos, int len ) { return str.mid( pos, len ).stripWhiteSpace(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + First step of parsing: finding tokens, determining its types and creating of unsorted pseudo-postfix (with brackets) + \param expr - string expression + \param post - postfix to be created +*/ bool QtxParser::prepare( const QString& expr, Postfix& post ) { int pos = 0, len = expr.length(); @@ -225,10 +230,10 @@ bool QtxParser::prepare( const QString& expr, Postfix& post ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Second step of parsing: determining types of operations + \param post - unsorted postfix +*/ bool QtxParser::setOperationTypes( Postfix& post ) { Postfix::iterator aStart = post.begin(), @@ -279,10 +284,12 @@ bool QtxParser::setOperationTypes( Postfix& post ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return how many global brackets there is (for example '((2+3))' has 2 global brackets) + \param post - postfix to be checked + \param f - start index to search + \param l - last index to search +*/ int QtxParser::globalBrackets( const QtxParser::Postfix& post, int f, int l ) { int i, @@ -317,10 +324,15 @@ int QtxParser::globalBrackets( const QtxParser::Postfix& post, int f, int l ) return br+min_br_num; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Third step of parsing: sorting of postfix in order to convert it to real postfix + \param post - source postfix + \param res - destination postfix + \param anOpen - list of open brackets + \param aClose - list of close brackets + \param f - start index of postfix to sorting + \param l - last index of postfix to sorting +*/ bool QtxParser::sort( const Postfix& post, Postfix& res, const QStringList& anOpen, const QStringList& aClose, @@ -478,10 +490,10 @@ bool QtxParser::sort( const Postfix& post, Postfix& res, return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Build posfix by expression + \param expr - string expression +*/ bool QtxParser::parse( const QString& expr ) { myPost.clear(); @@ -506,10 +518,12 @@ bool QtxParser::parse( const QString& expr ) sort( p, myPost, opens, closes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculate operation + \param op - operation name + \param v1 - first argument (it is not valid for unary prefix operations and it is used to store result) + \param v2 - second argument (it is not valid for unary postfix operations) +*/ bool QtxParser::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) { Error err = myOperations->isValid( op, v1.type(), v2.type() ); @@ -521,10 +535,10 @@ bool QtxParser::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates expression without postfix rebuilding + \return QtxValue as result (it is invalid if there were errors during calculation) +*/ QtxValue QtxParser::calculate() { setLastError( OK ); @@ -639,47 +653,47 @@ QtxValue QtxParser::calculate() return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Change expression, rebuild postfix and calculate it + \return QtxValue as result (it is invalid if there were errors during calculation) +*/ QtxValue QtxParser::calculate( const QString& expr ) { setExpr( expr ); return calculate(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Change expression and rebuild postfix +*/ bool QtxParser::setExpr( const QString& expr ) { return parse( expr ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true, if parser contain parameter + \param name - name of parameter +*/ bool QtxParser::has( const QString& name ) const { return myParameters.contains( name.stripWhiteSpace() ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets parameter value + \param name - name of parameter + \param value - value of parameter +*/ void QtxParser::set( const QString& name, const QtxValue& value ) { myParameters[ name.stripWhiteSpace() ] = value; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes parameter + \param name - name of parameter +*/ bool QtxParser::remove( const QString& name ) { QString sname = name.stripWhiteSpace(); @@ -689,10 +703,10 @@ bool QtxParser::remove( const QString& name ) return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return value of parameter (result is invalid if there is no such parameter) + \param name - name of parameter +*/ QtxValue QtxParser::value( const QString& name ) const { QString sname = name.stripWhiteSpace(); @@ -702,10 +716,11 @@ QtxValue QtxParser::value( const QString& name ) const return QtxValue(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Searches first parameter with assigned invalid QtxValue + \return true if it is found + \param name - variable to return name of parameter +*/ bool QtxParser::firstInvalid( QString& name ) const { QMap< QString, QtxValue >::const_iterator anIt = myParameters.begin(), @@ -719,10 +734,9 @@ bool QtxParser::firstInvalid( QString& name ) const return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes all parameters with assigned invalid QtxValues +*/ void QtxParser::removeInvalids() { QStringList toDelete; @@ -738,37 +752,34 @@ void QtxParser::removeInvalids() myParameters.remove( *aLIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return last error occured during parsing +*/ QtxParser::Error QtxParser::lastError() const { return myLastError; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets last error occured during parsing (for internal using only) +*/ void QtxParser::setLastError( QtxParser::Error err ) { myLastError = err; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string dump of internal parser postfix +*/ QString QtxParser::dump() const { return dump( myPost ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string dump of postfix + \param post - postfix to be dumped +*/ QString QtxParser::dump( const Postfix& post ) const { QString res; @@ -798,10 +809,10 @@ QString QtxParser::dump( const Postfix& post ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with names of parameters + \param list - list to be filled +*/ void QtxParser::paramsList( QStringList& list ) { PostfixIterator anIt = myPost.begin(), @@ -815,19 +826,18 @@ void QtxParser::paramsList( QStringList& list ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes all parameters +*/ void QtxParser::clear() { myParameters.clear(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string representation for list of QtxValues + \param list - list to be converted +*/ QString QtxParser::toString( const QValueList< QtxValue >& list ) { QValueList< QtxValue >::const_iterator anIt = list.begin(), diff --git a/src/Qtx/QtxParser.h b/src/Qtx/QtxParser.h index 737fc96ce..25b5f5511 100644 --- a/src/Qtx/QtxParser.h +++ b/src/Qtx/QtxParser.h @@ -33,21 +33,44 @@ class QtxOperations; +/*! \var QtxValue + \brief Alias for QVariant +*/ typedef QVariant QtxValue; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxParser + + This class allows to calculate values of expressions using different set of operations. + It is provided some of standard set of operations (arithmetics, logic, strings, etc - in QtxStdOperations.h). + This parser allows to use parameters with help of methods has(), set(), remove(), value(). It uses + postfix representation of expressions and uses class QtxOperations in order to make certain operation + Every instance of parser contains only one postfix, so that if expression has been changed, then postfix + must be rebuilt. In order to increase performance of frequent calculation for many of expressions it is + recommended to use different instances of parser for expressions + +*/ class QTX_EXPORT QtxParser { public: + /*! + \enum Error + \brief Errors during parsing + */ typedef enum { - OK, OperandsNotMatch, InvalidResult, InvalidOperation, - OperationsNull, InvalidToken, CloseExpected, ExcessClose, - BracketsNotMatch, StackUnderflow, ExcessData + OK, /*! \var All right */ + OperandsNotMatch, /*! \var Types of arguments are invalid for this operation */ + InvalidResult, /*! \var Operation cannot find result (for example, division by zero) */ + InvalidOperation, /*! \var Name of operation is unknown */ + OperationsNull, /*! \var Internal operations pointer of parser is null */ + InvalidToken, /*! \var It isn't operation, parameter of value */ + CloseExpected, /*! \var Close bracket is expected */ + ExcessClose, /*! \var The one of close bracket is excess */ + BracketsNotMatch, /*! \var Last open and this close bracket are different, for example [) */ + StackUnderflow, /*! \var There is no arguments in stack for operation */ + ExcessData /*! \var The parsing is finished, but there is more then one value in stack */ } Error; @@ -74,8 +97,23 @@ public: static QString toString( const QValueList< QtxValue >& ); protected: - typedef enum { Value, Param, Open, Close, Pre, Post, Binary } PostfixItemType; + /*! + \enum PostfixItemType + \brief Types of postfix representation elements + */ + typedef enum + { + Value, /*! \var Value (number, string, etc.)*/ + Param, /*! \var Parameter */ + Open, /*! \var Open bracket */ + Close, /*! \var Close bracket */ + Pre, /*! \var Unary prefix operation */ + Post, /*! \var Unary postfix operation */ + Binary /*! \var Binary operation */ + + } PostfixItemType; + /*! \var postfix representation element */ typedef struct { QtxValue myValue; @@ -83,7 +121,10 @@ protected: } PostfixItem; + /*! \var postfix representation */ typedef QValueList< PostfixItem > Postfix; + + /*! \var postfix representation iterator */ typedef Postfix::const_iterator PostfixIterator; protected: @@ -105,6 +146,7 @@ protected: static int globalBrackets( const Postfix&, int, int ); private: + /*! \var stack of QtxValues */ typedef QValueStack < QtxValue > QtxValueStack; private: diff --git a/src/Qtx/QtxPathDialog.cxx b/src/Qtx/QtxPathDialog.cxx index 55df5d781..260c1d090 100755 --- a/src/Qtx/QtxPathDialog.cxx +++ b/src/Qtx/QtxPathDialog.cxx @@ -60,11 +60,9 @@ static const char* open_icon[] = { " " }; -//================================================================ -// Function : QtxPathDialog -// Purpose : Constructor. -//================================================================ - +/*! + Constructor. +*/ QtxPathDialog::QtxPathDialog( const bool import, QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f ) : QtxDialog( parent, 0, modal, resize, buttons, f ), myDefault( -1 ), @@ -85,11 +83,9 @@ myOptionsFrame( 0 ) setFocusProxy( le ); } -//================================================================ -// Function : QtxPathDialog -// Purpose : Constructor. -//================================================================ - +/*! + Constructor. +*/ QtxPathDialog::QtxPathDialog( QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f ) : QtxDialog( parent, 0, modal, resize, buttons, f ), myDefault( -1 ), @@ -99,60 +95,51 @@ myOptionsFrame( 0 ) initialize(); } -//================================================================ -// Function : ~QtxPathDialog -// Purpose : Destructor. -//================================================================ - +/*! + Destructor. +*/ QtxPathDialog::~QtxPathDialog() { } -//================================================================ -// Function : fileName -// Purpose : -//================================================================ - +/*! + \return file name +*/ QString QtxPathDialog::fileName() const { return fileName( defaultEntry() ); } -//================================================================ -// Function : setFileName -// Purpose : -//================================================================ - +/*! + Sets file name + \param txt - new file name + \param autoExtension - auto extension determination by file +*/ void QtxPathDialog::setFileName( const QString& txt, const bool autoExtension ) { setFileName( defaultEntry(), txt, autoExtension ); } -//================================================================ -// Function : filter -// Purpose : -//================================================================ - +/*! + \return filter +*/ QString QtxPathDialog::filter() const { return myFilter; } -//================================================================ -// Function : setFilter -// Purpose : -//================================================================ - +/*! + Changes filter (filter is a list of masks, separated by ';;') + \param fltr - new filter +*/ void QtxPathDialog::setFilter( const QString& fltr ) { myFilter = fltr; } -//================================================================ -// Function : show -// Purpose : -//================================================================ - +/*! + Shows path dialog +*/ void QtxPathDialog::show() { if ( hasVisibleChildren( myEntriesFrame ) ) @@ -168,11 +155,9 @@ void QtxPathDialog::show() QtxDialog::show(); } -//================================================================ -// Function : onBrowse -// Purpose : -//================================================================ - +/*! + SLOT: called if user click button to show standard file dialog +*/ void QtxPathDialog::onBrowse() { const QObject* obj = sender(); @@ -247,11 +232,9 @@ void QtxPathDialog::onBrowse() emit fileNameChanged( fName ); } -//================================================================ -// Function : onReturnPressed -// Purpose : -//================================================================ - +/*! + SLOT: called if user presses RETURN in line edit +*/ void QtxPathDialog::onReturnPressed() { const QObject* obj = sender(); @@ -270,31 +253,25 @@ void QtxPathDialog::onReturnPressed() emit fileNameChanged( fileName() ); } -//================================================================ -// Function : onTextChanged -// Purpose : -//================================================================ - +/*! + SLOT: called if text in line edit is changed +*/ void QtxPathDialog::onTextChanged( const QString& ) { validate(); } -//================================================================ -// Function : validate -// Purpose : -//================================================================ - +/*! + Checks validity of text and according to it enables/disables OK, Yes buttons +*/ void QtxPathDialog::validate() { setButtonEnabled( isValid(), OK | Yes ); } -//================================================================ -// Function : isValid -// Purpose : -//================================================================ - +/*! + \return true if selected file is valid +*/ bool QtxPathDialog::isValid() { bool ok = true; @@ -305,11 +282,9 @@ bool QtxPathDialog::isValid() return ok; } -//================================================================ -// Function : acceptData -// Purpose : -//================================================================ - +/*! + \return true entered data is accepted +*/ bool QtxPathDialog::acceptData() const { bool ok = true; @@ -383,30 +358,25 @@ bool QtxPathDialog::acceptData() const return ok; } -//================================================================ -// Function : fileNameChanged -// Purpose : -//================================================================ - +/*! + Some custom activity on file name changing (must be redefined, default implementation is empty +*/ void QtxPathDialog::fileNameChanged( int, QString ) { } -//================================================================ -// Function : optionsFrame -// Purpose : -//================================================================ - +/*! + \return frame with options +*/ QFrame* QtxPathDialog::optionsFrame() { return myOptionsFrame; } -//================================================================ -// Function : getFileName -// Purpose : -//================================================================ - +/*! + \return file name + \param id - id of file entry +*/ QString QtxPathDialog::fileName( const int id ) const { QString res; @@ -416,11 +386,12 @@ QString QtxPathDialog::fileName( const int id ) const return res; } -//================================================================ -// Function : setFileName -// Purpose : -//================================================================ - +/*! + Change file name of file entry + \param id - id of file entry + \param txt - new file name + \param autoExt - assign extension automatically +*/ void QtxPathDialog::setFileName( const int id, const QString& txt, const bool autoExt ) { int mode; @@ -435,11 +406,10 @@ void QtxPathDialog::setFileName( const int id, const QString& txt, const bool au } } -//================================================================ -// Function : fileEntry -// Purpose : -//================================================================ - +/*! + \return line edit of file entry + \param id - id of file entry +*/ QLineEdit* QtxPathDialog::fileEntry( const int id ) const { QLineEdit* le = 0; @@ -449,11 +419,11 @@ QLineEdit* QtxPathDialog::fileEntry( const int id ) const return le; } -//================================================================ -// Function : fileEntry -// Purpose : -//================================================================ - +/*! + \return line edit and mode of file entry + \param id - id of file entry + \param theMode - for return mode of file entry +*/ QLineEdit* QtxPathDialog::fileEntry( const int theId, int& theMode ) const { QLineEdit* le = 0; @@ -466,11 +436,13 @@ QLineEdit* QtxPathDialog::fileEntry( const int theId, int& theMode ) const return le; } -//================================================================ -// Function : createFileEntry -// Purpose : -//================================================================ - +/*! + Creates file entry + \return id of just created file entry + \param lab - title of entry + \param mode - mode of entry + \param id - proposed id (if it is -1, then id will be chosen automatically) +*/ int QtxPathDialog::createFileEntry( const QString& lab, const int mode, const int id ) { int num = id; @@ -500,31 +472,26 @@ int QtxPathDialog::createFileEntry( const QString& lab, const int mode, const in return num; } -//================================================================ -// Function : defaultEntry -// Purpose : -//================================================================ - +/*! + \return id of default entry +*/ int QtxPathDialog::defaultEntry() const { return myDefault; } -//================================================================ -// Function : setDefaultEntry -// Purpose : -//================================================================ - +/*! + Change default entry id + \param id - new default entry id +*/ void QtxPathDialog::setDefaultEntry( const int id ) { myDefault = id; } -//================================================================ -// Function : initialize -// Purpose : -//================================================================ - +/*! + Initialize dialog layout +*/ void QtxPathDialog::initialize() { setCaption( tr( "File dialog" ) ); @@ -539,11 +506,9 @@ void QtxPathDialog::initialize() myOptionsFrame = new QFrame( mainGroup ); } -//================================================================ -// Function : prepareFilters -// Purpose : -//================================================================ - +/*! + \return list of filters +*/ QStringList QtxPathDialog::prepareFilters() const { QStringList res; @@ -564,11 +529,9 @@ QStringList QtxPathDialog::prepareFilters() const return res; } -//================================================================ -// Function : filterWildCards -// Purpose : -//================================================================ - +/*! + \return list of filters with filtered wild cards +*/ QStringList QtxPathDialog::filterWildCards( const QString& theFilter ) const { QStringList res; @@ -586,11 +549,11 @@ QStringList QtxPathDialog::filterWildCards( const QString& theFilter ) const return res; } -//================================================================ -// Function : autoExtension -// Purpose : -//================================================================ - +/*! + \return file name with assigned extension + \param theFileName - source file name + \param theFilter - list of filters +*/ QString QtxPathDialog::autoExtension( const QString& theFileName, const QString& theFilter ) const { QString fName = theFileName; @@ -620,11 +583,10 @@ QString QtxPathDialog::autoExtension( const QString& theFileName, const QString& return fName; } -//================================================================ -// Function : hasVisibleChildren -// Purpose : -//================================================================ - +/*! + \return true if widget has visible children + \param wid - widget +*/ bool QtxPathDialog::hasVisibleChildren( QWidget* wid ) const { bool res = false; diff --git a/src/Qtx/QtxPopupMenu.cxx b/src/Qtx/QtxPopupMenu.cxx index 5da53d034..f46537eac 100644 --- a/src/Qtx/QtxPopupMenu.cxx +++ b/src/Qtx/QtxPopupMenu.cxx @@ -45,6 +45,9 @@ private: int myAlign; }; +/*! + Constructor +*/ QtxPopupMenu::TitleMenuItem::TitleMenuItem( const QString& txt, const QIconSet& ico, const int align ) : QCustomMenuItem(), myText( txt ), @@ -53,26 +56,42 @@ myAlign( align ) { } +/*! + Destructor +*/ QtxPopupMenu::TitleMenuItem::~TitleMenuItem() { } +/*! + \return TRUE if this item wants to span the entire popup menu width +*/ bool QtxPopupMenu::TitleMenuItem::fullSpan() const { return true; } +/*! + \return TRUE if this item is just a separator +*/ bool QtxPopupMenu::TitleMenuItem::isSeparator() const { return false; } +/*! + Changes font of item + \param font - new font +*/ void QtxPopupMenu::TitleMenuItem::setFont( const QFont& font ) { myFont = font; myFont.setBold( true ); } +/*! + Draws item +*/ void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg, bool act, bool enabled, int x, int y, int w, int h ) { @@ -119,6 +138,9 @@ void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg, p->setFont( f ); } +/*! + \return the recommended size for item +*/ QSize QtxPopupMenu::TitleMenuItem::sizeHint() { QFontMetrics fM( myFont ); @@ -132,10 +154,8 @@ QSize QtxPopupMenu::TitleMenuItem::sizeHint() } /*! - Class: QtxPopupMenu [Public] - Descr: Popup menu item with title. + Constructor */ - QtxPopupMenu::QtxPopupMenu( QWidget* parent, const char* name ) : QPopupMenu( parent, name ), myId( -1 ), @@ -144,30 +164,49 @@ myAlign( AlignCenter ) { } +/*! + Destructor +*/ QtxPopupMenu::~QtxPopupMenu() { } +/*! + \return popup menu title +*/ QString QtxPopupMenu::titleText() const { return myText; } +/*! + \return popup menu icon +*/ QIconSet QtxPopupMenu::titleIcon() const { return myIcon; } +/*! + \return popup menu title policy +*/ int QtxPopupMenu::titlePolicy() const { return myPolicy; } +/*! + \return popup menu title alignment +*/ int QtxPopupMenu::titleAlignment() const { return myAlign; } +/*! + Changes title text + \param txt - new text +*/ void QtxPopupMenu::setTitleText( const QString& txt ) { if ( myText == txt ) @@ -178,6 +217,10 @@ void QtxPopupMenu::setTitleText( const QString& txt ) updateTitle(); } +/*! + Changes title icon + \param icon - new icon +*/ void QtxPopupMenu::setTitleIcon( const QIconSet& ico ) { myIcon = ico; @@ -185,6 +228,10 @@ void QtxPopupMenu::setTitleIcon( const QIconSet& ico ) updateTitle(); } +/*! + Changes title policy + \param p - new policy +*/ void QtxPopupMenu::setTitlePolicy( const int p ) { if ( myPolicy == p ) @@ -195,6 +242,10 @@ void QtxPopupMenu::setTitlePolicy( const int p ) updateTitle(); } +/*! + Changes title alignment + \param a - new alignment +*/ void QtxPopupMenu::setTitleAlignment( const int a ) { if ( myAlign == a ) @@ -205,6 +256,9 @@ void QtxPopupMenu::setTitleAlignment( const int a ) updateTitle(); } +/*! + Shows menu +*/ void QtxPopupMenu::show() { insertTitle(); @@ -212,6 +266,9 @@ void QtxPopupMenu::show() QPopupMenu::show(); } +/*! + Hides menu +*/ void QtxPopupMenu::hide() { QPopupMenu::hide(); @@ -219,12 +276,21 @@ void QtxPopupMenu::hide() removeTitle(); } +/*! + Creates title item + \param txt - item text + \param icon - item icon + \param align - item alignment +*/ QtxPopupMenu::TitleMenuItem* QtxPopupMenu::createTitleItem( const QString& txt, const QIconSet& ico, const int align ) const { return new TitleMenuItem( txt, ico, align ); } +/*! + Inserts title item to popup menu +*/ void QtxPopupMenu::insertTitle() { if ( myId != -1 || titlePolicy() == TitleOff || @@ -237,6 +303,9 @@ void QtxPopupMenu::insertTitle() setItemEnabled( myId, false ); } +/*! + Removes title item from popup menu +*/ void QtxPopupMenu::removeTitle() { if ( myId == -1 ) @@ -246,6 +315,9 @@ void QtxPopupMenu::removeTitle() myId = -1; } +/*! + Updates title item +*/ void QtxPopupMenu::updateTitle() { if ( myId != -1 ) diff --git a/src/Qtx/QtxPopupMgr.cxx b/src/Qtx/QtxPopupMgr.cxx index f01716c16..37d0cbbc1 100644 --- a/src/Qtx/QtxPopupMgr.cxx +++ b/src/Qtx/QtxPopupMgr.cxx @@ -25,10 +25,13 @@ #include #include -//================================================================ -// Function : -// Purpose : -//================================================================ + +/*! + \return value of global parameter (depending on whole selection, but not dependending on one object of selection) + \param str - name of parameter + + By default, it returns count of selected objects ("selcount") and list of parameters ("$") +*/ QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const { if( str==selCountParam() ) @@ -54,37 +57,33 @@ QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const return QtxValue(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return symbole to detect name of parameter list +*/ QChar QtxPopupMgr::Selection::equality() const { return defEquality(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return name of parameter for count of selected objects +*/ QString QtxPopupMgr::Selection::selCountParam() const { return defSelCountParam(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return default symbole to detect name of parameter list +*/ QChar QtxPopupMgr::Selection::defEquality() { return '$'; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return default name of parameter for count of selected objects +*/ QString QtxPopupMgr::Selection::defSelCountParam() { return "selcount"; @@ -92,12 +91,15 @@ QString QtxPopupMgr::Selection::defSelCountParam() +/*! + \class QtxCacheSelection + Special selection class, that caches parameter values. + Every parameter during popup building is calculated only one time, + although it may be included to many rules. After calculation + it is stored in internal map +*/ -//================================================================ -// Class : -// Purpose : -//================================================================ class QtxCacheSelection : public QtxPopupMgr::Selection { public: @@ -115,36 +117,37 @@ private: CacheMap myParamCache; }; -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param sel - base selection used for parameter calculation +*/ QtxCacheSelection::QtxCacheSelection( QtxPopupMgr::Selection* sel ) : mySel( sel ) { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxCacheSelection::~QtxCacheSelection() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return count of selected objects +*/ int QtxCacheSelection::count() const { return mySel ? mySel->count() : 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates and caches parameters. + Already calculated parameters are returned without calculation + \return parameter value + \param i - index of selected object + \param name - name of parameter +*/ QtxValue QtxCacheSelection::param( const int i, const QString& name ) const { QString param_name = name + "#####" + QString::number( i ); @@ -161,10 +164,12 @@ QtxValue QtxCacheSelection::param( const int i, const QString& name ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates and caches global parameters. + Already calculated parameters are returned without calculation + \return parameter value + \param name - name of parameter +*/ QtxValue QtxCacheSelection::globalParam( const QString& name ) const { if( myParamCache.contains( name ) ) @@ -183,11 +188,10 @@ QtxValue QtxCacheSelection::globalParam( const QString& name ) const - -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param mgr - popup manager +*/ QtxPopupMgr::Operations::Operations( QtxPopupMgr* mgr ) : QtxStrings(), myPopupMgr( mgr ) @@ -201,19 +205,19 @@ QtxPopupMgr::Operations::Operations( QtxPopupMgr* mgr ) myParser = new QtxParser( mgr->myOperations ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor + Deletes internal parser +*/ QtxPopupMgr::Operations::~Operations() { delete myParser; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of popup operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxPopupMgr::Operations::prior( const QString& op, bool isBin ) const { if( !isBin && ( op=="every" || op=="any" || op=="onlyone" ) ) @@ -223,10 +227,13 @@ int QtxPopupMgr::Operations::prior( const QString& op, bool isBin ) const } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxPopupMgr::Operations::calculate ( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -299,10 +306,9 @@ QtxParser::Error QtxPopupMgr::Operations::calculate return QtxStrings::calculate( op, v1, v2 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Clears internal map of values +*/ void QtxPopupMgr::Operations::clear() { myValues.clear(); @@ -315,11 +321,9 @@ void QtxPopupMgr::Operations::clear() - -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor +*/ QtxPopupMgr::QtxPopupMgr( QPopupMenu* popup, QObject* parent ) : QtxActionMenuMgr( popup, parent ), myCurrentSelection( 0 ) @@ -327,18 +331,16 @@ QtxPopupMgr::QtxPopupMgr( QPopupMenu* popup, QObject* parent ) createOperations(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxPopupMgr::~QtxPopupMgr() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates popup operations instance +*/ void QtxPopupMgr::createOperations() { myOperations = new QtxListOfOperations; @@ -349,10 +351,13 @@ void QtxPopupMgr::createOperations() myOperations->append( "custom", new Operations( this ), 200 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Additional version of registerAction + \param act - action to be registered + \param visible - rule for visibility state + \param toggle - rule for toggle on state + \param id - proposed id (if it is less than 0, then id will be generated automatically) +*/ int QtxPopupMgr::registerAction( QAction* act, const QString& visible, const QString& toggle, @@ -364,10 +369,10 @@ int QtxPopupMgr::registerAction( QAction* act, return _id; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes action from internal map + \param id - action id +*/ void QtxPopupMgr::unRegisterAction( const int id ) { QAction* act = action( id ); @@ -379,28 +384,32 @@ void QtxPopupMgr::unRegisterAction( const int id ) //QtxActionMenuMgr::unRegisterAction( id ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if manager has rule for action + \param act - action + \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle" +*/ bool QtxPopupMgr::hasRule( QAction* act, bool visibility ) const { return map( visibility ).contains( act ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if manager has rule for action + \param id - action id + \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle" +*/ bool QtxPopupMgr::hasRule( const int id, bool visibility ) const { return hasRule( action( id ), visibility ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets new rule for action + \param act - action + \param rule - string expression of rule + \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle" +*/ void QtxPopupMgr::setRule( QAction* act, const QString& rule, bool visibility ) { if( !act || rule.isEmpty() ) @@ -423,19 +432,21 @@ void QtxPopupMgr::setRule( QAction* act, const QString& rule, bool visibility ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets new rule for action + \param id - action id + \param rule - string expression of rule + \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle" +*/ void QtxPopupMgr::setRule( const int id, const QString& rule, bool visibility ) { setRule( action( id ), rule, visibility ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if parser has finished work without errors + \param p - parser +*/ bool result( QtxParser* p ) { bool res = false; @@ -449,10 +460,11 @@ bool result( QtxParser* p ) return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills parser parameters with help of Selection::globalParam() method + \param p - parser + \param specific - list will be filled with names of parameters depending on selection objects (not global) +*/ void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const { if( !p || !myCurrentSelection ) @@ -473,6 +485,10 @@ void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const } } +/*! + \return true if 'v1'<'v2' + This function can work with many types of values +*/ bool operator<( const QtxValue& v1, const QtxValue& v2 ) { QVariant::Type t1 = v1.type(), t2 = v2.type(); @@ -512,10 +528,11 @@ bool operator<( const QtxValue& v1, const QtxValue& v2 ) return t1menuText(); @@ -580,10 +597,11 @@ bool QtxPopupMgr::isSatisfied( QAction* act, bool visibility ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if item corresponding to action is visible + \param actId - action id + \param place - index of place +*/ bool QtxPopupMgr::isVisible( const int actId, const int place ) const { bool res = QtxActionMenuMgr::isVisible( actId, place ); @@ -593,10 +611,11 @@ bool QtxPopupMgr::isVisible( const int actId, const int place ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Updates popup according to selection + \param p - popup menu + \param sel - selection +*/ void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel ) { QTime t1 = QTime::currentTime(); @@ -620,19 +639,21 @@ void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel ) delete myCurrentSelection; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return reference to map of rules + \param visibility - type of map: visibility of toggle +*/ QtxPopupMgr::RulesMap& QtxPopupMgr::map( bool visibility ) const { return ( RulesMap& )( visibility ? myVisibility : myToggle ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Loads actions description from file + \param fname - name of file + \param r - reader of file + \return true on success +*/ bool QtxPopupMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { PopupCreator cr( &r, this ); @@ -642,10 +663,11 @@ bool QtxPopupMgr::load( const QString& fname, QtxActionMgr::Reader& r ) -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param r - menu reader + \param mgr - menu manager +*/ QtxPopupMgr::PopupCreator::PopupCreator( QtxActionMgr::Reader* r, QtxPopupMgr* mgr ) : QtxActionMgr::Creator( r ), @@ -653,18 +675,20 @@ QtxPopupMgr::PopupCreator::PopupCreator( QtxActionMgr::Reader* r, { } -//================================================================ -// Function : -// Purpose : -//================================================================ -QtxPopupMgr::PopupCreator::~PopupCreator() +/*! + Destructor +*/QtxPopupMgr::PopupCreator::~PopupCreator() { } -//================================================================ -// Function : -// Purpose : -//================================================================ + +/*! + Appends new menu items + \param tag - tag of item + \param subMenu - it has submenu + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxPopupMgr::PopupCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int pId ) { @@ -716,19 +740,19 @@ int QtxPopupMgr::PopupCreator::append( const QString& tag, const bool subMenu, return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return visibility rule by attributes + Default implementation is empty +*/ QString QtxPopupMgr::PopupCreator::visibleRule( const ItemAttributes& ) const { return QString::null; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return toggle rule by attributes + Default implementation is empty +*/ QString QtxPopupMgr::PopupCreator::toggleRule( const ItemAttributes& ) const { return QString::null; diff --git a/src/Qtx/QtxPopupMgr.h b/src/Qtx/QtxPopupMgr.h index a75a7dced..7e8d2ff13 100644 --- a/src/Qtx/QtxPopupMgr.h +++ b/src/Qtx/QtxPopupMgr.h @@ -29,10 +29,6 @@ class QtxListOfOperations; -//================================================================ -// Class : -// Purpose : -//================================================================ class QTX_EXPORT QtxPopupMgr : public QtxActionMenuMgr { Q_OBJECT diff --git a/src/Qtx/QtxResourceEdit.cxx b/src/Qtx/QtxResourceEdit.cxx index e499236ff..d4398e2ad 100644 --- a/src/Qtx/QtxResourceEdit.cxx +++ b/src/Qtx/QtxResourceEdit.cxx @@ -23,16 +23,18 @@ #include "QtxResourceMgr.h" -/* - Class: QtxResourceEdit - Descr: Class for managing preferences items -*/ +/*! + Constructor +*/ QtxResourceEdit::QtxResourceEdit( QtxResourceMgr* mgr ) : myResMgr( mgr ) { } +/*! + Destructor +*/ QtxResourceEdit::~QtxResourceEdit() { ItemMap items; @@ -44,11 +46,22 @@ QtxResourceEdit::~QtxResourceEdit() delete itr.data(); } +/*! + \return assigned resource manager +*/ QtxResourceMgr* QtxResourceEdit::resourceMgr() const { return myResMgr; } +/*! + Adds new item + \param label - label of widget to edit preference + \param pId - parent item id + \param type - type of item + \param section - section of resource assigned with item + \param param - name of resource assigned with item +*/ int QtxResourceEdit::addItem( const QString& label, const int pId, const int type, const QString& section, const QString& param ) { @@ -72,6 +85,11 @@ int QtxResourceEdit::addItem( const QString& label, const int pId, const int typ return i->id(); } +/*! + \return value of item property + \param id - item id + \propName - propertyName +*/ QVariant QtxResourceEdit::itemProperty( const int id, const QString& propName ) const { QVariant propValue; @@ -81,6 +99,12 @@ QVariant QtxResourceEdit::itemProperty( const int id, const QString& propName ) return propValue; } +/*! + Sets value of item property + \param id - item id + \propName - propertyName + \propValue - new value of property +*/ void QtxResourceEdit::setItemProperty( const int id, const QString& propName, const QVariant& propValue ) { Item* i = item( id ); @@ -88,6 +112,12 @@ void QtxResourceEdit::setItemProperty( const int id, const QString& propName, co i->setProperty( propName, propValue ); } +/*! + \return resource assigned with item + \param id - item id + \param section - to return section of resource + \param param - to return name of resource +*/ void QtxResourceEdit::resource( const int id, QString& sec, QString& param ) const { Item* i = item( id ); @@ -95,6 +125,9 @@ void QtxResourceEdit::resource( const int id, QString& sec, QString& param ) con i->resource( sec, param ); } +/*! + Stores all values to resource manager +*/ void QtxResourceEdit::store() { QMap before; @@ -112,18 +145,27 @@ void QtxResourceEdit::store() changedResources( changed ); } +/*! + Retrieve all values from resource manager +*/ void QtxResourceEdit::retrieve() { for ( ItemMap::ConstIterator it = myItems.begin(); it != myItems.end(); ++it ) it.data()->retrieve(); } +/*! + Stores all values to backup container +*/ void QtxResourceEdit::toBackup() { myBackup.clear(); resourceValues( myBackup ); } +/*! + Retrieve all values from backup container +*/ void QtxResourceEdit::fromBackup() { QMap before; @@ -140,10 +182,17 @@ void QtxResourceEdit::fromBackup() changedResources( changed ); } +/*! + Updates resource edit (default implementation is empty) +*/ void QtxResourceEdit::update() { } +/*! + \return item by it's id + \param id - item id +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const int id ) const { Item* i = 0; @@ -152,6 +201,10 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const int id ) const return i; } +/*! + \return item by it's title (finds first item) + \param title - item title +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title ) const { Item* i = 0; @@ -163,6 +216,11 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title ) const return i; } +/*! + \return item by it's title and parent id + \param title - item title + \param pId - parent id +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title, const int pId ) const { Item* i = 0; @@ -175,6 +233,13 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title, const int pI return i; } +/*! + Creates item + \return new item + \param label - text of label for new item + \param type - type of new item + \param pId - parent id +*/ QtxResourceEdit::Item* QtxResourceEdit::createItem( const QString& label, const int type, const int pId ) { Item* i = 0; @@ -193,6 +258,10 @@ QtxResourceEdit::Item* QtxResourceEdit::createItem( const QString& label, const return i; } +/*! + Removes item + \param item - item to be removed +*/ void QtxResourceEdit::removeItem( Item* item ) { if ( !item ) @@ -204,6 +273,10 @@ void QtxResourceEdit::removeItem( Item* item ) itemRemoved( item ); } +/*! + \return children items of resource edit + \param lst - list of items to be filled with children +*/ void QtxResourceEdit::childItems( QPtrList& lst ) const { lst.clear(); @@ -211,6 +284,10 @@ void QtxResourceEdit::childItems( QPtrList& lst ) const lst.append( it.current() ); } +/*! + \return all resources values from widgets + \param map - map to be filled by resources values +*/ void QtxResourceEdit::resourceValues( QMap& map ) const { QString sect, name; @@ -222,6 +299,10 @@ void QtxResourceEdit::resourceValues( QMap& map ) const } } +/*! + \return all resources values from widgets + \param map - map to be filled by resources values +*/ void QtxResourceEdit::resourceValues( QMap& map ) const { QString sect, name; @@ -233,6 +314,10 @@ void QtxResourceEdit::resourceValues( QMap& map ) const } } +/*! + Sets to widgets all resources values from map + \param map - map with resources values +*/ void QtxResourceEdit::setResourceValues( QMap& map ) const { for ( QMap::ConstIterator it = map.begin(); it != map.end(); ++it ) @@ -243,13 +328,23 @@ void QtxResourceEdit::setResourceValues( QMap& map ) const } } +/*! + Sets to widgets all resources values from map + \param map - map with resources values +*/ void QtxResourceEdit::setResourceValues( QMap& map ) const { for ( QMap::ConstIterator it = map.begin(); it != map.end(); ++it ) it.key()->setResourceValue( it.data() ); } - +/*! + Compares two map of resources values and finds different ones + \param map1 - first map + \param map2 - second map + \param resMap - map to be filled with different values + \param fromFirst - if it is true, then resMap will be filled with values from first map, otherwise - from second +*/ void QtxResourceEdit::differentValues( const QMap& map1, const QMap& map2, QMap& resMap, const bool fromFirst ) const { @@ -264,6 +359,13 @@ void QtxResourceEdit::differentValues( const QMap& map1, const QMa } } +/*! + Compares two map of resources values and finds different ones + \param map1 - first map + \param map2 - second map + \param resMap - map to be filled with different values + \param fromFirst - if it is true, then resMap will be filled with values from first map, otherwise - from second +*/ void QtxResourceEdit::differentValues( const QMap& map1, const QMap& map2, QMap& resMap, const bool fromFirst ) const { @@ -278,23 +380,31 @@ void QtxResourceEdit::differentValues( const QMap& map1, const Q } } +/*! + Makes some activity on resource changing (called from store() method) + \sa store() +*/ void QtxResourceEdit::changedResources( const QMap& ) { } +/*! + Some activity on item addition (default implementation is empty) +*/ void QtxResourceEdit::itemAdded( Item* ) { } +/*! + Some activity on item removing (default implementation is empty) +*/ void QtxResourceEdit::itemRemoved( Item* ) { } -/* - Class: QtxResourceEdit::Item - Descr: Class for incapsulation of one preference item +/*! + Constructor */ - QtxResourceEdit::Item::Item( QtxResourceEdit* edit, Item* parent ) : myEdit( edit ), myParent( 0 ) @@ -305,22 +415,35 @@ myParent( 0 ) parent->insertChild( this ); } +/*! + Destructor +*/ QtxResourceEdit::Item::~Item() { if ( resourceEdit() ) resourceEdit()->removeItem( this ); } +/*! + \return id of item +*/ int QtxResourceEdit::Item::id() const { return myId; } +/*! + \return parent item +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::parentItem() const { return myParent; } +/*! + Appends child and (if necessary) removes item from old parent + \param item - item to be added +*/ void QtxResourceEdit::Item::insertChild( Item* item ) { if ( !item || myChildren.contains( item ) ) @@ -333,6 +456,10 @@ void QtxResourceEdit::Item::insertChild( Item* item ) myChildren.append( item ); } +/*! + Removes child + \param item - item to be removed +*/ void QtxResourceEdit::Item::removeChild( Item* item ) { if ( !item || !myChildren.contains( item ) ) @@ -342,62 +469,105 @@ void QtxResourceEdit::Item::removeChild( Item* item ) item->myParent = 0; } +/*! + Fills list with children items + \param lst - list to be filled with +*/ void QtxResourceEdit::Item::childItems( QPtrList& lst ) const { for ( ItemListIterator it( myChildren ); it.current(); ++it ) lst.append( it.current() ); } +/*! + \return true if there is no children of this item +*/ bool QtxResourceEdit::Item::isEmpty() const { return myChildren.isEmpty(); } +/*! + \return title of item +*/ QString QtxResourceEdit::Item::title() const { return myTitle; } +/*! + \return assigned resource placement + \param sec - to return section + \param param - to return param name +*/ void QtxResourceEdit::Item::resource( QString& sec, QString& param ) const { sec = myResSection; param = myResParameter; } +/*! + Sets item title + \param title - new item title +*/ void QtxResourceEdit::Item::setTitle( const QString& title ) { myTitle = title; } +/*! + Assigns new resource to item + \param sec - section + \param sec - param name +*/ void QtxResourceEdit::Item::setResource( const QString& sec, const QString& param ) { myResSection = sec; myResParameter = param; } +/*! + Updates item (default implementation is empty) +*/ void QtxResourceEdit::Item::update() { } +/*! + \return property value +*/ QVariant QtxResourceEdit::Item::property( const QString& ) const { return QVariant(); } +/*! + Sets property value +*/ void QtxResourceEdit::Item::setProperty( const QString&, const QVariant& ) { } +/*! + \return value of assigned resource +*/ QString QtxResourceEdit::Item::resourceValue() const { return getString(); } +/*! + Sets value of assigned resource + \param val - new value +*/ void QtxResourceEdit::Item::setResourceValue( const QString& val ) { setString( val ); } +/*! + \return corresponding resource manager +*/ QtxResourceMgr* QtxResourceEdit::Item::resourceMgr() const { QtxResourceMgr* resMgr = 0; @@ -406,47 +576,78 @@ QtxResourceMgr* QtxResourceEdit::Item::resourceMgr() const return resMgr; } +/*! + \return corresponding resource edit +*/ QtxResourceEdit* QtxResourceEdit::Item::resourceEdit() const { return myEdit; } +/*! + \return integer value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ int QtxResourceEdit::Item::getInteger( const int val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->integerValue( myResSection, myResParameter, val ) : val; } +/*! + \return double value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ double QtxResourceEdit::Item::getDouble( const double val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->doubleValue( myResSection, myResParameter, val ) : val; } +/*! + \return boolean value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ bool QtxResourceEdit::Item::getBoolean( const bool val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->booleanValue( myResSection, myResParameter, val ) : val; } +/*! + \return string value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QString QtxResourceEdit::Item::getString( const QString& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->stringValue( myResSection, myResParameter, val ) : val; } +/*! + \return color value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QColor QtxResourceEdit::Item::getColor( const QColor& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->colorValue( myResSection, myResParameter, val ) : val; } +/*! + \return font value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QFont QtxResourceEdit::Item::getFont( const QFont& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->fontValue( myResSection, myResParameter, val ) : val; } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setInteger( const int val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -454,6 +655,10 @@ void QtxResourceEdit::Item::setInteger( const int val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setDouble( const double val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -461,6 +666,10 @@ void QtxResourceEdit::Item::setDouble( const double val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setBoolean( const bool val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -468,6 +677,10 @@ void QtxResourceEdit::Item::setBoolean( const bool val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setString( const QString& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -475,6 +688,10 @@ void QtxResourceEdit::Item::setString( const QString& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setColor( const QColor& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -482,6 +699,10 @@ void QtxResourceEdit::Item::setColor( const QColor& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setFont( const QFont& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -489,21 +710,37 @@ void QtxResourceEdit::Item::setFont( const QFont& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + \return other item + \param id - other item id +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const int id ) const { return resourceEdit() ? resourceEdit()->item( id ) : 0; } +/*! + \return other item + \param title - other item title +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title ) const { return resourceEdit() ? resourceEdit()->item( title ) : 0; } +/*! + \return other item + \param title - other item title + \param id - parent item id +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title, const int id ) const { return resourceEdit() ? resourceEdit()->item( title, id ) : 0; } +/*! + \return free item id +*/ int QtxResourceEdit::Item::generateId() { static int _id = 0; diff --git a/src/Qtx/QtxResourceEdit.h b/src/Qtx/QtxResourceEdit.h index 7c55abc7b..15dd6ceef 100644 --- a/src/Qtx/QtxResourceEdit.h +++ b/src/Qtx/QtxResourceEdit.h @@ -35,6 +35,10 @@ class QtxResourceMgr; #include #include +/*! + \class QtxResourceEdit + Class for managing preferences items +*/ class QTX_EXPORT QtxResourceEdit { public: @@ -104,9 +108,9 @@ private: friend class QtxResourceEdit::Item; }; -/* - Class: QtxResourceEditor::Item - Descr: Class for incapsulation of one preference item +/*! + \class QtxResourceEditor::Item + Class for incapsulation of one preference item */ class QTX_EXPORT QtxResourceEdit::Item diff --git a/src/Qtx/QtxResourceMgr.cxx b/src/Qtx/QtxResourceMgr.cxx index d5376b7e0..9824aff30 100644 --- a/src/Qtx/QtxResourceMgr.cxx +++ b/src/Qtx/QtxResourceMgr.cxx @@ -42,20 +42,41 @@ QtxResourceMgr::Resources::Resources( const QtxResourceMgr* mgr, const QString& { } +/*! + Destructor +*/ QtxResourceMgr::Resources::~Resources() { } +/*! + Returns name of resource file + This file is used to load/save operations +*/ QString QtxResourceMgr::Resources::file() const { return myFileName; } +/*! + Sets name of resource file + \param fn - name of file +*/ void QtxResourceMgr::Resources::setFile( const QString& fn ) { myFileName = fn; } +/*! + Returns string representation of parameter value + Returns QString::null if there is no such parameter + + \param sect - name of section + \param name - name of parameter + \param subst - if it is true, then the substitution of variables + will be done with help of makeSubstitution method + \sa makeSubstitution() +*/ QString QtxResourceMgr::Resources::value( const QString& sect, const QString& name, const bool subst ) const { QString val; @@ -69,27 +90,52 @@ QString QtxResourceMgr::Resources::value( const QString& sect, const QString& na return val; } +/*! + Sets value by it's string representation + + \param sect - name of section + \param name - name of parameter + \param val - string value +*/ void QtxResourceMgr::Resources::setValue( const QString& sect, const QString& name, const QString& val ) { Section& s = section( sect ); s.insert( name, val ); } +/*! + \return true if section exists + \param sect - name of section +*/ bool QtxResourceMgr::Resources::hasSection( const QString& sect ) const { return mySections.contains( sect ); } +/*! + \return true if parameter exists in section + \param sect - name of section + \param name - name of parameter +*/ bool QtxResourceMgr::Resources::hasValue( const QString& sect, const QString& name ) const { return hasSection( sect ) && section( sect ).contains( name ); } +/*! + Removes section from resources + \param sect - name of section +*/ void QtxResourceMgr::Resources::removeSection( const QString& sect ) { mySections.remove( sect ); } +/*! + Removes parameter from section + \param sect - name of section + \param name - name of parameter +*/ void QtxResourceMgr::Resources::removeValue( const QString& sect, const QString& name ) { if ( !hasSection( sect ) ) @@ -102,16 +148,26 @@ void QtxResourceMgr::Resources::removeValue( const QString& sect, const QString& mySections.remove( sect ); } +/*! + Removes all sections +*/ void QtxResourceMgr::Resources::clear() { mySections.clear(); } +/*! + \return list of section names +*/ QStringList QtxResourceMgr::Resources::sections() const { return mySections.keys(); } +/*! + \return list of parameter names from section + \param sec - name of section +*/ QStringList QtxResourceMgr::Resources::parameters( const QString& sec ) const { if ( !hasSection( sec ) ) @@ -120,6 +176,13 @@ QStringList QtxResourceMgr::Resources::parameters( const QString& sec ) const return section( sec ).keys(); } +/*! + \return path of file from directory built by parameter + \return QString::null if built path doesn't exist + \param sec - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::Resources::path( const QString& sec, const QString& prefix, const QString& name ) const { QString filePath = fileName( sec, prefix, name ); @@ -131,11 +194,17 @@ QString QtxResourceMgr::Resources::path( const QString& sec, const QString& pref return filePath; } +/*! + \return corresponding resource manager +*/ QtxResourceMgr* QtxResourceMgr::Resources::resMgr() const { return myMgr; } +/*! + \return instance of section by it's name. Section will be created if it doesn't exist +*/ QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) { if ( !mySections.contains( sn ) ) @@ -144,11 +213,20 @@ QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) return mySections[sn]; } +/*! + \return instance of section by it's name. Section will be created if it doesn't exist +*/ const QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) const { return mySections[sn]; } +/*! + \return full path of file + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::Resources::fileName( const QString& sect, const QString& prefix, const QString& name ) const { QString path; @@ -173,6 +251,12 @@ QString QtxResourceMgr::Resources::fileName( const QString& sect, const QString& return QString(); } +/*! + \return QPixmap loaded from file + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of picture file +*/ QPixmap QtxResourceMgr::Resources::loadPixmap( const QString& sect, const QString& prefix, const QString& name ) const { QString fname = fileName( sect, prefix, name ); @@ -189,6 +273,12 @@ QPixmap QtxResourceMgr::Resources::loadPixmap( const QString& sect, const QStrin return p; } +/*! + \return just created and loaded translator + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, const QString& prefix, const QString& name ) const { QTranslator* trans = new QTranslator( 0 ); @@ -200,6 +290,13 @@ QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, con return trans; } +/*! + Finds in string variables by patterns: ${name} or $(name) or %name% + \return first found name or QString::null if there is no ones + \param str - string where the search is processed + \param start - integer value for returning start position of variable + \param len - integer value for returning length of variable +*/ QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& start, int& len ) const { QString varName = QString::null; @@ -219,6 +316,15 @@ QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& return varName; } +/*! + Substitutes variables by its' values. If variable is from enviroment, + it will be replaced by environment value. If it isn't, method tries to + find it's value among resources + \return new variant of string 'str' + \param str - string to process substitution + \param sect - section, in which the variables will be finding + \param name - name of variable which must be ignored during substitution +*/ QString QtxResourceMgr::Resources::makeSubstitution( const QString& str, const QString& sect, const QString& name ) const { QString res = str; @@ -259,7 +365,6 @@ QString QtxResourceMgr::Resources::makeSubstitution( const QString& str, const Q Class: QtxResourceMgr::IniFormat Level: Internal */ - class QtxResourceMgr::IniFormat : public Format { public: @@ -271,15 +376,26 @@ protected: virtual bool save( const QString&, const QMap& ); }; +/*! + Default constructor +*/ QtxResourceMgr::IniFormat::IniFormat() : Format( "ini" ) { } +/*! + Destructor +*/ QtxResourceMgr::IniFormat::~IniFormat() { } +/*! + Loads resources from ini-file to map of sections + \param fname - name of resource file + \param secMap - map of sections +*/ bool QtxResourceMgr::IniFormat::load( const QString& fname, QMap& secMap ) { QFile file( fname ); @@ -346,6 +462,11 @@ bool QtxResourceMgr::IniFormat::load( const QString& fname, QMap& secMap ) { QFile file( fname ); @@ -391,15 +512,26 @@ private: QString valueAttribute() const; }; +/*! + Default constructor +*/ QtxResourceMgr::XmlFormat::XmlFormat() : Format( "xml" ) { } +/*! + Destructor +*/ QtxResourceMgr::XmlFormat::~XmlFormat() { } +/*! + Loads resources from xml-file to map of sections + \param fname - name of resource file + \param secMap - map of sections +*/ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap& secMap ) { bool res = false; @@ -408,7 +540,10 @@ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap& secMap ) { bool res = false; @@ -507,6 +669,9 @@ bool QtxResourceMgr::XmlFormat::save( const QString& fname, const QMapmyFileName ) ); - return save( res->myFileName, res->mySections ); + QtxResourceMgr* mgr = res->resMgr(); + QString name = mgr ? mgr->userFileName( mgr->appName(), false ) : res->myFileName; + return save( name, res->mySections ); } /*! @@ -787,11 +966,18 @@ void QtxResourceMgr::clear() it.current()->clear(); } +/*! + Set state 'ignore user values'. + If it is true, then all resources loaded from user home directory is ignored +*/ void QtxResourceMgr::setIgnoreUserValues( const bool val ) { myIsIgnoreUserValues = val; } +/*! + \return state 'ignore user values' +*/ bool QtxResourceMgr::ignoreUserValues() const { return myIsIgnoreUserValues; @@ -1343,6 +1529,26 @@ bool QtxResourceMgr::load() return res; } +/*! + \brief Import some file with resources +*/ +bool QtxResourceMgr::import( const QString& fname ) +{ + Format* fmt = format( currentFormat() ); + if ( !fmt ) + return false; + + Resources* r = myResources.getFirst(); + if( !r ) + return false; + + QString old = r->file(); + r->setFile( fname ); + bool res = fmt->load( r ); + r->setFile( old ); + return res; +} + /*! \brief Save the changed resources in to the user resource file. */ @@ -1411,6 +1617,13 @@ QStringList QtxResourceMgr::parameters( const QString& sec ) const return res; } +/*! + \return path of file from directory built by parameter + \return QString::null if built path doesn't exist + \param sec - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::path( const QString& sect, const QString& prefix, const QString& name ) const { QString res; @@ -1419,6 +1632,9 @@ QString QtxResourceMgr::path( const QString& sect, const QString& prefix, const return res; } +/*! + \return section corresponding to resources paths +*/ QString QtxResourceMgr::resSection() const { QString res = option( "res_section_name" ); @@ -1427,6 +1643,9 @@ QString QtxResourceMgr::resSection() const return res; } +/*! + \return section corresponding to language settings +*/ QString QtxResourceMgr::langSection() const { QString res = option( "lang_section_name" ); @@ -1435,26 +1654,55 @@ QString QtxResourceMgr::langSection() const return res; } +/*! + \return default image used when during loading the image file doesn't exist +*/ QPixmap QtxResourceMgr::defaultPixmap() const { return myDefaultPix; } +/*! + Set image as default image used when during loading the image file doesn't exist + \param pix - image +*/ void QtxResourceMgr::setDefaultPixmap( const QPixmap& pix ) { myDefaultPix = pix; } +/*! + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name ) const { return loadPixmap( prefix, name, true ); } +/*! + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file + \param useDef - indicates if it is possible to use default image returning by defaultPixmap() method. + If it is false, the empty pixmap will be used as default + \sa defaultPixmap() +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const bool useDef ) const { return loadPixmap( prefix, name, useDef ? defaultPixmap() : QPixmap() ); } +/*! + Finds in all sections an existing path corresponding to 'prefix' parameter + and load image with name 'name' from this folder + + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file + \param defPix - default image used when file doesn't exist +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const QPixmap& defPix ) const { initialize(); @@ -1467,6 +1715,22 @@ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, return pix; } +/*! + Loads translator for language + Name of translator file is constructed by list returning by option "translators" or, + if it is empty, by predefined pattern "%P_msg_%L.qm". It is recommended to used in translators + name the strings %A, %P, %L whose will be replaced by application name, prefix and language name correspondingly + + \param pref - name of parameter containing path to translator's file. + If it is empty, the list of parameters from resource section ( resSection() ) + is used. + + \param l - name of language. If it is empty, then value of parameter "language" + from language section ( langSection() ) is used. If it is also empty, then + predefined name "en" is used + + \sa resSection(), langSection() +*/ void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l ) { initialize(); @@ -1523,6 +1787,12 @@ void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l ) } } +/*! + Loads translators by path and list of files + + \param prefix - value of this parameter must contain path + \param translators - list of translators' files +*/ void QtxResourceMgr::loadTranslators( const QString& prefix, const QStringList& translators ) { initialize(); @@ -1545,6 +1815,12 @@ void QtxResourceMgr::loadTranslators( const QString& prefix, const QStringList& } } +/*! + Loads translator by path and file name + + \param prefix - value of this parameter must contain path + \param name - name of translator file +*/ void QtxResourceMgr::loadTranslator( const QString& prefix, const QString& name ) { initialize(); @@ -1564,6 +1840,11 @@ void QtxResourceMgr::loadTranslator( const QString& prefix, const QString& name } } +/*! + Remove all translators corresponding to prefix + + \param prefix - parameter containing path +*/ void QtxResourceMgr::removeTranslators( const QString& prefix ) { if ( !myTranslator.contains( prefix ) ) @@ -1578,6 +1859,11 @@ void QtxResourceMgr::removeTranslators( const QString& prefix ) myTranslator.remove( prefix ); } +/*! + Moves translators corresponding to prefix to the top of translator stack + + \param prefix - parameter containing path +*/ void QtxResourceMgr::raiseTranslators( const QString& prefix ) { if ( !myTranslator.contains( prefix ) ) @@ -1590,6 +1876,9 @@ void QtxResourceMgr::raiseTranslators( const QString& prefix ) } } +/*! + Copies all resources to user resources, so that they will be saved in user home folder +*/ void QtxResourceMgr::refresh() { QStringList sl = sections(); @@ -1601,6 +1890,9 @@ void QtxResourceMgr::refresh() } } +/*! + \brief Sets the resource directories list except user home directory and clear resources +*/ void QtxResourceMgr::setDirList( const QStringList& dl ) { myDirList = dl; @@ -1610,6 +1902,12 @@ void QtxResourceMgr::setDirList( const QStringList& dl ) myResources.clear(); } +/*! + Sets resource value + \param sect - name of section + \param name - name of parameter + \param val - string representation of value +*/ void QtxResourceMgr::setResource( const QString& sect, const QString& name, const QString& val ) { initialize(); @@ -1618,7 +1916,13 @@ void QtxResourceMgr::setResource( const QString& sect, const QString& name, cons myResources.first()->setValue( sect, name, val ); } -QString QtxResourceMgr::userFileName( const QString& appName ) const +/*! + \return name of resource file, which is being found in user home directory + \param appName - name of application + \param for_load - flag indicating that file will be used for loading (true) or for saving(false) + It makes possible to use different resource files for loading and saving +*/ +QString QtxResourceMgr::userFileName( const QString& appName, const bool /*for_load*/ ) const { QString fileName; QString pathName = QDir::homeDirPath(); @@ -1635,11 +1939,20 @@ QString QtxResourceMgr::userFileName( const QString& appName ) const return pathName; } +/*! + \return name of resource file, which is being found in all resource directories, except user home +*/ QString QtxResourceMgr::globalFileName( const QString& appName ) const { return QString( "%1.%2" ).arg( appName ).arg( currentFormat() ); } +/*! + Replaced substrings by pattern %A, %B, etc by values from map + + \param src - string to be processed + \param substMap - map of values for replacing +*/ QString QtxResourceMgr::substMacro( const QString& src, const QMap& substMap ) const { QString trg = src; diff --git a/src/Qtx/QtxResourceMgr.h b/src/Qtx/QtxResourceMgr.h index f75345425..bcaa4ebf5 100644 --- a/src/Qtx/QtxResourceMgr.h +++ b/src/Qtx/QtxResourceMgr.h @@ -133,6 +133,7 @@ public: QString path( const QString&, const QString&, const QString& ) const; bool load(); + bool import( const QString& ); bool save(); QStringList sections() const; @@ -144,7 +145,7 @@ protected: virtual void setDirList( const QStringList& ); virtual void setResource( const QString&, const QString&, const QString& ); - virtual QString userFileName( const QString& ) const; + virtual QString userFileName( const QString&, const bool = true ) const; virtual QString globalFileName( const QString& ) const; private: diff --git a/src/Qtx/QtxSplash.cxx b/src/Qtx/QtxSplash.cxx new file mode 100644 index 000000000..3b8737394 --- /dev/null +++ b/src/Qtx/QtxSplash.cxx @@ -0,0 +1,507 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// +// File: QtxSplash.cxx +// Author: Vadim SANDLER + +#include "QtxSplash.h" + +#include +#include +#include +#include + +const int _PROGRESS_EVENT = QEvent::User + 10; +const int _PROGRESS_WIDTH = 10; + +/*! + Class ProgressEvent [ internal ]. +*/ +class ProgressEvent: public QCustomEvent +{ +public: + ProgressEvent( const QString& msg, const int progress = 0 ) + : QCustomEvent( id() ), + myMessage( msg ), + myProgress( progress ) + {} + QString message() const { return myMessage; } + int progress() const { return myProgress; } + static int id() { return _PROGRESS_EVENT; } + +private: + QString myMessage; + int myProgress; +}; + +// Only one instance of splash screen is allowed +QtxSplash* QtxSplash::mySplash = 0; + +/*! + Construct a splash screen that will display the \a pixmap. +*/ +QtxSplash::QtxSplash( const QPixmap& pixmap ) + : QWidget( 0, 0, WStyle_Customize | WStyle_StaysOnTop | WX11BypassWM | WStyle_NoBorder ) +{ + myAlignment = AlignBottom | AlignRight; + myColor = white; + myHideOnClick = false; + myProgress = 0; + myTotal = 0; + myGradientType = Vertical; + myError = 0; + myStartColor = red; + + setPixmap( pixmap ); +} + +/*! + Destructor. +*/ +QtxSplash::~QtxSplash() +{ + mySplash = 0; +} + +/*! + Returns an only instance of splash screen. + If \a px is valid sets this pixmap to the splash screen. +*/ +QtxSplash* QtxSplash::splash( const QPixmap& px ) +{ + if ( !mySplash ) + mySplash = new QtxSplash( px ); + else if ( !px.isNull() ) + mySplash->setPixmap( px ); + return mySplash; +} + +/*! + Sends the status message and (optionally) progress to the splash screen. + Can be used, for example, from the progress thread. +*/ +void QtxSplash::setStatus( const QString& msg, + const int progress ) +{ + if ( mySplash ) { + QApplication::postEvent( mySplash, new ProgressEvent( msg, progress ) ); + qApp->processEvents(); + } +} + +/*! + Sets error status and shows error message box to the user. +*/ +void QtxSplash::error( const QString& error, const QString& title, const int code ) +{ + printf("QtxSplash::error: %s\n",error.latin1()); + if ( mySplash ) { + mySplash->setError( code ); + QMessageBox::critical( mySplash, + title.isEmpty() ? tr( "Error" ) : title, + error, + tr( "&OK" ) ); + } +} + +/*! + Sets the pixmap that will be used as the splash screen's image to + \a pixmap. +*/ +void QtxSplash::setPixmap( const QPixmap& pixmap ) +{ + myPixmap = pixmap; + QRect r( 0, 0, myPixmap.size().width(), myPixmap.size().height() ); + resize( myPixmap.size() ); + move( QApplication::desktop()->screenGeometry().center() - r.center() ); + repaint(); +} + +/*! + Returns the pixmap that is used in the splash screen. +*/ +QPixmap QtxSplash::pixmap() const +{ + return myPixmap; +} + +/*! + Sets/clear the 'hide on mouse click' flag. + Default is FALSE. + When this flag is set, user can hide the splash screen window + by clicking on it with mouse. + But for this to work it is necessary to call periodically + QApplication::processEvents() in order to allow event loop to process + events because usually main application loop is not yet started + at that moment. +*/ +void QtxSplash::setHideOnClick( const bool on ) +{ + myHideOnClick = on; +} + +/*! + Returns the 'hide on mouse click' flag. +*/ +bool QtxSplash::hideOnClick() const +{ + return myHideOnClick; +} + +/*! + Sets total progress steps to \a total. +*/ +void QtxSplash::setTotalSteps( const int total ) +{ + myTotal = total; + repaint(); +} + +/*! + Return total progress steps number. + \sa setTotalSteps(), setProgress() +*/ +int QtxSplash::totalSteps() const +{ + return myTotal; +} + +/*! + Sets progress to \a progress. +*/ +void QtxSplash::setProgress( const int progress ) +{ + myProgress = progress; + repaint(); +} + +/*! + Return current progress. + \sa setProgress(), setTotalSteps() +*/ +int QtxSplash::progress() const +{ + return myProgress; +} + +/*! + Sets progress to \a progress and total progress steps to \a total. +*/ +void QtxSplash::setProgress( const int progress, const int total ) +{ + myTotal = total; + myProgress = progress; + repaint(); +} + +/*! + Sets progress bar colors to \a startColor and \a endColor. + If the colors differ the gradient color bar is drawed. + If the \a endColor is not valid, \a startColor is used instead. + \a gradientType sets the type of gradient to be used for progress + bar - horizontal or vertical. Default is vertical. +*/ +void QtxSplash::setProgressColors( const QColor& startColor, + const QColor& endColor, + const int gradientType ) +{ + myStartColor = startColor; + myEndColor = endColor; + myGradientType = gradientType; + repaint(); +} + +/*! + Return progress colors and gradient type (horizontal or vertical). + \sa setProgressColors() +*/ +int QtxSplash::progressColors( QColor& startColor, QColor& endColor ) +{ + startColor = myStartColor; + endColor = myEndColor; + return myGradientType; +} + +/*! + Sets message text alignment flags to \a alignment. + Default is AlignBottom | AlignRight. +*/ +void QtxSplash::setTextAlignment( const int alignment ) +{ + myAlignment = alignment; + repaint(); +} + +/*! + Return message text alignment flags. + \sa setTextAlignment() +*/ +int QtxSplash::textAlignment() const +{ + return myAlignment; +} + +/*! + Sets message text color to \a color. + Default is white. + \sa setTextColors() +*/ +void QtxSplash::setTextColor( const QColor& color ) +{ + myColor = color; + myShadowColor = QColor(); + repaint(); +} + +/*! + Return message text color. + \sa setTextColor() +*/ +QColor QtxSplash::textColor() const +{ + return myColor; +} + +/*! + Sets message text color to \a color and text shadow color to \a shadow. + \sa setTextColor() +*/ +void QtxSplash::setTextColors( const QColor& color, const QColor& shadow ) +{ + myColor = color; + myShadowColor = shadow; + repaint(); +} + +/*! + Return message text color and text shadow color. + \sa setTextColors() +*/ +void QtxSplash::textColors( QColor& color, QColor& shadow ) const +{ + color = myColor; + shadow = myShadowColor; +} + +/*! + Returns current status message. +*/ +QString QtxSplash::message() const +{ + return myMessage; +} + +/*! + Return error code. If no errors were occured returns 0. + Error code can be set by error( QString&, QString, int ). +*/ +int QtxSplash::error() const +{ + return myError; +} + +/*! + Makes the splash screen wait until the widget \a mainWin is displayed + before calling close() on itself. +*/ +void QtxSplash::finish( QWidget* mainWin ) +{ + if ( mainWin ) { +#if defined(Q_WS_X11) + extern void qt_wait_for_window_manager( QWidget* w ); + qt_wait_for_window_manager( mainWin ); +#endif + } + close(); +} + +/*! + Repaint the splash screen. +*/ +void QtxSplash::repaint() +{ + drawContents(); + QWidget::repaint(); + QApplication::flush(); +} + +/*! + Draws the \a message text onto the splash screen with color \a + color and aligns the text according to the flags in \a alignment. +*/ +void QtxSplash::message( const QString& msg, + int alignment, + const QColor& color ) +{ + myMessage = msg; + myAlignment = alignment; + myColor = color; + repaint(); +} + +/*! + This is an overloaded member function, provided for convenience. + It behaves essentially like the above function. + Draws the \a message text onto the splash screen with default color + and aligns the text according to the default alignment flags. +*/ +void QtxSplash::message( const QString& msg ) +{ + myMessage = msg; + repaint(); +} + +/*! + Removes the message being displayed on the splash screen. + \sa message() +*/ +void QtxSplash::clear() +{ + myMessage = QString::null; + repaint(); +} + +/*! + Draw the contents of the splash screen using painter \a painter. +*/ +void QtxSplash::drawContents( QPainter* painter ) +{ + QRect r = rect(); + if ( myTotal > 0 ) { + // draw progress bar outline rectangle + painter->setPen( palette().active().dark() ); + painter->drawLine( r.x()+5, + r.height()-5-_PROGRESS_WIDTH, + r.width()-5, + r.height()-5-_PROGRESS_WIDTH ); + painter->drawLine( r.x()+5, + r.height()-5-_PROGRESS_WIDTH, + r.x()+5, + r.height()-5 ); + painter->setPen( palette().active().light() ); + painter->drawLine( r.x()+5, + r.height()-5, + r.width()-5, + r.height()-5 ); + painter->drawLine( r.width()-5, + r.height()-5-_PROGRESS_WIDTH, + r.width()-5, + r.height()-5 ); + // draw progress bar + if ( myGradientType == Horizontal ) { + int tng = r.width() - r.x() - 11; + int ng = (int) ( 1.0 * tng * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); + int h1, h2, s1, s2, v1, v2; + myStartColor.hsv( &h1, &s1, &v1 ); + myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) : + myStartColor.hsv( &h2, &s2, &v2 ); + for ( int i = 0; i < ng; i++ ) { + painter->setPen( QColor( h1 + ((h2-h1)*i)/(tng-1), + s1 + ((s2-s1)*i)/(tng-1), + v1 + ((v2-v1)*i)/(tng-1), + QColor::Hsv ) ); + painter->drawLine( r.x()+6+i, + r.height()-5-_PROGRESS_WIDTH+1, + r.x()+6+i, + r.height()-6 ); + } + } + else { + int ng = (int) ( 1.0 * (r.width() - r.x() - 11) * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); + int h1, h2, s1, s2, v1, v2; + myStartColor.hsv( &h1, &s1, &v1 ); + myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) : + myStartColor.hsv( &h2, &s2, &v2 ); + for ( int i = 0; i < _PROGRESS_WIDTH-1; i++ ) { + painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-2), + s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-2), + v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-2), + QColor::Hsv ) ); + painter->drawLine( r.x()+6, + r.height()-5-_PROGRESS_WIDTH+1+i, + r.x()+6+ng-1, + r.height()-5-_PROGRESS_WIDTH+1+i ); + } + } + } + // draw status + if ( !myMessage.isEmpty() ) { + QFontMetrics f( font() ); + int spacing = f.lineSpacing(); + int shift = myTotal > 0 ? _PROGRESS_WIDTH : _PROGRESS_WIDTH; // : 0 + int i = myMessage.length() - 1; + while( i >= 0 && myMessage[ i-- ] == '\n' ) + shift += spacing; + QRect r1( r.x() + 5, r.y() + 5, r.width() - 10, r.height() - 10 - shift ); + QRect r2 = r1; + if ( myAlignment & Qt::AlignLeft ) r2.setLeft ( r2.left() + 1 ); + if ( myAlignment & Qt::AlignTop ) r2.setTop ( r2.top() + 1 ); + if ( myAlignment & Qt::AlignRight ) r2.setRight ( r2.right() + 1 ); + if ( myAlignment & Qt::AlignBottom ) r2.setBottom( r2.bottom() + 1 ); + if ( myShadowColor.isValid() ) { + painter->setPen( myShadowColor ); + painter->drawText( r2, myAlignment, myMessage ); + } + painter->setPen( myColor ); + painter->drawText( r1, myAlignment, myMessage ); + } +} + +/*! + Mouse press event. + Hides splash screen if the 'hide on mouse click' flag is set. + \sa setHideOnClick() +*/ +void QtxSplash::mousePressEvent( QMouseEvent* ) +{ + if ( myHideOnClick ) + hide(); +} + +/*! + Processes custom event sent by setStatus() method. + \sa setStatus(). +*/ +void QtxSplash::customEvent( QCustomEvent* ce ) +{ + if ( ce->type() == ProgressEvent::id() ) { + ProgressEvent* pe = (ProgressEvent*)ce; + pe->message().isEmpty() ? clear() : message( pe->message() ); + setProgress( pe->progress() ); + qApp->processEvents(); + } +} + +/*! + Draws the splash screen window [ internal ]. +*/ +void QtxSplash::drawContents() +{ + QPixmap textPix = myPixmap; + QPainter painter( &textPix, this ); + drawContents( &painter ); + setErasePixmap( textPix ); +} + +/*! + Sets error code [ internal ]. +*/ +void QtxSplash::setError( const int code ) +{ + myError = code; +} diff --git a/src/Qtx/QtxSplash.h b/src/Qtx/QtxSplash.h new file mode 100644 index 000000000..cc24f7fce --- /dev/null +++ b/src/Qtx/QtxSplash.h @@ -0,0 +1,114 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// +// File: QtxSplash.h +// Author: Vadim SANDLER + +#ifndef QTXSPLASH_H +#define QTXSPLASH_H + +#include "Qtx.h" + +#include +#include + +#ifdef WIN32 +#pragma warning( disable:4251 ) +#endif + +class QTX_EXPORT QtxSplash : public QWidget +{ + Q_OBJECT + +private: + QtxSplash( const QPixmap& = QPixmap() ); + +public: + enum { Horizontal, Vertical }; + + virtual ~QtxSplash(); + + static QtxSplash* splash( const QPixmap& = QPixmap() ); + static void setStatus( const QString&, const int = 0 ); + static void error( const QString&, const QString& = QString::null, const int = -1 ); + + void setPixmap( const QPixmap& ); + QPixmap pixmap() const; + + void setHideOnClick( const bool ); + bool hideOnClick() const; + + void setTotalSteps( const int ); + int totalSteps() const; + void setProgress( const int ); + int progress() const; + void setProgress( const int, const int ); + void setProgressColors( const QColor&, + const QColor& = QColor(), + const int = Vertical ); + int progressColors( QColor&, QColor& ); + + void setTextAlignment( const int ); + int textAlignment() const; + + void setTextColor( const QColor& ); + QColor textColor() const; + void setTextColors( const QColor&, const QColor& = QColor() ); + void textColors( QColor&, QColor& ) const; + + QString message() const; + + int error() const; + + void finish( QWidget* ); + void repaint(); + +public slots: + void message( const QString&, + const int, + const QColor& = white ); + void message( const QString& ); + void clear(); + +protected: + virtual void mousePressEvent( QMouseEvent* ); + virtual void customEvent( QCustomEvent* ); + virtual void drawContents( QPainter* ); + +private: + void drawContents(); + void setError( const int ); + +private: + static QtxSplash* mySplash; + + QPixmap myPixmap; + QString myMessage; + int myAlignment; + QColor myColor; + QColor myShadowColor; + bool myHideOnClick; + int myProgress; + int myTotal; + QColor myStartColor; + QColor myEndColor; + int myGradientType; + int myError; +}; + +#endif diff --git a/src/Qtx/QtxStdOperations.cxx b/src/Qtx/QtxStdOperations.cxx index 6d612b299..0e4bacb81 100644 --- a/src/Qtx/QtxStdOperations.cxx +++ b/src/Qtx/QtxStdOperations.cxx @@ -21,26 +21,23 @@ #include #include -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxStdOperations::QtxStdOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxStdOperations::~QtxStdOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false') +*/ void QtxStdOperations::bracketsList( QStringList& list, bool open ) const { if( open ) @@ -49,19 +46,17 @@ void QtxStdOperations::bracketsList( QStringList& list, bool open ) const list.append( ")" ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with operation names by copying of internal list of operations +*/ void QtxStdOperations::opersList( QStringList& list ) const { - list += myOpers; + list += myOpers; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Add operation names from list to internal list of operations +*/ void QtxStdOperations::addOperations( const QStringList& list ) { QStringList::const_iterator anIt = list.begin(), @@ -71,10 +66,9 @@ void QtxStdOperations::addOperations( const QStringList& list ) myOpers.append( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Append operation names from 'list' to internal list of operations +*/ void QtxStdOperations::addTypes( const ListOfTypes& list ) { ListOfTypes::const_iterator anIt = list.begin(), @@ -84,10 +78,12 @@ void QtxStdOperations::addTypes( const ListOfTypes& list ) myTypes.append( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxStdOperations::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -110,10 +106,9 @@ QtxParser::Error QtxStdOperations::isValid( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxArithmetics::QtxArithmetics() : QtxStdOperations() { @@ -138,18 +133,16 @@ QtxArithmetics::QtxArithmetics() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxArithmetics::~QtxArithmetics() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates numbers by it's string representation [redefined virtual] +*/ bool QtxArithmetics::createValue( const QString& str, QtxValue& v ) const { bool ok = false; @@ -164,10 +157,10 @@ bool QtxArithmetics::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxArithmetics::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -191,10 +184,13 @@ void set( QVariant& v1, bool v2 ) v1 = QVariant( v2, 0 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxArithmetics::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -286,10 +282,9 @@ QtxParser::Error QtxArithmetics::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxLogic::QtxLogic() : QtxStdOperations() { @@ -312,18 +307,16 @@ QtxLogic::QtxLogic() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxLogic::~QtxLogic() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates value 'true' or 'false' it's string representation [redefined virtual] +*/ bool QtxLogic::createValue( const QString& str, QtxValue& v ) const { bool ok = true; @@ -337,10 +330,10 @@ bool QtxLogic::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxLogic::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -370,10 +363,13 @@ bool boolean_value( const QtxValue& v ) return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxLogic::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -405,10 +401,9 @@ QtxParser::Error QtxLogic::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxFunctions::QtxFunctions() : QtxStdOperations() { @@ -427,18 +422,16 @@ QtxFunctions::QtxFunctions() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxFunctions::~QtxFunctions() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates numbers by it's string representation [redefined virtual] +*/ bool QtxFunctions::createValue( const QString& str, QtxValue& v ) const { bool ok = false; @@ -453,10 +446,10 @@ bool QtxFunctions::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxFunctions::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -468,10 +461,13 @@ int QtxFunctions::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxFunctions::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -506,10 +502,9 @@ QtxParser::Error QtxFunctions::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxStrings::QtxStrings() : QtxStdOperations() { @@ -536,18 +531,16 @@ QtxStrings::QtxStrings() } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxStrings::~QtxStrings() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates string QtxValue by it's Qt string representation [redefined virtual] +*/ bool QtxStrings::createValue( const QString& str, QtxValue& v ) const { QChar st = str[0], @@ -561,10 +554,10 @@ bool QtxStrings::createValue( const QString& str, QtxValue& v ) const return QtxStdOperations::createValue( str, v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxStrings::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -582,10 +575,13 @@ int QtxStrings::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxStrings::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -628,10 +624,9 @@ QtxParser::Error QtxStrings::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxSets::QtxSets() { QStringList aList; @@ -652,18 +647,16 @@ QtxSets::QtxSets() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxSets::~QtxSets() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false') +*/ void QtxSets::bracketsList( QStringList& list, bool open ) const { if( open ) @@ -673,19 +666,18 @@ void QtxSets::bracketsList( QStringList& list, bool open ) const QtxStdOperations::bracketsList( list, open ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates set of QtxValues by their string representation [redefined virtual] +*/ bool QtxSets::createValue( const QString& str, QtxValue& val ) const { return QtxStdOperations::createValue( str, val ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxSets::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -707,10 +699,12 @@ int QtxSets::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxSets::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -726,20 +720,18 @@ QtxParser::Error QtxSets::isValid( const QString& op, return QtxStdOperations::isValid( op, t1, t2 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Adds new value 'v' to set 'set' [static] +*/ void QtxSets::add( ValueSet& set, const QtxValue& v ) { if( v.isValid() && set.contains( v )==0 ) set.append( v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Adds values from set 's2' to set 's1' +*/ void QtxSets::add( ValueSet& s1, const ValueSet& s2 ) { ValueSet::const_iterator anIt = s2.begin(), @@ -748,19 +740,17 @@ void QtxSets::add( ValueSet& s1, const ValueSet& s2 ) add( s1, *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes value 'v' from set 'set' +*/ void QtxSets::remove( ValueSet& set, const QtxValue& v ) { set.remove( v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes values of set 's2' from set 's1' +*/ void QtxSets::remove( ValueSet& s1, const ValueSet& s2 ) { ValueSet::const_iterator anIt = s2.begin(), @@ -769,10 +759,13 @@ void QtxSets::remove( ValueSet& s1, const ValueSet& s2 ) s1.remove( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxSets::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { QtxParser::Error err = QtxParser::OK; diff --git a/src/Qtx/QtxStdOperations.h b/src/Qtx/QtxStdOperations.h index 5a8cfd48e..27245e95d 100644 --- a/src/Qtx/QtxStdOperations.h +++ b/src/Qtx/QtxStdOperations.h @@ -25,10 +25,11 @@ #include "Qtx.h" #include "QtxOperations.h" -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxStdOperations + Provides simplified interface for standard operations. + Conatins list of operation names, priority and possible types +*/ class QTX_EXPORT QtxStdOperations : public QtxOperations { public: @@ -52,10 +53,10 @@ private: ListOfTypes myTypes; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxArithmetics + Provides set of arithmetic operations for parser +*/ class QTX_EXPORT QtxArithmetics : public QtxStdOperations { public: @@ -67,10 +68,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxLogic + Provides set of logic operations for parser +*/ class QTX_EXPORT QtxLogic : public QtxStdOperations { public: @@ -82,10 +83,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxFunctions + Provides set of more complex operations for parser (sqrt, sin, cos, etc) +*/ class QTX_EXPORT QtxFunctions : public QtxStdOperations { public: @@ -97,10 +98,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxStrings + Provides set of string operations for parser +*/ class QTX_EXPORT QtxStrings : public QtxStdOperations { public: @@ -112,10 +113,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxSets + Provides set of operations with sets for parser +*/ class QTX_EXPORT QtxSets : public QtxStdOperations { public: diff --git a/src/Qtx/QtxTable.cxx b/src/Qtx/QtxTable.cxx index eac69ea60..4c0f1971f 100644 --- a/src/Qtx/QtxTable.cxx +++ b/src/Qtx/QtxTable.cxx @@ -25,6 +25,9 @@ #include +/*! + Constructor +*/ QtxTable::QtxTable( QWidget* parent, const char* name ) : QTable( parent, name ), myHeaderEditor( 0 ), @@ -39,6 +42,9 @@ myEditedSection( -1 ) connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) ); } +/*! + Constructor +*/ QtxTable::QtxTable( int numRows, int numCols, QWidget* parent, const char* name ) : QTable( numRows, numCols, parent, name ), myHeaderEditor( 0 ), @@ -53,15 +59,27 @@ myEditedSection( -1 ) connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) ); } +/*! + Destructor +*/ QtxTable::~QtxTable() { } +/*! + \return true if header is editable + \param o - header orientation +*/ bool QtxTable::headerEditable( Orientation o ) const { return myHeaderEditable.contains( o ) ? myHeaderEditable[o] : false; } +/*! + Changes editable state of header + \param o - header orientation + \param on - new state +*/ void QtxTable::setHeaderEditable( Orientation o, const bool on ) { if ( headerEditable( o ) == on ) @@ -80,16 +98,28 @@ void QtxTable::setHeaderEditable( Orientation o, const bool on ) hdr->removeEventFilter( this ); } +/*! + Starts edition of header + \param o - header orientation + \param sec - column/row +*/ bool QtxTable::editHeader( Orientation o, const int sec ) { return beginHeaderEdit( o, sec ); } +/*! + Finishes edition of header + \param accept - whether new value must be accepted +*/ void QtxTable::endEditHeader( const bool accept ) { endHeaderEdit( accept ); } +/*! + Finishes edition and hides table +*/ void QtxTable::hide() { endHeaderEdit(); @@ -97,6 +127,11 @@ void QtxTable::hide() QTable::hide(); } +/*! + Custom event filter + Starts edition of header by double click + Finishes edition by escape/return/enter pressing +*/ bool QtxTable::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == QEvent::MouseButtonDblClick ) @@ -145,17 +180,26 @@ bool QtxTable::eventFilter( QObject* o, QEvent* e ) return QTable::eventFilter( o, e ); } +/*! + SLOT: called on scroll +*/ void QtxTable::onScrollBarMoved( int ) { updateHeaderEditor(); } +/*! + SLOT: called on header size changing +*/ void QtxTable::onHeaderSizeChange( int, int, int ) { if ( sender() == myEditedHeader ) updateHeaderEditor(); } +/*! + Custom resize event handler +*/ void QtxTable::resizeEvent( QResizeEvent* e ) { QTable::resizeEvent( e ); @@ -163,6 +207,11 @@ void QtxTable::resizeEvent( QResizeEvent* e ) updateHeaderEditor(); } +/*! + Starts edition of header + \param o - header orientation + \param sec - column/row +*/ bool QtxTable::beginHeaderEdit( Orientation o, const int section ) { if ( !headerEditable( o ) || !header( o ) || !header( o )->isVisibleTo( this ) ) @@ -202,6 +251,10 @@ bool QtxTable::beginHeaderEdit( Orientation o, const int section ) return true; } +/*! + Finishes edition of header + \param accept - whether new value must be accepted +*/ void QtxTable::endHeaderEdit( const bool accept ) { if ( !isHeaderEditing() ) @@ -231,11 +284,20 @@ void QtxTable::endHeaderEdit( const bool accept ) } } +/*! + \return true if header is being edited +*/ bool QtxTable::isHeaderEditing() const { return myHeaderEditor && myEditedHeader && myEditedSection != -1; } +/*! + Creates and \return header editor + \param hdr - header + \param sec - column/row + \param init - init editor with value +*/ QWidget* QtxTable::createHeaderEditor( QHeader* hdr, const int sec, const bool init ) { QLineEdit* ed = new QLineEdit( 0 ); @@ -246,6 +308,12 @@ QWidget* QtxTable::createHeaderEditor( QHeader* hdr, const int sec, const bool i return ed; } +/*! + Initialize editor with value + \param hdr - header + \param sec - column/row + \param editor - editor +*/ void QtxTable::setHeaderContentFromEditor( QHeader* hdr, const int sec, QWidget* editor ) { if ( !hdr || !editor ) @@ -255,11 +323,20 @@ void QtxTable::setHeaderContentFromEditor( QHeader* hdr, const int sec, QWidget* hdr->setLabel( sec, ((QLineEdit*)editor)->text() ); } +/*! + \return header + \param o - orientation +*/ QHeader* QtxTable::header( Orientation o ) const { return o == Horizontal ? horizontalHeader() : verticalHeader(); } +/*! + Starts edition of header + \param o - header orientation + \param p - point +*/ void QtxTable::beginHeaderEdit( Orientation o, const QPoint& p ) { QHeader* hdr = header( o ); @@ -272,6 +349,11 @@ void QtxTable::beginHeaderEdit( Orientation o, const QPoint& p ) beginHeaderEdit( o, sec ); } +/*! + \return rectangle of header section + \param hdr - header + \param sec - column/row +*/ QRect QtxTable::headerSectionRect( QHeader* hdr, const int sec ) const { QRect r( -1, -1, -1, -1 ); @@ -286,6 +368,9 @@ QRect QtxTable::headerSectionRect( QHeader* hdr, const int sec ) const return r; } +/*! + Updates header editor +*/ void QtxTable::updateHeaderEditor() { if ( !myHeaderEditor || !myEditedHeader || myEditedSection < 0 ) diff --git a/src/Qtx/QtxToolBar.cxx b/src/Qtx/QtxToolBar.cxx index b5f32845e..3ffb69750 100644 --- a/src/Qtx/QtxToolBar.cxx +++ b/src/Qtx/QtxToolBar.cxx @@ -66,6 +66,9 @@ private: bool myVisible; }; +/*! + Constructor +*/ QtxToolBar::Watcher::Watcher( QtxToolBar* cont ) : QObject( cont ), myCont( cont ), @@ -81,6 +84,9 @@ myEmpty( true ) installFilters(); } +/*! + Custom event filter +*/ bool QtxToolBar::Watcher::eventFilter( QObject* o, QEvent* e ) { if ( o == myCont && e->type() == QEvent::ChildInserted ) @@ -108,6 +114,9 @@ bool QtxToolBar::Watcher::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Sets internal visibility state to true +*/ void QtxToolBar::Watcher::shown( QtxToolBar* tb ) { if ( tb != myCont ) @@ -116,6 +125,9 @@ void QtxToolBar::Watcher::shown( QtxToolBar* tb ) myVisible = true; } +/*! + Sets internal visibility state to false +*/ void QtxToolBar::Watcher::hided( QtxToolBar* tb ) { if ( tb != myCont ) @@ -124,6 +136,9 @@ void QtxToolBar::Watcher::hided( QtxToolBar* tb ) myVisible = false; } +/*! + Shows corresponding QtxToolBar +*/ void QtxToolBar::Watcher::showContainer() { if ( !myCont ) @@ -135,6 +150,9 @@ void QtxToolBar::Watcher::showContainer() myCont = cont; } +/*! + Hides corresponding QtxToolBar +*/ void QtxToolBar::Watcher::hideContainer() { if ( !myCont ) @@ -146,6 +164,9 @@ void QtxToolBar::Watcher::hideContainer() myCont = cont; } +/*! + Event handler of custom events +*/ void QtxToolBar::Watcher::customEvent( QCustomEvent* e ) { switch ( e->type() ) @@ -159,6 +180,9 @@ void QtxToolBar::Watcher::customEvent( QCustomEvent* e ) } } +/*! + Installs event filters +*/ void QtxToolBar::Watcher::installFilters() { if ( !myCont ) @@ -176,6 +200,9 @@ void QtxToolBar::Watcher::installFilters() } } +/*! + Update visibility state +*/ void QtxToolBar::Watcher::updateVisibility() { if ( !myCont ) @@ -215,6 +242,9 @@ void QtxToolBar::Watcher::updateVisibility() vis ? showContainer() : hideContainer(); } +/*! + Updates icon +*/ void QtxToolBar::Watcher::updateIcon() { if ( !myCont || !myCont->widget() ) @@ -224,6 +254,9 @@ void QtxToolBar::Watcher::updateIcon() myCont->setIcon( ico ? *ico : QPixmap() ); } +/*! + Updates caption +*/ void QtxToolBar::Watcher::updateCaption() { if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() ) @@ -231,10 +264,8 @@ void QtxToolBar::Watcher::updateCaption() } /*! - Class: QtxToolBar [Public] - Descr: + Constructor */ - QtxToolBar::QtxToolBar( const bool watch, const QString& label, QMainWindow* main, QWidget* parent, bool newLine, const char* name, WFlags f ) : QToolBar( label, main, parent, newLine, name, f ), @@ -245,6 +276,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( const QString& label, QMainWindow* main, QWidget* parent, bool newLine, const char* name, WFlags f ) : QToolBar( label, main, parent, newLine, name, f ), @@ -253,6 +287,9 @@ myStretch( false ) { } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( const bool watch, QMainWindow* main, const char* name ) : QToolBar( main, name ), myWatcher( 0 ), @@ -262,6 +299,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( QMainWindow* main, const char* name ) : QToolBar( main, name ), myWatcher( 0 ), @@ -269,10 +309,17 @@ myStretch( false ) { } +/*! + Destructor +*/ QtxToolBar::~QtxToolBar() { } +/*! + Change the toolbar's main widget + \param wid - new main widget +*/ void QtxToolBar::setWidget( QWidget* wid ) { if ( wid ) @@ -293,11 +340,18 @@ void QtxToolBar::setWidget( QWidget* wid ) } } +/*! + \return true if toolbar is stretchable +*/ bool QtxToolBar::isStretchable() const { return myStretch; } +/*! + Sets stretchable state of toolbar + \param on - new state +*/ void QtxToolBar::setStretchable( const bool on ) { if ( myStretch == on ) @@ -317,6 +371,9 @@ void QtxToolBar::setStretchable( const bool on ) } } +/*! + \return the recommended size for the widget +*/ QSize QtxToolBar::sizeHint() const { QSize sz = QToolBar::sizeHint(); @@ -332,6 +389,9 @@ QSize QtxToolBar::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxToolBar::minimumSizeHint() const { QSize sz = QToolBar::minimumSizeHint(); @@ -347,6 +407,9 @@ QSize QtxToolBar::minimumSizeHint() const return sz; } +/*! + Shows toolbar +*/ void QtxToolBar::show() { if ( myWatcher ) @@ -355,6 +418,9 @@ void QtxToolBar::show() QToolBar::show(); } +/*! + Hides toolbar +*/ void QtxToolBar::hide() { if ( myWatcher ) diff --git a/src/Qtx/QtxToolTip.cxx b/src/Qtx/QtxToolTip.cxx index 5141e127d..ff00db58e 100755 --- a/src/Qtx/QtxToolTip.cxx +++ b/src/Qtx/QtxToolTip.cxx @@ -30,6 +30,9 @@ #define TOOLTIP_SHOW_DELAY 0500 #define TOOLTIP_HIDE_DELAY 7000 +/*! + Constructor +*/ QtxToolTip::QtxToolTip( QWidget* parent ) : QLabel( parent, "", WStyle_Customize | WStyle_NoBorder | WX11BypassWM | WStyle_Tool | WStyle_StaysOnTop | WType_TopLevel ) { @@ -55,10 +58,16 @@ QtxToolTip::QtxToolTip( QWidget* parent ) myShowDelayTime = 5000; } +/*! + Destructor +*/ QtxToolTip::~QtxToolTip() { } +/*! + Custom event filter +*/ bool QtxToolTip::eventFilter( QObject* o, QEvent* e ) { if ( ( e->type() == QEvent::Destroy ) || ( e->type() == QEvent::Close ) || ( e->type() == QEvent::Hide ) ) @@ -106,6 +115,12 @@ bool QtxToolTip::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Shows tool tip + \param aPos - position + \param text - tooltip text + \param aWidgetRegion - rectangle +*/ void QtxToolTip::showTip( const QPoint& aPos, const QString& text, const QRect& aWidgetRegion ) { QFontMetrics theFM = fontMetrics(); @@ -114,6 +129,12 @@ void QtxToolTip::showTip( const QPoint& aPos, const QString& text, const QRect& showTip( QRect( QPoint( aPos.x(), aPos.y() + 10 ), QSize( theWidth, theHeight ) ), text, aWidgetRegion ); } +/*! + Shows tool tip + \param aRegion - tooltip region + \param text - tooltip text + \param aWidgetRegion - widget rectangle +*/ void QtxToolTip::showTip( const QRect& aRegion, const QString& text, const QRect& aWidgetRegion ) { setText( text ); @@ -124,6 +145,9 @@ void QtxToolTip::showTip( const QRect& aRegion, const QString& text, const QRect show(); } +/*! + Hides tooltip +*/ void QtxToolTip::hideTip() { hide(); @@ -131,6 +155,11 @@ void QtxToolTip::hideTip() mySleepTimer->stop(); } +/*! + It is called when there is a possibility that a tool tip should be shown and + must decide whether there is a tool tip for the point p in the widget that this QToolTip object relates to + \param pos - position +*/ void QtxToolTip::maybeTip( const QPoint& pos ) { QString text; @@ -152,12 +181,18 @@ void QtxToolTip::maybeTip( const QPoint& pos ) } } +/*! + SLOT: called when sleep time is out +*/ void QtxToolTip::onSleepTimeOut() { mySleepTimer->stop(); hideTip(); } +/*! + SLOT: called when wake time is out +*/ void QtxToolTip::onWakeUpTimeOut() { myWakeUpTimer->stop(); @@ -167,6 +202,9 @@ void QtxToolTip::onWakeUpTimeOut() maybeTip( pos ); } +/*! + Custom mouse press event handler +*/ void QtxToolTip::mousePressEvent( QMouseEvent* e ) { hideTip(); @@ -177,6 +215,9 @@ void QtxToolTip::mousePressEvent( QMouseEvent* e ) QApplication::sendEvent( reciever, me ); } +/*! + Custom mouse double click event handler +*/ void QtxToolTip::mouseDoubleClickEvent( QMouseEvent* e ) { hideTip(); @@ -187,23 +228,37 @@ void QtxToolTip::mouseDoubleClickEvent( QMouseEvent* e ) QApplication::sendEvent( reciever, me ); } +/*! + Sets wake delay time + \param theTime +*/ void QtxToolTip::setWakeUpDelayTime( int theTime ) { if( !(theTime < 0) ) myWakeUpDelayTime = theTime; } +/*! + Sets show delay time + \param theTime +*/ void QtxToolTip::setShowDelayTime( int theTime ) { if( !(theTime < 0) ) myShowDelayTime = theTime; } +/*! + \return timer measuring time of sleeping +*/ QTimer* QtxToolTip::sleepTimer() const { return mySleepTimer; } +/*! + \return timer measuring time of waking up +*/ QTimer* QtxToolTip::wakeUpTimer() const { return myWakeUpTimer; diff --git a/src/Qtx/QtxWorkspaceAction.cxx b/src/Qtx/QtxWorkspaceAction.cxx index c630ff47d..9b6d98ae6 100644 --- a/src/Qtx/QtxWorkspaceAction.cxx +++ b/src/Qtx/QtxWorkspaceAction.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ QtxWorkspaceAction::QtxWorkspaceAction( QWorkspace* ws, QObject* parent, const char* name ) : QtxAction( tr( "Controls windows into workspace" ), tr( "Workspace management" ), 0, parent, name ), myFlags( Standard ), @@ -45,20 +48,33 @@ myWorkspace( ws ) connect( myItem[VTile], SIGNAL( activated() ), this, SLOT( tileHorizontal() ) ); } +/*! + Destructor +*/ QtxWorkspaceAction::~QtxWorkspaceAction() { } +/*! + \return corresponding workspace +*/ QWorkspace* QtxWorkspaceAction::workspace() const { return myWorkspace; } +/*! + \return set of action flags +*/ int QtxWorkspaceAction::items() const { return myFlags; } +/*! + Sets action flags + \param flags - new set of flags +*/ void QtxWorkspaceAction::setItems( const int flags ) { if ( !flags || flags == myFlags || !( flags & Operations ) ) @@ -67,11 +83,19 @@ void QtxWorkspaceAction::setItems( const int flags ) myFlags = flags; } +/*! + \return true if action contains all flags + \param flags - new set of flags +*/ bool QtxWorkspaceAction::hasItems( const int flags ) const { return ( myFlags & flags ) == flags; } +/*! + \return accelerator of item + \param id - item id +*/ int QtxWorkspaceAction::accel( const int id ) const { int a = 0; @@ -80,6 +104,10 @@ int QtxWorkspaceAction::accel( const int id ) const return a; } +/*! + \return icons of item + \param id - item id +*/ QIconSet QtxWorkspaceAction::iconSet( const int id ) const { QIconSet ico; @@ -88,6 +116,10 @@ QIconSet QtxWorkspaceAction::iconSet( const int id ) const return ico; } +/*! + \return menu text of item + \param id - item id +*/ QString QtxWorkspaceAction::menuText( const int id ) const { QString txt; @@ -96,6 +128,10 @@ QString QtxWorkspaceAction::menuText( const int id ) const return txt; } +/*! + \return status tip of item + \param id - item id +*/ QString QtxWorkspaceAction::statusTip( const int id ) const { QString txt; @@ -104,35 +140,64 @@ QString QtxWorkspaceAction::statusTip( const int id ) const return txt; } +/*! + Changes accelerator of item + \param id - item id + \param a - new accelerator +*/ void QtxWorkspaceAction::setAccel( const int id, const int a ) { if ( myItem.contains( id ) ) myItem[id]->setAccel( a ); } +/*! + Changes icons of item + \param id - item id + \param ico - new icons +*/ void QtxWorkspaceAction::setIconSet( const int id, const QIconSet& ico ) { if ( myItem.contains( id ) ) myItem[id]->setIconSet( ico ); } +/*! + Changes menu text of item + \param id - item id + \param txt - new menu text +*/ void QtxWorkspaceAction::setMenuText( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setMenuText( txt ); } +/*! + Changes status tip of item + \param id - item id + \param txt - new status tip +*/ void QtxWorkspaceAction::setStatusTip( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setStatusTip( txt ); } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxWorkspaceAction::addTo( QWidget* wid ) { return addTo( wid, -1 ); } +/*! + Adds action to widget + \param wid - widget + \param idx - position +*/ bool QtxWorkspaceAction::addTo( QWidget* wid, const int idx ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -153,6 +218,10 @@ bool QtxWorkspaceAction::addTo( QWidget* wid, const int idx ) return true; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxWorkspaceAction::removeFrom( QWidget* wid ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -172,6 +241,10 @@ bool QtxWorkspaceAction::removeFrom( QWidget* wid ) return true; } +/*! + Performs action + \param type - action type +*/ void QtxWorkspaceAction::perform( const int type ) { switch ( type ) @@ -191,6 +264,9 @@ void QtxWorkspaceAction::perform( const int type ) } } +/*! + Performs tile action +*/ void QtxWorkspaceAction::tile() { QWorkspace* ws = workspace(); @@ -200,6 +276,9 @@ void QtxWorkspaceAction::tile() ws->tile(); } +/*! + Performs cascade action +*/ void QtxWorkspaceAction::cascade() { QWorkspace* ws = workspace(); @@ -216,6 +295,9 @@ void QtxWorkspaceAction::cascade() it.current()->resize( int( w * 0.8 ), int( h * 0.8 ) ); } +/*! + Performs tile vertical action +*/ void QtxWorkspaceAction::tileVertical() { QWorkspace* wrkSpace = workspace(); @@ -256,6 +338,9 @@ void QtxWorkspaceAction::tileVertical() } } +/*! + Performs tile horizontal action +*/ void QtxWorkspaceAction::tileHorizontal() { QWorkspace* wrkSpace = workspace(); @@ -295,6 +380,9 @@ void QtxWorkspaceAction::tileHorizontal() } } +/*! + SLOT: called just before the popup menu is displayed, updates popup +*/ void QtxWorkspaceAction::onAboutToShow() { const QObject* obj = sender(); @@ -304,11 +392,18 @@ void QtxWorkspaceAction::onAboutToShow() updatePopup( (QPopupMenu*)obj ); } +/*! + SLOT: called when popup menu is destroyed, removes it from menu +*/ void QtxWorkspaceAction::onPopupDestroyed( QObject* obj ) { myMenu.remove( (QPopupMenu*)obj ); } +/*! + Updates popup + \param pm - popup menu +*/ void QtxWorkspaceAction::checkPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -332,6 +427,10 @@ void QtxWorkspaceAction::checkPopup( QPopupMenu* pm ) } } +/*! + Clears and refills popup and updates state of actions + \param pm - popup menu +*/ void QtxWorkspaceAction::updatePopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -346,6 +445,10 @@ void QtxWorkspaceAction::updatePopup( QPopupMenu* pm ) myItem[VTile]->setEnabled( count ); } +/*! + Clears popup + \param pm - popup menu +*/ int QtxWorkspaceAction::clearPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -365,6 +468,11 @@ int QtxWorkspaceAction::clearPopup( QPopupMenu* pm ) return idx; } +/*! + Fills popup with items + \param pm - popup menu + \param idx - position +*/ void QtxWorkspaceAction::fillPopup( QPopupMenu* pm, const int idx ) { if ( !pm ) @@ -405,6 +513,9 @@ void QtxWorkspaceAction::fillPopup( QPopupMenu* pm, const int idx ) } } +/*! + SLOT: called when popup item corresponding to window is activated, activates window +*/ void QtxWorkspaceAction::onItemActivated( int idx ) { QWorkspace* ws = workspace(); diff --git a/src/Qtx/QtxWorkstack.cxx b/src/Qtx/QtxWorkstack.cxx index 5e01f08e8..c54060631 100644 --- a/src/Qtx/QtxWorkstack.cxx +++ b/src/Qtx/QtxWorkstack.cxx @@ -41,10 +41,8 @@ #define DARK_COLOR_LIGHT 250 /*! - Class: QtxWorkstack [Public] - Descr: + Constructor */ - QtxWorkstack::QtxWorkstack( QWidget* parent ) : QWidget( parent ), myWin( 0 ), @@ -68,10 +66,16 @@ myWorkArea( 0 ) base->addWidget( mySplit ); } +/*! + Destructor +*/ QtxWorkstack::~QtxWorkstack() { } +/*! + \return list of all widgets in all areas +*/ QWidgetList QtxWorkstack::windowList() const { QPtrList lst; @@ -88,16 +92,26 @@ QWidgetList QtxWorkstack::windowList() const return widList; } +/*! + \return list of all widgets in active area +*/ QWidgetList QtxWorkstack::splitWindowList() const { return myArea ? myArea->widgetList() : QWidgetList(); } +/*! + \return active widget +*/ QWidget* QtxWorkstack::activeWindow() const { return myWin; } +/*! + Splits widgets + \param o - orientation (Qt::Orientation) +*/ void QtxWorkstack::split( const int o ) { QtxWorkstackArea* area = myWorkArea; @@ -145,10 +159,10 @@ void QtxWorkstack::split( const int o ) } /*! -* \brief Split workarea of the given widget on two parts. -* \param wid - widget, belonging to this workstack -* \param o - orientation of splitting (Qt::Horizontal or Qt::Vertical) -* \param type - type of splitting, see SplitType enumeration + \brief Split workarea of the given widget on two parts. + \param wid - widget, belonging to this workstack + \param o - orientation of splitting (Qt::Horizontal or Qt::Vertical) + \param type - type of splitting, see SplitType enumeration */ void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType type) { @@ -224,8 +238,8 @@ void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType } /*! -* \brief Put given widget on top of its workarea -* \param wid - widget, belonging to this workstack + \brief Put given widget on top of its workarea + \param wid - widget, belonging to this workstack */ /* void QtxWorkstack::OnTop (QWidget* wid) @@ -249,17 +263,17 @@ void QtxWorkstack::OnTop (QWidget* wid) */ /*! -* \brief Move widget(s) from source workarea into target workarea -* or just reorder widgets inside one workarea. -* \param wid1 - widget from target workarea -* \param wid2 - widget from source workarea -* \param all - if this parameter is TRUE, all widgets from source workarea will -* be moved into the target one, else only the \a wid2 will be moved -* -* Move \a wid2 in target workarea. Put it right after \a wid1. -* If value of boolean argument is TRUE, all widgets from source workarea -* will be moved together with \a wid2, source workarea will be deleted. -* If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place. + \brief Move widget(s) from source workarea into target workarea + or just reorder widgets inside one workarea. + \param wid1 - widget from target workarea + \param wid2 - widget from source workarea + \param all - if this parameter is TRUE, all widgets from source workarea will + be moved into the target one, else only the \a wid2 will be moved + + Move \a wid2 in target workarea. Put it right after \a wid1. + If value of boolean argument is TRUE, all widgets from source workarea + will be moved together with \a wid2, source workarea will be deleted. + If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place. */ void QtxWorkstack::Attract ( QWidget* wid1, QWidget* wid2, const bool all ) { @@ -711,6 +725,9 @@ int QtxWorkstack::setPosition( QWidget* wid, QSplitter* split, const Qt::Orienta return 0; } +/*! + Redistributes space among widgets equally +*/ void QtxWorkstack::distributeSpace( QSplitter* split ) const { if ( !split ) @@ -724,16 +741,25 @@ void QtxWorkstack::distributeSpace( QSplitter* split ) const split->setSizes( szList ); } +/*! + Splits widgets vertically +*/ void QtxWorkstack::splitVertical() { split( Qt::Horizontal ); } +/*! + Splits widgets horizontally +*/ void QtxWorkstack::splitHorizontal() { split( Qt::Vertical ); } +/*! + SLOT: called if action "Rename" is activated, changes caption of widget +*/ void QtxWorkstack::onRename() { if ( !myWorkWin ) @@ -746,6 +772,10 @@ void QtxWorkstack::onRename() myWorkWin->setCaption( newName ); } +/*! + Wraps area into new splitter + \return new splitter +*/ QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area ) { if ( !area ) @@ -774,6 +804,12 @@ QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area ) return wrap; } +/*! + Reparenst and adds widget + \param wid - widget + \param pWid - parent widget + \param after - after widget +*/ void QtxWorkstack::insertWidget( QWidget* wid, QWidget* pWid, QWidget* after ) { if ( !wid || !pWid ) @@ -818,6 +854,10 @@ void QtxWorkstack::onCloseWindow() activeWindow()->close(); } +/*! + SLOT: called on area is destroyed + Sets focus to neighbour area +*/ void QtxWorkstack::onDestroyed( QObject* obj ) { QtxWorkstackArea* area = (QtxWorkstackArea*)obj; @@ -835,6 +875,9 @@ void QtxWorkstack::onDestroyed( QObject* obj ) QApplication::postEvent( this, new QCustomEvent( QEvent::User ) ); } +/*! + SLOT: called on window activating +*/ void QtxWorkstack::onWindowActivated( QWidget* wid ) { const QObject* obj = sender(); @@ -844,6 +887,9 @@ void QtxWorkstack::onWindowActivated( QWidget* wid ) setActiveArea( (QtxWorkstackArea*)obj ); } +/*! + SLOT: called on window deactivating +*/ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area ) { if ( myArea != area ) @@ -866,6 +912,11 @@ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area ) QApplication::postEvent( this, new QCustomEvent( QEvent::User ) ); } +/*! + Creates and shows popup menu for area + \param w - area + \param p - popup position +*/ void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p ) { QtxWorkstackArea* anArea = dynamic_cast( (QObject*)sender() ); @@ -906,6 +957,9 @@ void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p ) myWorkArea = 0; } +/*! + Custom child event handler, inserts widget to active or current area +*/ void QtxWorkstack::childEvent( QChildEvent* e ) { if ( e->inserted() && e->child()->isWidgetType() ) @@ -920,11 +974,18 @@ void QtxWorkstack::childEvent( QChildEvent* e ) QWidget::childEvent( e ); } +/*! + Handler of custom events +*/ void QtxWorkstack::customEvent( QCustomEvent* e ) { updateState(); } +/*! + \return splitter corresponding to area + \param area +*/ QSplitter* QtxWorkstack::splitter( QtxWorkstackArea* area ) const { if ( !area ) @@ -939,6 +1000,12 @@ QSplitter* QtxWorkstack::splitter( QtxWorkstackArea* area ) const return split; } +/*! + Fills list with children splitters + \param split - parent splitter + \param splitList - list to be filled with + \param rec - recursive search of children +*/ void QtxWorkstack::splitters( QSplitter* split, QPtrList& splitList, const bool rec ) const { if ( !split ) @@ -957,6 +1024,12 @@ void QtxWorkstack::splitters( QSplitter* split, QPtrList& splitList, } } +/*! + Fills list with children areas + \param split - parent splitter + \param areaList - list to be filled with + \param rec - recursive search of children +*/ void QtxWorkstack::areas( QSplitter* split, QPtrList& areaList, const bool rec ) const { if ( !split ) @@ -975,11 +1048,17 @@ void QtxWorkstack::areas( QSplitter* split, QPtrList& areaList } } +/*! + \return active area +*/ QtxWorkstackArea* QtxWorkstack::activeArea() const { return myArea; } +/*! + \return active area or current area or create new area of there is no one +*/ QtxWorkstackArea* QtxWorkstack::targetArea() { QtxWorkstackArea* area = activeArea(); @@ -999,6 +1078,9 @@ QtxWorkstackArea* QtxWorkstack::targetArea() return area; } +/*! + \return current area (that has focus) +*/ QtxWorkstackArea* QtxWorkstack::currentArea() const { QtxWorkstackArea* area = 0; @@ -1013,6 +1095,9 @@ QtxWorkstackArea* QtxWorkstack::currentArea() const return area; } +/*! + Creates new area +*/ QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const { QtxWorkstackArea* area = new QtxWorkstackArea( parent ); @@ -1026,6 +1111,10 @@ QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const return area; } +/*! + Sets area as active + \param area +*/ void QtxWorkstack::setActiveArea( QtxWorkstackArea* area ) { QWidget* oldCur = myWin; @@ -1049,6 +1138,10 @@ void QtxWorkstack::setActiveArea( QtxWorkstackArea* area ) emit windowActivated( myWin ); } +/*! + \return neighbour area + \param area - area to search neighbour +*/ QtxWorkstackArea* QtxWorkstack::neighbourArea( QtxWorkstackArea* area ) const { QPtrList lst; @@ -1072,6 +1165,10 @@ QtxWorkstackArea* QtxWorkstack::neighbourArea( QtxWorkstackArea* area ) const return na; } +/*! + \return area covering point + \param p - point +*/ QtxWorkstackArea* QtxWorkstack::areaAt( const QPoint& p ) const { QtxWorkstackArea* area = 0; @@ -1089,11 +1186,17 @@ QtxWorkstackArea* QtxWorkstack::areaAt( const QPoint& p ) const return area; } +/*! + Update +*/ void QtxWorkstack::updateState() { updateState( mySplit ); } +/*! + Update splitters +*/ void QtxWorkstack::updateState( QSplitter* split ) { QPtrList recList; @@ -1133,6 +1236,11 @@ void QtxWorkstack::updateState( QSplitter* split ) split->hide(); } +/*! + Gets splitter info for debug + \param split - splitter + \param info - string to be filled with info +*/ void QtxWorkstack::splitterInfo( QSplitter* split, QString& info ) const { if ( !split ) @@ -1183,16 +1291,18 @@ void QtxWorkstack::splitterInfo( QSplitter* split, QString& info ) const } -// cuts starting '(' symbol and ending '(' symbol +//Cuts starting '(' symbol and ending '(' symbol void cutBrackets( QString& parameters ) { if ( !parameters.isEmpty() && parameters[0] == '(' && parameters[parameters.length()-1] == ')' ) parameters = parameters.mid( 1, parameters.length()-2 ); } -// for strings like "(splitter orientation=0 children=2 sizes=332:478" returns values of -// parameters. For example, getValue( example, "children" ) returns "2" -// getValue( example, "sizes" ) returns "332:478" +/* + for strings like "(splitter orientation=0 children=2 sizes=332:478" returns values of + parameters. For example, getValue( example, "children" ) returns "2" + getValue( example, "sizes" ) returns "332:478" +*/ QString getValue( const QString& str, const QString& valName ) { int i = str.find( valName ); @@ -1207,7 +1317,9 @@ QString getValue( const QString& str, const QString& valName ) return QString( "" ); } -// checks format of splitter parameters string +/* + checks format of splitter parameters string +*/ bool checkFormat( const QString& parameters ) { QString params( parameters ); @@ -1234,7 +1346,9 @@ bool checkFormat( const QString& parameters ) return ok; } -// returns children of splitter in a list. Children are separated by '(' and ')' symbols +/* + Returns children of splitter in a list. Children are separated by '(' and ')' symbols +*/ QStringList getChildren( const QString& str ) { QStringList lst; @@ -1290,7 +1404,9 @@ QWidget* getView( const QWidget* parent, const QString& aName ) return view; } -// installs a splitter described by given parameters string +/*! + Installs a splitter described by given parameters string +*/ void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters, QMap< QSplitter*, QValueList >& sMap ) { if ( !::checkFormat( parameters ) ) { @@ -1348,7 +1464,9 @@ void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters, } } -// Restore workstack's configuration stored in 'parameters' string +/*! + Restore workstack's configuration stored in 'parameters' string +*/ QtxWorkstack& QtxWorkstack::operator<<( const QString& parameters ) { // clear the main splitter - remove all child splitters and empty areas from it @@ -1383,9 +1501,11 @@ QtxWorkstack& QtxWorkstack::operator<<( const QString& parameters ) return (*this); } -// Example of string produced by operator>> : -// "(splitter orientation=0 sizes=186:624 (views active='OCCViewer_0_0' 'OCCViewer_0_0') -// (views active='VTKViewer_0_0' 'VTKViewer_0_0'))" +/*! + Example of string produced by operator>> : + "(splitter orientation=0 sizes=186:624 (views active='OCCViewer_0_0' 'OCCViewer_0_0') +/ (views active='VTKViewer_0_0' 'VTKViewer_0_0'))" +*/ QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters ) { splitterInfo( mySplit, outParameters ); @@ -1394,10 +1514,8 @@ QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters ) /*! - Class: QtxWorkstackArea [Internal] - Descr: + Constructor */ - QtxWorkstackArea::QtxWorkstackArea( QWidget* parent ) : QWidget( parent ) { @@ -1432,11 +1550,17 @@ QtxWorkstackArea::QtxWorkstackArea( QWidget* parent ) qApp->installEventFilter( this ); } +/*! + Destructor +*/ QtxWorkstackArea::~QtxWorkstackArea() { qApp->removeEventFilter( this ); } +/*! + \return true if area is empty +*/ bool QtxWorkstackArea::isEmpty() const { bool res = false; @@ -1445,6 +1569,11 @@ bool QtxWorkstackArea::isEmpty() const return !res; } +/*! + Adds widget to area + \param wid - widget + \param idx - index +*/ void QtxWorkstackArea::insertWidget( QWidget* wid, const int idx ) { if ( !wid ) @@ -1479,6 +1608,10 @@ void QtxWorkstackArea::insertWidget( QWidget* wid, const int idx ) wid->setFocus(); } +/*! + Creates and shows popup menu for area + \param p - popup position +*/ void QtxWorkstackArea::onContextMenuRequested( QPoint p ) { const QtxWorkstackTabBar* bar = ::qt_cast( sender() ); @@ -1493,12 +1626,20 @@ void QtxWorkstackArea::onContextMenuRequested( QPoint p ) emit contextMenuRequested( wid, p ); } +/*! + SLOT: called when widget added to area is destroyed, removes widget from area +*/ void QtxWorkstackArea::onWidgetDestroyed() { if ( sender() ) removeWidget( (QWidget*)sender(), false ); } +/*! + Removes widget from area + \param wid - widget + \param del - auto deleting +*/ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del ) { if ( !myList.contains( wid ) ) @@ -1524,6 +1665,9 @@ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del ) updateState(); } +/*! + \return list of visible widgets +*/ QWidgetList QtxWorkstackArea::widgetList() const { QWidgetList lst; @@ -1535,21 +1679,35 @@ QWidgetList QtxWorkstackArea::widgetList() const return lst; } +/*! + \return active widget +*/ QWidget* QtxWorkstackArea::activeWidget() const { return widget( myBar->currentTab() ); } +/*! + Sets widget as active + \param wid - widget +*/ void QtxWorkstackArea::setActiveWidget( QWidget* wid ) { myBar->setCurrentTab( widgetId( wid ) ); } +/*! + \return true if area contains widget + \param wid - widget +*/ bool QtxWorkstackArea::contains( QWidget* wid ) const { return myList.contains( wid ); } +/*! + Shows area +*/ void QtxWorkstackArea::show() { QMap map; @@ -1565,6 +1723,9 @@ void QtxWorkstackArea::show() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + Hides area +*/ void QtxWorkstackArea::hide() { QMap map; @@ -1580,6 +1741,9 @@ void QtxWorkstackArea::hide() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + \return true if area is active +*/ bool QtxWorkstackArea::isActive() const { QtxWorkstack* ws = workstack(); @@ -1589,11 +1753,17 @@ bool QtxWorkstackArea::isActive() const return ws->activeArea() == this; } +/*! + Update active state of tab bar +*/ void QtxWorkstackArea::updateActiveState() { myBar->setActive( isActive() ); } +/*! + \return corresponding workstack +*/ QtxWorkstack* QtxWorkstackArea::workstack() const { QtxWorkstack* ws = 0; @@ -1607,6 +1777,9 @@ QtxWorkstack* QtxWorkstackArea::workstack() const return ws; } +/*! + Custom event filter +*/ bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e ) { if ( o->isWidgetType() ) @@ -1627,17 +1800,28 @@ bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + \return rectangle of area in order to draw drop rectangle on area +*/ QRect QtxWorkstackArea::floatRect() const { QRect r = myStack->geometry(); return QRect( mapToGlobal( r.topLeft() ), mapToGlobal( r.bottomRight() ) ); } +/*! + \return rectangle of tab in order to draw drop rectangle on tab + \param idx - tab index +*/ QRect QtxWorkstackArea::floatTab( const int idx ) const { return myBar->tabRect( idx ); } +/*! + \return tab covering point + \param p - point +*/ int QtxWorkstackArea::tabAt( const QPoint& p ) const { int idx = -1; @@ -1650,6 +1834,9 @@ int QtxWorkstackArea::tabAt( const QPoint& p ) const return idx; } +/*! + Event handler for custom events +*/ void QtxWorkstackArea::customEvent( QCustomEvent* e ) { switch ( e->type() ) @@ -1678,6 +1865,9 @@ void QtxWorkstackArea::customEvent( QCustomEvent* e ) } } +/*! + Custom focus in event handler +*/ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) { QWidget::focusInEvent( e ); @@ -1685,6 +1875,9 @@ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) emit activated( activeWidget() ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) { QWidget::mousePressEvent( e ); @@ -1692,6 +1885,9 @@ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) emit activated( activeWidget() ); } +/*! + SLOT: called if button close is pressed +*/ void QtxWorkstackArea::onClose() { QWidget* wid = activeWidget(); @@ -1699,6 +1895,9 @@ void QtxWorkstackArea::onClose() wid->close(); } +/*! + SLOT: called if tab page is selected +*/ void QtxWorkstackArea::onSelected( int id ) { updateCurrent(); @@ -1706,6 +1905,9 @@ void QtxWorkstackArea::onSelected( int id ) emit activated( activeWidget() ); } +/*! + SLOT: called if active tab page is dragged +*/ void QtxWorkstackArea::onDragActiveTab() { QtxWorkstackChild* c = child( activeWidget() ); @@ -1715,6 +1917,9 @@ void QtxWorkstackArea::onDragActiveTab() new QtxWorkstackDrag( workstack(), c ); } +/*! + SLOT: called on child is destroyed, removes from area +*/ void QtxWorkstackArea::onChildDestroyed( QObject* obj ) { QtxWorkstackChild* child = (QtxWorkstackChild*)obj; @@ -1732,26 +1937,41 @@ void QtxWorkstackArea::onChildDestroyed( QObject* obj ) QApplication::postEvent( this, new QCustomEvent( (QEvent::Type)RemoveWidget, wid ) ); } +/*! + SLOT: called on child is shown +*/ void QtxWorkstackArea::onChildShown( QtxWorkstackChild* c ) { setWidgetShown( c->widget(), true ); } +/*! + SLOT: called on child is hidden +*/ void QtxWorkstackArea::onChildHided( QtxWorkstackChild* c ) { setWidgetShown( c->widget(), false ); } +/*! + SLOT: called on child is activated +*/ void QtxWorkstackArea::onChildActivated( QtxWorkstackChild* c ) { setWidgetActive( c->widget() ); } +/*! + SLOT: called on child caption is changed +*/ void QtxWorkstackArea::onChildCaptionChanged( QtxWorkstackChild* c ) { updateTab( c->widget() ); } +/*! + Raises widget when active tab is changed +*/ void QtxWorkstackArea::updateCurrent() { QMap map; @@ -1767,6 +1987,10 @@ void QtxWorkstackArea::updateCurrent() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + Updates tab + \param wid - tab widget +*/ void QtxWorkstackArea::updateTab( QWidget* wid ) { QTab* tab = myBar->tab( widgetId( wid ) ); @@ -1785,6 +2009,10 @@ void QtxWorkstackArea::updateTab( QWidget* wid ) tab->setText( wid->caption() ); } +/*! + \return widget + \param id - widget id +*/ QWidget* QtxWorkstackArea::widget( const int id ) const { QWidget* wid = 0; @@ -1796,6 +2024,10 @@ QWidget* QtxWorkstackArea::widget( const int id ) const return wid; } +/*! + \return widget id + \param wid - widget +*/ int QtxWorkstackArea::widgetId( QWidget* wid ) const { int id = -1; @@ -1804,6 +2036,10 @@ int QtxWorkstackArea::widgetId( QWidget* wid ) const return id; } +/*! + \return true if widget is visible + \param wid - widget +*/ bool QtxWorkstackArea::widgetVisibility( QWidget* wid ) const { bool res = false; @@ -1812,6 +2048,10 @@ bool QtxWorkstackArea::widgetVisibility( QWidget* wid ) const return res; } +/*! + Sets widget as active + \param wid - widget +*/ void QtxWorkstackArea::setWidgetActive( QWidget* wid ) { int id = widgetId( wid ); @@ -1821,6 +2061,11 @@ void QtxWorkstackArea::setWidgetActive( QWidget* wid ) myBar->setCurrentTab( id ); } +/*! + Shows/hides widget + \param wid - widget + \param on - new shown state +*/ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on ) { if ( isBlocked( wid ) || !myInfo.contains( wid ) || myInfo[wid].vis == on ) @@ -1830,6 +2075,9 @@ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on ) updateState(); } +/*! + Update +*/ void QtxWorkstackArea::updateState() { bool updBar = myBar->isUpdatesEnabled(); @@ -1931,6 +2179,9 @@ void QtxWorkstackArea::updateState() } } +/*! + \return first unshared widget id +*/ int QtxWorkstackArea::generateId() const { QMap map; @@ -1945,11 +2196,20 @@ int QtxWorkstackArea::generateId() const return id; } +/*! + \return true if widget is blocked + \param wid - widget +*/ bool QtxWorkstackArea::isBlocked( QWidget* wid ) const { return myBlock.contains( wid ); } +/*! + Blocks widget + \param wid - widget + \param on - new blocked state +*/ void QtxWorkstackArea::setBlocked( QWidget* wid, const bool on ) { if ( on ) @@ -1958,6 +2218,10 @@ void QtxWorkstackArea::setBlocked( QWidget* wid, const bool on ) myBlock.remove( wid ); } +/*! + \return child corresponding to widget + \param wid - widget +*/ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const { QtxWorkstackChild* res = 0; @@ -1967,10 +2231,8 @@ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const } /*! - Class: QtxWorkstackChild [Internal] - Descr: + Constructor */ - QtxWorkstackChild::QtxWorkstackChild( QWidget* wid, QWidget* parent ) : QHBox( parent ), myWidget( wid ) @@ -1981,6 +2243,9 @@ myWidget( wid ) connect( myWidget, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + Destructor +*/ QtxWorkstackChild::~QtxWorkstackChild() { qApp->removeEventFilter( this ); @@ -1993,11 +2258,17 @@ QtxWorkstackChild::~QtxWorkstackChild() disconnect( widget(), SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + \return corresponding widget +*/ QWidget* QtxWorkstackChild::widget() const { return myWidget; } +/*! + Custom event filter +*/ bool QtxWorkstackChild::eventFilter( QObject* o, QEvent* e ) { if ( o->isWidgetType() ) @@ -2017,6 +2288,9 @@ bool QtxWorkstackChild::eventFilter( QObject* o, QEvent* e ) return QHBox::eventFilter( o, e ); } +/*! + SLOT: called on object is destroyed +*/ void QtxWorkstackChild::onDestroyed( QObject* obj ) { if ( obj != widget() ) @@ -2026,6 +2300,9 @@ void QtxWorkstackChild::onDestroyed( QObject* obj ) deleteLater(); } +/*! + Custom child event handler +*/ void QtxWorkstackChild::childEvent( QChildEvent* e ) { if ( e->type() == QEvent::ChildRemoved && e->child() == widget() ) @@ -2037,20 +2314,25 @@ void QtxWorkstackChild::childEvent( QChildEvent* e ) } /*! - Class: QtxWorkstackTabBar [Internal] - Descr: + Constructor */ - QtxWorkstackTabBar::QtxWorkstackTabBar( QWidget* parent ) : QTabBar( parent ), myId( -1 ) { } +/*! + Destructor +*/ QtxWorkstackTabBar::~QtxWorkstackTabBar() { } +/*! + Sets tab bar as active or inactive + \param on - new active state +*/ void QtxWorkstackTabBar::setActive( const bool on ) { QFont aFont = font(); @@ -2072,6 +2354,10 @@ void QtxWorkstackTabBar::setActive( const bool on ) update(); } +/*! + \return tab rectangle + \param idx - tab index +*/ QRect QtxWorkstackTabBar::tabRect( const int idx ) const { QRect r; @@ -2100,6 +2386,9 @@ QRect QtxWorkstackTabBar::tabRect( const int idx ) const return r; } +/*! + Custom mouse move event handler +*/ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e ) { if ( myId != -1 && !tab( myId )->rect().contains( e->pos() ) ) @@ -2111,6 +2400,9 @@ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e ) QTabBar::mouseMoveEvent( e ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) { QTabBar::mousePressEvent( e ); @@ -2119,6 +2411,9 @@ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) myId = currentTab(); } +/*! + Custom mouse release event handler +*/ void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e ) { QTabBar::mouseReleaseEvent( e ); @@ -2129,12 +2424,18 @@ void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e ) emit contextMenuRequested( e->globalPos() ); } +/*! + Custom context menu event handler +*/ void QtxWorkstackTabBar::contextMenuEvent( QContextMenuEvent* e ) { if ( e->reason() != QContextMenuEvent::Mouse ) emit contextMenuRequested( e->globalPos() ); } +/*! + Draws label of tab bar +*/ void QtxWorkstackTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const { if ( currentTab() != t->identifier() ) @@ -2147,10 +2448,8 @@ void QtxWorkstackTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool } /*! - Class: QtxWorkstackDrag [Internal] - Descr: + Constructor */ - QtxWorkstackDrag::QtxWorkstackDrag( QtxWorkstack* ws, QtxWorkstackChild* child ) : QObject( 0 ), myWS( ws ), @@ -2162,6 +2461,9 @@ myChild( child ) qApp->installEventFilter( this ); } +/*! + Destructor +*/ QtxWorkstackDrag::~QtxWorkstackDrag() { qApp->removeEventFilter( this ); @@ -2169,6 +2471,9 @@ QtxWorkstackDrag::~QtxWorkstackDrag() endDrawRect(); } +/*! + Custom event filter +*/ bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e ) { switch ( e->type() ) @@ -2188,6 +2493,10 @@ bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e ) return true; } +/*! + Updates internal field with widget-target for dropping + \param p - current point of dragging +*/ void QtxWorkstackDrag::updateTarget( const QPoint& p ) { int tab = -1; @@ -2195,6 +2504,11 @@ void QtxWorkstackDrag::updateTarget( const QPoint& p ) setTarget( area, tab ); } +/*! + \return target area for dropping by point + \param p - current point of dragging + \param tab - index of tab to dropping +*/ QtxWorkstackArea* QtxWorkstackDrag::detectTarget( const QPoint& p, int& tab ) const { if ( p.isNull() ) @@ -2206,6 +2520,11 @@ QtxWorkstackArea* QtxWorkstackDrag::detectTarget( const QPoint& p, int& tab ) co return area; } +/*! + Changes target area for dropping + \param area - new target area + \param tab - tab index +*/ void QtxWorkstackDrag::setTarget( QtxWorkstackArea* area, const int tab ) { if ( !area || ( myArea == area && tab == myTab ) ) @@ -2223,12 +2542,18 @@ void QtxWorkstackDrag::setTarget( QtxWorkstackArea* area, const int tab ) drawRect(); } +/*! + Called on widget drop, inserts dropped widget to area +*/ void QtxWorkstackDrag::dropWidget() { if ( myArea ) myArea->insertWidget( myChild->widget(), myTab ); } +/*! + Draws float rect +*/ void QtxWorkstackDrag::drawRect() { if ( !myPainter || !myArea ) @@ -2253,12 +2578,18 @@ void QtxWorkstackDrag::drawRect() myPainter->drawRect( tr ); } +/*! + Deletes internal painter +*/ void QtxWorkstackDrag::endDrawRect() { delete myPainter; myPainter = 0; } +/*! + Initialize internal painter +*/ void QtxWorkstackDrag::startDrawRect() { if ( myPainter ) diff --git a/src/Qtx/QtxWorkstackAction.cxx b/src/Qtx/QtxWorkstackAction.cxx index c26a9b0aa..3bc06761a 100644 --- a/src/Qtx/QtxWorkstackAction.cxx +++ b/src/Qtx/QtxWorkstackAction.cxx @@ -26,6 +26,9 @@ #include #include +/*! + Constructor +*/ QtxWorkstackAction::QtxWorkstackAction( QtxWorkstack* ws, QObject* parent, const char* name ) : QtxAction( tr( "Controls windows into workstack" ), tr( "Workstack management" ), 0, parent, name ), myFlags( Standard ), @@ -40,20 +43,33 @@ myWorkstack( ws ) connect( myItem[HSplit], SIGNAL( activated() ), ws, SLOT( splitHorizontal() ) ); } +/*! + Destructor +*/ QtxWorkstackAction::~QtxWorkstackAction() { } +/*! + \return corresponding workstack +*/ QtxWorkstack* QtxWorkstackAction::workstack() const { return myWorkstack; } +/*! + \return set of action flags +*/ int QtxWorkstackAction::items() const { return myFlags; } +/*! + Sets action flags + \param flags - new set of flags +*/ void QtxWorkstackAction::setItems( const int flags ) { if ( !flags || flags == myFlags || !( flags & Split ) ) @@ -62,11 +78,19 @@ void QtxWorkstackAction::setItems( const int flags ) myFlags = flags; } +/*! + \return true if action contains all flags + \param flags - new set of flags +*/ bool QtxWorkstackAction::hasItems( const int flags ) const { return ( myFlags & flags ) == flags; } +/*! + \return accelerator of item + \param id - item id +*/ int QtxWorkstackAction::accel( const int id ) const { int a = 0; @@ -75,6 +99,10 @@ int QtxWorkstackAction::accel( const int id ) const return a; } +/*! + \return icons of item + \param id - item id +*/ QIconSet QtxWorkstackAction::iconSet( const int id ) const { QIconSet ico; @@ -83,6 +111,10 @@ QIconSet QtxWorkstackAction::iconSet( const int id ) const return ico; } +/*! + \return menu text of item + \param id - item id +*/ QString QtxWorkstackAction::menuText( const int id ) const { QString txt; @@ -91,6 +123,10 @@ QString QtxWorkstackAction::menuText( const int id ) const return txt; } +/*! + \return status tip of item + \param id - item id +*/ QString QtxWorkstackAction::statusTip( const int id ) const { QString txt; @@ -99,35 +135,64 @@ QString QtxWorkstackAction::statusTip( const int id ) const return txt; } +/*! + Changes accelerator of item + \param id - item id + \param a - new accelerator +*/ void QtxWorkstackAction::setAccel( const int id, const int a ) { if ( myItem.contains( id ) ) myItem[id]->setAccel( a ); } +/*! + Changes icons of item + \param id - item id + \param ico - new icons +*/ void QtxWorkstackAction::setIconSet( const int id, const QIconSet& ico ) { if ( myItem.contains( id ) ) myItem[id]->setIconSet( ico ); } +/*! + Changes menu text of item + \param id - item id + \param txt - new menu text +*/ void QtxWorkstackAction::setMenuText( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setMenuText( txt ); } +/*! + Changes status tip of item + \param id - item id + \param txt - new status tip +*/ void QtxWorkstackAction::setStatusTip( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setStatusTip( txt ); } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxWorkstackAction::addTo( QWidget* wid ) { return addTo( wid, -1 ); } +/*! + Adds action to widget + \param wid - widget + \param idx - position +*/ bool QtxWorkstackAction::addTo( QWidget* wid, const int idx ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -148,6 +213,10 @@ bool QtxWorkstackAction::addTo( QWidget* wid, const int idx ) return true; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxWorkstackAction::removeFrom( QWidget* wid ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -167,6 +236,10 @@ bool QtxWorkstackAction::removeFrom( QWidget* wid ) return true; } +/*! + Performs action + \param type - action type +*/ void QtxWorkstackAction::perform( const int type ) { switch ( type ) @@ -180,6 +253,9 @@ void QtxWorkstackAction::perform( const int type ) } } +/*! + SLOT: called just before the popup menu is displayed, updates popup +*/ void QtxWorkstackAction::onAboutToShow() { const QObject* obj = sender(); @@ -195,11 +271,18 @@ void QtxWorkstackAction::onAboutToShow() updatePopup( (QPopupMenu*)obj ); } +/*! + SLOT: called when popup menu is destroyed, removes it from menu +*/ void QtxWorkstackAction::onPopupDestroyed( QObject* obj ) { myMenu.remove( (QPopupMenu*)obj ); } +/*! + Updates popup + \param pm - popup menu +*/ void QtxWorkstackAction::checkPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -223,6 +306,10 @@ void QtxWorkstackAction::checkPopup( QPopupMenu* pm ) } } +/*! + Clears and refills popup and updates state of actions + \param pm - popup menu +*/ void QtxWorkstackAction::updatePopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -235,6 +322,10 @@ void QtxWorkstackAction::updatePopup( QPopupMenu* pm ) myItem[HSplit]->setEnabled( count > 1 ); } +/*! + Clears popup + \param pm - popup menu +*/ int QtxWorkstackAction::clearPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -254,6 +345,11 @@ int QtxWorkstackAction::clearPopup( QPopupMenu* pm ) return idx; } +/*! + Fills popup with items + \param pm - popup menu + \param idx - position +*/ void QtxWorkstackAction::fillPopup( QPopupMenu* pm, const int idx ) { if ( !pm ) @@ -294,6 +390,9 @@ void QtxWorkstackAction::fillPopup( QPopupMenu* pm, const int idx ) } } +/*! + SLOT: called when popup item corresponding to window is activated, activates window +*/ void QtxWorkstackAction::onItemActivated( int idx ) { QtxWorkstack* ws = workstack(); diff --git a/src/RegistryDisplay/HelpWindow.cxx b/src/RegistryDisplay/HelpWindow.cxx index a75b6d4e0..79d6fdf19 100755 --- a/src/RegistryDisplay/HelpWindow.cxx +++ b/src/RegistryDisplay/HelpWindow.cxx @@ -36,6 +36,9 @@ using namespace std; +/*! + Constructor +*/ HelpWindow::HelpWindow(QWidget* parent, const char* name ) : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) { diff --git a/src/RegistryDisplay/IntervalWindow.cxx b/src/RegistryDisplay/IntervalWindow.cxx index 9f1a5d212..7326dadf2 100755 --- a/src/RegistryDisplay/IntervalWindow.cxx +++ b/src/RegistryDisplay/IntervalWindow.cxx @@ -20,6 +20,9 @@ #define SPACING_SIZE 6 #define MIN_SPIN_WIDTH 100 +/*! + Constructor +*/ IntervalWindow::IntervalWindow ( QWidget* parent ) : QDialog( parent, "IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) { @@ -73,8 +76,13 @@ IntervalWindow::IntervalWindow ( QWidget* parent ) END_OF("IntervalWindow constructor") } + +/*! + Destructor +*/ IntervalWindow::~IntervalWindow() {} -/* + +/*! Sets start interval size */ void IntervalWindow::setValue(const int size) @@ -82,7 +90,7 @@ void IntervalWindow::setValue(const int size) mySpinBox->setValue(size); } -/* +/*! Gets interval size */ int IntervalWindow::getValue() @@ -90,7 +98,7 @@ int IntervalWindow::getValue() return mySpinBox->value(); } -/* +/*! gets a pointer to myButtonOk */ QPushButton* IntervalWindow::Ok() @@ -98,7 +106,7 @@ QPushButton* IntervalWindow::Ok() return myButtonOk; } -/* +/*! gets a pointer to myButtonCancel */ QPushButton* IntervalWindow::Cancel() diff --git a/src/RegistryDisplay/Makefile.in b/src/RegistryDisplay/Makefile.in index aa0a8550e..77f61b068 100755 --- a/src/RegistryDisplay/Makefile.in +++ b/src/RegistryDisplay/Makefile.in @@ -52,8 +52,8 @@ LIB_MOC = RegWidget.h LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl -CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS+=$(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil +CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS) +LDFLAGS+=$(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil @CONCLUDE@ diff --git a/src/RegistryDisplay/RegWidget.cxx b/src/RegistryDisplay/RegWidget.cxx index 0425cc268..5dadc9d9d 100755 --- a/src/RegistryDisplay/RegWidget.cxx +++ b/src/RegistryDisplay/RegWidget.cxx @@ -353,8 +353,10 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) a.append( QString( " )
    " ) + tr( "in directory" ) + QString( " " )); a.append( BOLD( c_info.cdir ) ); + time_t aTime; a.append( QString( "
    " ) + tr( "begins" ) + QString( " " ) ); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; a.append( BOLD( t1 ) ); delete [] t1; @@ -362,7 +364,8 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) if (c_info.tc_hello != 0 ) { - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; a.append( tr( "last signal" ) + QString(" : ") ); a.append( BOLD( t2 ) ); @@ -371,7 +374,8 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) } if ((c_info.tc_end - c_info.difftime) != 0) { - char * t3 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t3 = (char * )duplicate(ctime(&aTime)); t3 [strlen(t3) -1 ] = ' '; a.append( tr( "ends" ) + QString( " " ) ); a.append( BOLD( t3 ) ); @@ -459,6 +463,7 @@ void RegWidget::InfoHistory() _history->clear(); try { + time_t aTime; _serverhistory = _VarComponents->history(); for (CORBA::ULong i=0; i<_serverhistory->length(); i++) { @@ -466,9 +471,11 @@ void RegWidget::InfoHistory() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -499,6 +506,7 @@ void RegWidget::InfoReg() _clients->clear(); try { + time_t aTime; _serverclients = _VarComponents->getall(); for (CORBA::ULong i=0; i<_serverclients->length(); i++) { @@ -506,9 +514,11 @@ void RegWidget::InfoReg() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -563,6 +573,9 @@ void RegWidget::slotSelectRefresh() END_OF("slotSelectRefresh"); } +/*! + SLOT: called when button OK is clicked in interval window +*/ void RegWidget::slotIntervalOk() { BEGIN_OF("slotIntervalOk"); diff --git a/src/ResExporter/Makefile.in b/src/ResExporter/Makefile.in index d14c977ba..572127384 100755 --- a/src/ResExporter/Makefile.in +++ b/src/ResExporter/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vadim SANDLER (OCN) # Module : SalomeApp diff --git a/src/ResExporter/ResourceExporter.cxx b/src/ResExporter/ResourceExporter.cxx index 29922a2cd..92ae3ace8 100644 --- a/src/ResExporter/ResourceExporter.cxx +++ b/src/ResExporter/ResourceExporter.cxx @@ -1,27 +1,45 @@ -//====================================================================================================== -// File: ResourceExporter.cxx -// Created: 27/06/05 -// Author: Vadim SANDLER -// Copyright (C) CEA 2005 +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D // -// This tool provides command-line interface allowing to modify user preferences. -// The tool can be used by the compilation procedures in order to set default preferences for the module. +// 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. // -// Usage: -// ResourceExporter -// Parameters have the following format: -// '
    :=' - to set for the user -// preference from the
    section; -// '
    :+=[|]' - the is appended to the current value -// of the preference from the
    section; -// separator is used to concatenate old and new values, -// by default comma (',') symbol is used -// '-
    :' - to remove user preference from the
    -// section. Note that only use preference file is -// influenced, you may need to use '
    :=""' -// option -// The number of parameters is limeted only by maximum possible length of the command line. -//====================================================================================================== +// 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/ +// +/*! + File: ResourceExporter.cxx + Created: 27/06/05 + Author: Vadim SANDLER + Copyright (C) CEA 2005 + + This tool provides command-line interface allowing to modify user preferences. + The tool can be used by the compilation procedures in order to set default preferences for the module. + + Usage: + ResourceExporter + Parameters have the following format: + '
    :=' - to set for the user + preference from the
    section; + '
    :+=[|]' - the is appended to the current value + of the preference from the
    section; + separator is used to concatenate old and new values, + by default comma (',') symbol is used + '-
    :' - to remove user preference from the
    + section. Note that only use preference file is + influenced, you may need to use '
    :=""' + option + The number of parameters is limeted only by maximum possible length of the command line. +*/ #include "SUIT_ResourceMgr.h" #include @@ -30,9 +48,9 @@ #include #include -//============================================================ -// salomeVersion(): get the SALOME version number -//============================================================ +/*! + \return the SALOME version number +*/ static QString salomeVersion() { QString path( ::getenv( "GUI_ROOT_DIR" ) ); @@ -62,9 +80,9 @@ static QString salomeVersion() return ver; } -//============================================================ -// help(): print the help information -//============================================================ +/*! + print the help information +*/ static void help() { std::cout << "" << std::endl; @@ -87,9 +105,9 @@ static void help() std::cout << "" << std::endl; } -//============================================================ -// main(): application main() function -//============================================================ +/*! + application main() function +*/ int main( int argc, char** argv ) { QApplication app( argc, argv ); diff --git a/src/SALOME_PY/Makefile.in b/src/SALOME_PY/Makefile.in index a9bd30e95..7101c82d4 100755 --- a/src/SALOME_PY/Makefile.in +++ b/src/SALOME_PY/Makefile.in @@ -44,7 +44,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ SALOME_Exception.idl \ SALOME_GenericObj.idl -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -DHAVE_CONFIG_H +CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -DHAVE_CONFIG_H LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeApp -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython # -lVTKViewer diff --git a/src/SALOME_PY/SalomePy.cxx b/src/SALOME_PY/SalomePy.cxx index 69ef49106..c12d61c24 100755 --- a/src/SALOME_PY/SalomePy.cxx +++ b/src/SALOME_PY/SalomePy.cxx @@ -45,15 +45,15 @@ using namespace std; -////////////////////////////////////////////////////////////////////////////// -// VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) -// All methods are implemented using Event mechanism: -// - getRenderer() -// - getRenderWindow() -// - getRenderWindowInteractor() -// These methods open new VTK viewer if there is no one opened. -// In case of error methods return None object in Python. -////////////////////////////////////////////////////////////////////////////// +/*! + VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) + All methods are implemented using Event mechanism: + - getRenderer() + - getRenderWindow() + - getRenderWindowInteractor() + These methods open new VTK viewer if there is no one opened. + In case of error methods return None object in Python. +*/ static PyObject* GetPyClass(const char* theClassName){ static PyObject *aVTKModule = NULL; diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in index d5481f52a..7104c8601 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in @@ -63,7 +63,7 @@ LIB_CLIENT_IDL = SALOME_Exception.idl \ SALOME_ContainerManager.idl \ SALOME_Component.idl -CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome -D__CALL_OLD_METHODS__ +CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) -D__CALL_OLD_METHODS__ LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS) LDFLAGS += -lPyInterp -lSalomeApp diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx index 0593d7784..b761e719a 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx @@ -16,14 +16,6 @@ // // See http://www.salome-platform.org/ // -//============================================================================= -// File : SALOME_PYQT_Module.cxx -// Created : 25/04/05 -// Author : Vadim SANDLER -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #include "SALOME_PYQT_Module.h" @@ -43,6 +35,7 @@ #include #include #include +#include #include #include "SALOME_PYQT_SipDefs.h" @@ -59,15 +52,16 @@ using namespace std; -/////////////////////////////////////////////////////////////////////////////// -// Default name of the module, replaced at the moment of module creation +/*! + \var __DEFAULT_NAME__ - Default name of the module, replaced at the moment of module creation +*/ const char* __DEFAULT_NAME__ = "SALOME_PYQT_Module"; -/////////////////////////////////////////////////////////////////////////////// -// Default menu group number +/*! + \var __DEFAULT_GROUP__ - Default menu group number +*/ const int __DEFAULT_GROUP__ = 40; -/////////////////////////////////////////////////////////////////////////////// // If __CALL_OLD_METHODS__ macro is not defined the invoking of obsolete Python // module's methods like setSetting(), definePopup(), etc. is blocked. // This macro is defined by default (in Makefile) @@ -77,32 +71,33 @@ const bool IsCallOldMethods = true; const bool IsCallOldMethods = false; #endif -/////////////////////////////////////////////////////////////////////////////// // NB: Python requests. // General rule for Python requests created by SALOME_PYQT_Module: // all requests should be executed SYNCHRONOUSLY within the main GUI thread. // However, it is obligatory that ANY Python call is wrapped with a request object, // so that ALL Python API calls are serialized with PyInterp_Dispatcher. -/////////////////////////////////////////////////////////////////////////////// -//============================================================================= -// The class for parsing of the XML resource files. -// Used for backward compatibility with existing Python modules. -//============================================================================= +/*! + \class SALOME_PYQT_XmlHandler + The class for parsing of the XML resource files. + Used for backward compatibility with existing Python modules. +*/ class SALOME_PYQT_XmlHandler { public: SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module, const QString& fileName ); void createActions(); + void clearActions(); void createPopup ( QPopupMenu* menu, const QString& context, const QString& parent, const QString& object ); protected: - void createToolBar ( QDomNode& parentNode ); - void createMenu ( QDomNode& parentNode, - const int parentMenuId = -1 ); + void createToolBar ( QDomNode& parentNode ); + void createMenu ( QDomNode& parentNode, + const int parentMenuId = -1, + QPopupMenu* parentPopup = 0 ); void insertPopupItems( QDomNode& parentNode, QPopupMenu* menu ); @@ -110,12 +105,13 @@ protected: private: SALOME_PYQT_Module* myModule; QDomDocument myDoc; + QStringList myMenuItems; + QStringList myCurrentMenu; + bool myMenuCreated; }; -//============================================================================= // SALOME_PYQT_Module class implementation (implements CAM_Module API for // all Python-based SALOME module -//============================================================================= // While the SalomePyQtGUI library is not imported in Python it's initialization function // should be called manually (and only once) in order to initialize global sip data @@ -168,8 +164,10 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule() /*! * Constructor */ -SALOME_PYQT_Module::SALOME_PYQT_Module() : - SalomeApp_Module( __DEFAULT_NAME__ ), myModule( 0 ), myXmlHandler ( 0 ) +SALOME_PYQT_Module::SALOME_PYQT_Module() + : SalomeApp_Module( __DEFAULT_NAME__ ), + myModule( 0 ), + myXmlHandler ( 0 ) { } @@ -197,6 +195,8 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module() */ void SALOME_PYQT_Module::initialize( CAM_Application* app ) { + MESSAGE( "SALOME_PYQT_Module::initialize" ); + SalomeApp_Module::initialize( app ); // Try to get XML resource file name @@ -207,11 +207,9 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app ) QString aFileName = aName + "_" + aLang + ".xml"; aFileName = aResMgr->path( "resources", aName, aFileName ); - // parse XML file if it is found and create actions - if ( !myXmlHandler && !aFileName.isEmpty() ) { + // create XML handler instance + if ( !myXmlHandler && !aFileName.isEmpty() && QFile::exists( aFileName ) ) myXmlHandler = new SALOME_PYQT_XmlHandler( this, aFileName ); - myXmlHandler->createActions(); - } // perform internal initialization and call module's initialize() method // InitializeReq: request class for internal init() operation @@ -284,6 +282,34 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy ) connect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ), this, SLOT( onMenuHighlighted( int, int ) ) ); + // create menus & toolbars from XML file if required + if ( myXmlHandler ) + myXmlHandler->createActions(); + + // CustomizeReq: request class for internal customize() operation + class CustomizeReq : public PyInterp_Request + { + public: + CustomizeReq( SUIT_Study* _study, + SALOME_PYQT_Module* _obj ) + : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) + myStudy ( _study ), + myObj ( _obj ) {} + + protected: + virtual void execute() + { + myObj->customize( myStudy ); + } + + private: + SUIT_Study* myStudy; + SALOME_PYQT_Module* myObj; + }; + + // Posting the request + PyInterp_Dispatcher::Get()->Exec( new CustomizeReq( theStudy, this ) ); + return true; } @@ -299,7 +325,9 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) disconnect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ), this, SLOT( onMenuHighlighted( int, int ) ) ); - bool res = SalomeApp_Module::deactivateModule( theStudy ); + // remove menus & toolbars created from XML file if required + if ( myXmlHandler ) + myXmlHandler->clearActions(); // deactivate menus, toolbars, etc setMenuShown( false ); @@ -330,7 +358,38 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) // Posting the request PyInterp_Dispatcher::Get()->Exec( new DeactivateReq( myInterp, theStudy, this ) ); - return res; + return SalomeApp_Module::deactivateModule( theStudy ); +} + +/*! + * Called when study desktop is activated. + * Used for notifying about changing of the active study. + */ +void SALOME_PYQT_Module::studyActivated() +{ + // StudyChangedReq: request class for internal studyChanged() operation + class StudyChangedReq : public PyInterp_Request + { + public: + StudyChangedReq( SUIT_Study* _study, + SALOME_PYQT_Module* _obj ) + : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) + myStudy ( _study ), + myObj ( _obj ) {} + + protected: + virtual void execute() + { + myObj->studyChanged( myStudy ); + } + + private: + SUIT_Study* myStudy; + SALOME_PYQT_Module* myObj; + }; + + // Posting the request + PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) ); } /*! @@ -543,11 +602,6 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) myInitModule = this; - if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ - // call Python module's setWorkspace() method - setWorkSpace(); - } //__CALL_OLD_METHODS__ - // then call Python module's initialize() method // ... first get python lock PyLockWrapper aLock = myInterp->GetLockWrapper(); @@ -622,8 +676,7 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) * Performs internal activation: * - initializes/gets the Python interpreter (one per study) * - imports the Python GUI module - * - calls Python module's setSettings() method (obsolete function, used for compatibility with old code) - * or activate() method (for new modules) + * - calls Python module's activate() method (for new modules) */ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy ) { @@ -644,6 +697,45 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy ) // get python lock PyLockWrapper aLock = myInterp->GetLockWrapper(); + // call Python module's activate() method (for the new modules) + if(PyObject_HasAttrString(myModule , "activate")){ + PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) ); + if( !res1 ) { + PyErr_Print(); + } + } +} + +/*! + * Performs additional customization after module is activated: + * - gets the Python interpreter (one per study) + * - imports the Python GUI module + * - calls Python module's setSettings() method (obsolete function, used for compatibility with old code) + */ +void SALOME_PYQT_Module::customize ( SUIT_Study* theStudy ) +{ + // get study Id + SalomeApp_Study* aStudy = dynamic_cast( theStudy ); + int aStudyId = aStudy ? aStudy->studyDS()->StudyId() : 0; + + // initialize Python subinterpreter (on per study) and put it in variable + initInterp( aStudyId ); + if ( !myInterp ) + return; // Error + + // import Python GUI module + importModule(); + if ( !myModule ) + return; // Error + + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + // call Python module's setWorkspace() method + setWorkSpace(); + } //__CALL_OLD_METHODS__ + + // get python lock + PyLockWrapper aLock = myInterp->GetLockWrapper(); + if ( IsCallOldMethods ) { //__CALL_OLD_METHODS__ // call Python module's setSettings() method (obsolete) if(PyObject_HasAttrString(myModule , "setSettings")){ @@ -653,14 +745,6 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy ) } } } //__CALL_OLD_METHODS__ - - // call Python module's activate() method (for the new modules) - if(PyObject_HasAttrString(myModule , "activate")){ - PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) ); - if( !res1 ) { - PyErr_Print(); - } - } } /*! @@ -705,6 +789,11 @@ void SALOME_PYQT_Module::studyChanged( SUIT_Study* theStudy ) if ( !myModule ) return; // Error + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + // call Python module's setWorkspace() method + setWorkSpace(); + } //__CALL_OLD_METHODS__ + // get python lock PyLockWrapper aLock = myInterp->GetLockWrapper(); @@ -742,37 +831,6 @@ QString SALOME_PYQT_Module::engineIOR() const return QString( "" ); } -/*! - * Called when study desktop is activated. - * Used for notifying about changing of the active study. - */ -void SALOME_PYQT_Module::studyActivated() -{ - // StudyChangedReq: request class for internal studyChanged() operation - class StudyChangedReq : public PyInterp_Request - { - public: - StudyChangedReq( SUIT_Study* _study, - SALOME_PYQT_Module* _obj ) - : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) - myStudy ( _study ), - myObj ( _obj ) {} - - protected: - virtual void execute() - { - myObj->studyChanged( myStudy ); - } - - private: - SUIT_Study* myStudy; - SALOME_PYQT_Module* myObj; - }; - - // Posting the request - PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) ); -} - /*! * Processes context popup menu request * - calls Python module's definePopup(...) method (obsolete function, used for compatibility with old code) @@ -926,7 +984,8 @@ void SALOME_PYQT_Module::initInterp( int theStudyId ) return; } // ... then call a method - PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "" ) ); + int embedded = 1; + PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "ii", theStudyId, embedded ) ); if( !aRes ) { // Error! PyErr_Print(); @@ -1022,26 +1081,66 @@ int SALOME_PYQT_Module::defaultMenuGroup() * Also these methods are used to register created from outside menus * in order to enable dynamic menus handling. */ + + +/*! Create tool bar with name \a name, if it was't created before. + * \retval -1 - if tool manager was't be created. + */ int SALOME_PYQT_Module::createTool( const QString& name ) { return SalomeApp_Module::createTool( name ); } +/*! Create tool. + * Insert QAction with id \a id from action map(myActionMap) to tool manager. + *\param id - integer + *\param tBar - integer + *\param idx - integer + *\retval integer id of new action in tool manager. + *\retval Return -1 if something wrong. + */ int SALOME_PYQT_Module::createTool( const int id, const int tBar, const int idx ) { return SalomeApp_Module::createTool( id, tBar, idx ); } +/*! Create tool. + * Insert QAction with id \a id from action map(myActionMap) to tool manager. + *\param id - integer + *\param tBar - QString& + *\param idx - integer + *\retval integer id of new action in tool manager. + *\retval Return -1 if something wrong. + */ int SALOME_PYQT_Module::createTool( const int id, const QString& tBar, const int idx ) { return SalomeApp_Module::createTool( id, tBar, idx ); } +/*! Create tool. Register action \a a with id \a id. + * Insert QAction to tool manager. + *\param a - QAction + *\param tBar - integer + *\param id - integer + *\param idx - integer + *\retval integer id of new action in tool manager. + *\retval Return -1 if something wrong. + */ int SALOME_PYQT_Module::createTool( QAction* a, const int tBar, const int id, const int idx ) { return SalomeApp_Module::createTool( a, tBar, id, idx ); } +/*! Create tool. Register action \a a with id \a id. + * Insert QAction to tool manager. + *\param a - QAction + *\param tBar - QString& + *\param id - integer + *\param idx - integer + *\retval integer id of new action in tool manager. + *\retval Return -1 if something wrong. + */ int SALOME_PYQT_Module::createTool( QAction* a, const QString& tBar, const int id, const int idx ) { return SalomeApp_Module::createTool( a, tBar, id, idx ); } + int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx, const bool constantMenu ) { bool exists = hasMenu( subMenu, menu ); @@ -1050,6 +1149,7 @@ int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, cons registerMenu( regId, menu, constantMenu ); return regId; } + int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx, const bool constantMenu ) { QStringList menus = QStringList::split( "|", menu, false ); @@ -1062,6 +1162,7 @@ int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, pid = createMenu( subMenu, pid, id, group, idx, constantMenu ); return pid; } + int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int group, const int idx, const bool constantMenu ) { int regId = SalomeApp_Module::createMenu( id, menu, group, idx ); @@ -1069,6 +1170,7 @@ int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int grou registerMenu( regId, menu, constantMenu ); return regId; } + int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx, const bool constantMenu ) { QStringList menus = QStringList::split( "|", menu, false ); @@ -1081,6 +1183,7 @@ int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int pid = createMenu( id, pid, group, idx, constantMenu ); return pid; } + int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, const int group, const int idx, const bool constantMenu ) { int regId = SalomeApp_Module::createMenu( a, menu, id, group, idx ); @@ -1088,6 +1191,7 @@ int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, co registerMenu( regId, menu, constantMenu ); return regId; } + int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int id, const int group, const int idx, const bool constantMenu ) { QStringList menus = QStringList::split( "|", menu, false ); @@ -1100,28 +1204,27 @@ int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int i pid = createMenu( a, pid, id, group, idx, constantMenu ); return pid; } + QAction* SALOME_PYQT_Module::createSeparator() { return SalomeApp_Module::separator(); } + QAction* SALOME_PYQT_Module::action( const int id ) const { return SalomeApp_Module::action( id ); } + int SALOME_PYQT_Module::actionId( const QAction* a ) const { return SalomeApp_Module::actionId( a ); } + QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, const QString& icon, const QString& menu, const QString& tip, const int key, const bool toggle ) { - QIconSet anIcon; - if ( !icon.isEmpty() ) { - QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( icon ) ); - if ( !pixmap.isNull() ) - anIcon = QIconSet( pixmap ); - } + QIconSet anIcon = loadIcon( icon ); QAction* a = action( id ); if ( a ) { if ( a->text().isEmpty() && !text.isEmpty() ) a->setText( text ); @@ -1138,6 +1241,19 @@ QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, co } return a; } +/*! + * Load icon from resource file + */ +QIconSet SALOME_PYQT_Module::loadIcon( const QString& fileName ) +{ + QIconSet anIcon; + if ( !fileName.isEmpty() ) { + QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( fileName ) ); + if ( !pixmap.isNull() ) + anIcon = QIconSet( pixmap ); + } + return anIcon; +} /*! * Returns TRUE if menu already exists @@ -1318,9 +1434,7 @@ bool SALOME_PYQT_Module::clearMenu( const int id, const int menu, const bool rem return false; } -//============================================================================= // SALOME_PYQT_XmlHandler class implementation -//============================================================================= // gets an tag name for the dom element [ static ] // returns an empty string if the element does not have tag name @@ -1335,44 +1449,68 @@ static QString attribute( const QDomElement& element, const QString& attName ) { } // checks the given value for the boolean value [ static ] -// returns TRUE if string is "true", "yes" or "1" -static bool checkBool( const QString& value ) { - return ( value == "true" || value == "yes" || value == "1" ); +// returns TRUE if string represents boolean value: +// - "true", "yes" or "1" for true +// - "false", "no" or "0" for false +// second parameter allows to check certain boolean value +// - 1: true +// - 0: false +// - other value is not taken into account +static bool checkBool( const QString& value, const int check = -1 ) { + QString v = value.lower(); + if ( ( v == "true" || v == "yes" || v == "1" ) && ( check != 0 ) ) + return true; + if ( ( v == "false" || v == "no" || v == "0" ) && ( check != 1 ) ) + return true; + return false; } // checks the given value for the integer value [ static ] // returns -1 if item is empty or presents and invalid number -static int checkInt( const QString& value, const int def = -1 ) +static int checkInt( const QString& value, const int def = -1, const int shift = -1 ) { - return value.isEmpty() ? def : value.toInt(); + bool bOk; + int val = value.toInt( &bOk ); + if ( !bOk ) val = def; + if ( shift > 0 && bOk && val < 0 ) + val += shift; + return val; } /*! * Constructor */ -SALOME_PYQT_XmlHandler::SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module, const QString& fileName ) - : myModule( module ) +SALOME_PYQT_XmlHandler::SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module, + const QString& fileName ) + : myModule( module ), + myMenuCreated( false ) { + if (fileName.isEmpty() ) + return; QFile aFile( fileName ); if ( !aFile.open( IO_ReadOnly ) ) return; if ( !myDoc.setContent( &aFile ) ) { - aFile.close(); - return; + aFile.close(); + return; } aFile.close(); } /*! - Called by SALOME_PYQT_Module::initialize() in order to create actions - (menus, toolbars, popup menus) + * Called by SALOME_PYQT_Module::activate() in order to create actions + * (menus, toolbars, popup menus) */ void SALOME_PYQT_XmlHandler::createActions() { + // check flag : are menus already created? + if ( myMenuCreated && !IsCallOldMethods ) + return; + // get document element QDomElement aDocElem = myDoc.documentElement(); - // get main menu actions + // create main menu actions QDomNodeList aMenuList = aDocElem.elementsByTagName( "menu-item" ); for ( int i = 0; i < aMenuList.count(); i++ ) { QDomNode n = aMenuList.item( i ); @@ -1385,6 +1523,36 @@ void SALOME_PYQT_XmlHandler::createActions() QDomNode n = aToolsList.item( i ); createToolBar( n ); } + // set flag : menus are already created + myMenuCreated = true; +} + +/*! + * Called by SALOME_PYQT_Module::deactivate() in order to remove actions + * (menus, toolbars, popup menus) + */ +void SALOME_PYQT_XmlHandler::clearActions() +{ + for ( uint i = 0; i < myMenuItems.count(); i++ ) { + QMenuData* md = dynamic_cast( myModule->getApp()->desktop()->menuBar() ); + QStringList menus = QStringList::split( ":", myMenuItems[ i ] ); + for ( uint j = 0; j < menus.count(); j++) { + int id = menus[ j ].toInt(); + QMenuData* smd; + QMenuItem* mi = md->findItem( id, &smd ); + if ( mi && md == smd ) { + if ( j == menus.count()-1 || !mi->popup() ) { // last item or not popup + md->removeItem( id ); + break; + } + else if ( mi->popup() ) + md = dynamic_cast( mi->popup() ); + } + else + break; + } + } + myMenuItems.clear(); } /*! @@ -1419,7 +1587,9 @@ void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu* menu, /*! Create main menu with child actions */ -void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentMenuId ) +void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, + const int parentMenuId, + QPopupMenu* parentPopup ) { if ( !myModule ) return; @@ -1435,13 +1605,52 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM int group = checkInt( attribute( parentElement, "group-id" ), myModule->defaultMenuGroup() ); if ( !plabel.isEmpty() ) { + QPopupMenu* popup = 0; + int menuId = -1; // create menu - int menuId = myModule->createMenu( plabel, // label - parentMenuId, // parent menu ID, should be -1 for main menu - pid, // ID - group, // group ID - ppos, // position - true ); // create constant menu (not removed by clearMenu()) + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + SUIT_Desktop* desktop = myModule->getApp()->desktop(); + if ( parentMenuId == -1 ) { // top-level menu + QMenuBar* mb = desktop->menuBar(); + QMenuItem* mi = mb->findItem( pid ); + if ( mi ) popup = mi->popup(); + if ( !popup ) { + popup = new QPopupMenu( desktop ); + ppos = checkInt( attribute( parentElement, "pos-id" ), -1, mb->count() ); + menuId = mb->insertItem( plabel, popup, pid, ppos ); + myCurrentMenu.push_back( QString::number( menuId ) ); + myMenuItems.append( myCurrentMenu.join( ":" ) ); + } + else { + menuId = pid; + myCurrentMenu.push_back( QString::number( menuId ) ); + } + } + else { + // parentPopup should not be 0 here! + QMenuItem* mi = parentPopup->findItem( pid ); + if ( mi ) popup = mi->popup(); + if ( !popup ) { + popup = new QPopupMenu( desktop ); + ppos = checkInt( attribute( parentElement, "pos-id" ), -1, popup->count() ); + menuId = parentPopup->insertItem( plabel, popup, pid, ppos ); + myCurrentMenu.push_back( QString::number( menuId ) ); + myMenuItems.append( myCurrentMenu.join( ":" ) ); + } + else { + menuId = pid; + myCurrentMenu.push_back( QString::number( menuId ) ); + } + } + } + else { //!__CALL_OLD_METHODS__ + menuId = myModule->createMenu( plabel, // label + parentMenuId, // parent menu ID, should be -1 for main menu + pid, // ID + group, // group ID + ppos, // position + true ); // create constant menu (not removed by clearMenu()) + } // __CALL_OLD_METHODS__ QDomNode node = parentNode.firstChild(); while ( !node.isNull() ) { if ( node.isElement() ) { @@ -1462,25 +1671,49 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM // -1 action ID is not allowed : it means that attribute is missed in the XML file! // also check if the action with given ID is already created if ( id != -1 ) { - // create menu action - QAction* action = myModule->createAction( id, // ID - tooltip, // tooltip - icon, // icon - label, // menu text - tooltip, // status-bar text - QKeySequence( accel ), // keyboard accelerator - toggle ); // toogled action - myModule->createMenu( action, // action - menuId, // parent menu ID - id, // ID (same as for createAction()) - group, // group ID - pos, // position - true ); // create constant menu (not removed by clearMenu()) + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + QIconSet iconSet = myModule->loadIcon( icon ); + pos = checkInt( attribute( elem, "pos-id" ), -1, popup->count() ); + int aid = iconSet.isNull() ? popup->insertItem( label, + myModule, + SLOT( onGUIEvent(int) ), + QKeySequence( accel ), + id, + pos ) : + popup->insertItem( iconSet, + label, + myModule, + SLOT( onGUIEvent(int) ), + QKeySequence( accel ), + id, + pos ); + myCurrentMenu.push_back( QString::number( aid ) ); + myMenuItems.append( myCurrentMenu.join( ":" ) ); + myCurrentMenu.pop_back(); + if ( toggle ) + popup->setItemChecked( aid, checkBool( attribute( elem, "toggle-id" ), 1 ) ); + } + else { //!__CALL_OLD_METHODS__ + // create menu action + QAction* action = myModule->createAction( id, // ID + tooltip, // tooltip + icon, // icon + label, // menu text + tooltip, // status-bar text + QKeySequence( accel ), // keyboard accelerator + toggle ); // toogled action + myModule->createMenu( action, // action + menuId, // parent menu ID + id, // ID (same as for createAction()) + group, // group ID + pos, // position + true ); // create constant menu (not removed by clearMenu()) + } // __CALL_OLD_METHODS__ } } else if ( aTagName == "submenu" ) { // create sub-menu - createMenu( node, menuId ); + createMenu( node, menuId, popup ); } else if ( aTagName == "separator" ) { // create menu separator @@ -1488,17 +1721,27 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM int pos = checkInt( attribute( elem, "pos-id" ) ); int group = checkInt( attribute( elem, "group-id" ), myModule->defaultMenuGroup() ); - QAction* action = myModule->createSeparator(); - myModule->createMenu( action, // separator action - menuId, // parent menu ID - id, // ID - group, // group ID - pos, // position - true ); // create constant menu (not removed by clearMenu()) + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + pos = checkInt( attribute( elem, "pos-id" ), -1, popup->count() ); + int sid = popup->insertSeparator( pos ); + myCurrentMenu.push_back( QString::number( sid ) ); + myMenuItems.append( myCurrentMenu.join( ":" ) ); + myCurrentMenu.pop_back(); + } + else { //!__CALL_OLD_METHODS__ + QAction* action = myModule->createSeparator(); + myModule->createMenu( action, // separator action + menuId, // parent menu ID + id, // ID + group, // group ID + pos, // position + true ); // create constant menu (not removed by clearMenu()) + } // __CALL_OLD_METHODS__ } } node = node.nextSibling(); } + myCurrentMenu.pop_back(); } } } @@ -1549,7 +1792,7 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) myModule->createTool( action, tbId, -1, pos ); } } - else if ( aTagName == "separatorTB" ) { + else if ( aTagName == "separatorTB" || aTagName == "separator" ) { // create toolbar separator int pos = checkInt( attribute( elem, "pos-id" ) ); QAction* action = myModule->createSeparator(); @@ -1562,6 +1805,9 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) } } +/*! + * Fill popup menu with items + */ void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* menu ) { if ( !myModule ) diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h index 57fa50cce..1cfcf855f 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h @@ -16,14 +16,6 @@ // // See http://www.salome-platform.org/ // -//============================================================================= -// File : SALOME_PYQT_Module.h -// Created : 25/04/05 -// Author : Vadim SANDLER -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #ifndef SALOME_PYQT_MODULE_H #define SALOME_PYQT_MODULE_H @@ -152,6 +144,8 @@ public: int actionId( const QAction* ) const; QAction* createAction( const int, const QString&, const QString&, const QString&, const QString&, const int, const bool = false ); + /* load icon from resource file */ + QIconSet loadIcon( const QString& fileName ); /* Show/hide menus/toolbars */ void setMenuShown( const bool ); @@ -190,6 +184,8 @@ private: void activate ( SUIT_Study* ); /* internal deactivation */ void deactivate ( SUIT_Study* ); + /* customization */ + void customize ( SUIT_Study* ); /* study activation */ void studyChanged( SUIT_Study* ); /* context popup menu processing */ diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h index 1e15494e8..8c4787640 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h @@ -16,14 +16,6 @@ // // See http://www.salome-platform.org/ // -//============================================================================= -// File : SALOME_PYQT_PyInterp.h -// Created : 25/04/05 -// Author : Christian CAREMOLI, Paul RASCLE, EDF -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #ifndef SALOME_PYQT_PYINTERP_H #define SALOME_PYQT_PYINTERP_H diff --git a/src/SALOME_PYQT/SalomePyQt/Makefile.in b/src/SALOME_PYQT/SalomePyQt/Makefile.in index ac2aeab56..5de10a238 100644 --- a/src/SALOME_PYQT/SalomePyQt/Makefile.in +++ b/src/SALOME_PYQT/SalomePyQt/Makefile.in @@ -101,7 +101,7 @@ LIB_MOC = SalomePyQt.h LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl # Compilation/linkage flags -CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS) LDFLAGS += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx index 67f222687..d6afaaf4d 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx @@ -16,14 +16,6 @@ // // See http://www.salome-platform.org/ // -//============================================================================= -// File : SalomePyQt.cxx -// Created : 25/04/05 -// Author : Vadim SANDLER -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #include "SALOME_PYQT_Module.h" // this include must be first!!! #include "SalomePyQt.h" @@ -50,12 +42,8 @@ using namespace std; -//==================================================================================== -// static functions -//==================================================================================== /*! - getApplication() - Returns active application object [ static ] + \return active application object [ static ] */ static SalomeApp_Application* getApplication() { if ( SUIT_Session::session() ) @@ -64,8 +52,7 @@ static SalomeApp_Application* getApplication() { } /*! - getActiveStudy() - Gets active study or 0 if there is no study opened [ static ] + \return active study or 0 if there is no study opened [ static ] */ static SalomeApp_Study* getActiveStudy() { @@ -74,13 +61,9 @@ static SalomeApp_Study* getActiveStudy() return 0; } -//==================================================================================== -// SALOME_Selection class. -//==================================================================================== static QMap SelMap; /*! - SALOME_Selection::GetSelection Creates or finds the selection object (one per study). */ SALOME_Selection* SALOME_Selection::GetSelection( SalomeApp_Application* app ) @@ -94,7 +77,6 @@ SALOME_Selection* SALOME_Selection::GetSelection( SalomeApp_Application* app ) } /*! - SALOME_Selection::SALOME_Selection Selection constructor. */ SALOME_Selection::SALOME_Selection( QObject* p ) : QObject( p ), mySelMgr( 0 ) @@ -107,7 +89,6 @@ SALOME_Selection::SALOME_Selection( QObject* p ) : QObject( p ), mySelMgr( 0 ) } } /*! - SALOME_Selection::~SALOME_Selection Selection destructor. Removes selection object from the map. */ SALOME_Selection::~SALOME_Selection() @@ -118,7 +99,6 @@ SALOME_Selection::~SALOME_Selection() } /*! - SALOME_Selection::onSelMgrDestroyed Watches for the selection manager destroying when study is closed. */ void SALOME_Selection::onSelMgrDestroyed() @@ -127,7 +107,6 @@ void SALOME_Selection::onSelMgrDestroyed() } /*! - SALOME_Selection::Clear Clears the selection. */ void SALOME_Selection::Clear() @@ -146,7 +125,6 @@ void SALOME_Selection::Clear() } /*! - SALOME_Selection::ClearIObjects Clears the selection. */ void SALOME_Selection::ClearIObjects() @@ -155,7 +133,6 @@ void SALOME_Selection::ClearIObjects() } /*! - SALOME_Selection::ClearFilters Removes all selection filters. */ void SALOME_Selection::ClearFilters() @@ -173,13 +150,8 @@ void SALOME_Selection::ClearFilters() ProcessVoidEvent( new TEvent( mySelMgr ) ); } -//==================================================================================== -// SalomePyQt class -//==================================================================================== - /*! - SalomePyQt::getDesktop - Gets desktop. Returns 0 in error. + \return desktop (0 if error) */ class TGetDesktopEvent: public SALOME_Event { public: @@ -191,14 +163,17 @@ public: myResult = (QWidget*)( getApplication()->desktop() ); } }; + +/*! + \return desktop +*/ QWidget* SalomePyQt::getDesktop() { return ProcessEvent( new TGetDesktopEvent() ); } /*! - SalomePyQt::getMainFrame - Gets workspace widget. Returns 0 in error. + \return workspace widget (0 if error) */ class TGetMainFrameEvent: public SALOME_Event { public: @@ -212,6 +187,10 @@ public: } } }; + +/*! + \return workspace widget (0 if error) +*/ QWidget* SalomePyQt::getMainFrame() { return ProcessEvent( new TGetMainFrameEvent() ); @@ -232,6 +211,11 @@ public: } } }; + +/*! + \return main menu + \retval 0 in error. +*/ QMenuBar* SalomePyQt::getMainMenuBar() { return ProcessEvent( new TGetMainMenuBarEvent() ); @@ -277,6 +261,11 @@ public: } } }; + +/*! + \return popup menu + \param menu - menu name +*/ QPopupMenu* SalomePyQt::getPopupMenu( const MenuName menu ) { return ProcessEvent( new TGetPopupMenuEvent( menu ) ); @@ -297,6 +286,11 @@ public: } } }; + +/*! + SalomePyQt::getStudyId + Returns active study's ID or 0 if there is no active study. +*/ int SalomePyQt::getStudyId() { return ProcessEvent( new TGetStudyIdEvent() ); @@ -315,6 +309,11 @@ public: myResult = SALOME_Selection::GetSelection( getApplication() ); } }; + +/*! + Creates a Selection object (to provide a compatibility with previous SALOME GUI). + \return just created selection object +*/ SALOME_Selection* SalomePyQt::getSelection() { return ProcessEvent( new TGetSelectionEvent() ); @@ -336,6 +335,13 @@ public: } } }; + +/*! + Puts an information message to the desktop's status bar + (with optional delay parameter given in seconds) + \param msg - message text + \param sec - delay in seconds +*/ void SalomePyQt::putInfo( const QString& msg, const int sec ) { ProcessVoidEvent( new TPutInfoEvent( msg, sec ) ); @@ -358,6 +364,10 @@ public: } } }; + +/*! + \return an active component name or empty string if there is no active component +*/ const QString SalomePyQt::getActiveComponent() { return ProcessEvent( new TGetActiveComponentEvent() ); @@ -532,6 +542,12 @@ public: } } }; + +/*! + \return a setting value (as string) + This function is obsolete. Use stringSetting(), integerSetting(), + boolSetting(), stringSetting() or colorSetting() instead. +*/ QString SalomePyQt::getSetting( const QString& name ) { return ProcessEvent( new TGetSettingEvent( name ) ); @@ -653,6 +669,10 @@ public: } } }; + +/*! + \return an integer setting from the application preferences +*/ int SalomePyQt::integerSetting( const QString& section, const QString& name, const int def ) { return ProcessEvent( new TGetIntSettingEvent( section, name, def ) ); @@ -678,6 +698,10 @@ public: } } }; + +/*! + \return an double setting from the application preferences +*/ double SalomePyQt::doubleSetting( const QString& section, const QString& name, const int def ) { return ProcessEvent( new TGetDblSettingEvent( section, name, def ) ); @@ -703,6 +727,10 @@ public: } } }; + +/*! + \return an boolean setting from the application preferences +*/ bool SalomePyQt::boolSetting( const QString& section, const QString& name, const bool def ) { return ProcessEvent( new TGetBoolSettingEvent( section, name, def ) ); @@ -728,6 +756,10 @@ public: } } }; + +/*! + \return an string setting from the application preferences +*/ QString SalomePyQt::stringSetting( const QString& section, const QString& name, const QString& def ) { return ProcessEvent( new TGetStrSettingEvent( section, name, def ) ); @@ -753,6 +785,10 @@ public: } } }; + +/*! + \return a color setting from the application preferences +*/ QColor SalomePyQt::colorSetting ( const QString& section, const QString& name, const QColor& def ) { return ProcessEvent( new TGetColorSettingEvent( section, name, def ) ); @@ -809,6 +845,10 @@ public: } } }; + +/*! + Displays 'Open/Save file' dialog box and returns a user's choice (file name) +*/ QString SalomePyQt::getFileName( QWidget* parent, const QString& initial, const QStringList& filters, @@ -844,6 +884,10 @@ public: } } }; + +/*! + Displays 'Open files' dialog box and returns a user's choice (a list of file names) +*/ QStringList SalomePyQt::getOpenFileNames( QWidget* parent, const QString& initial, const QStringList& filters, @@ -875,6 +919,10 @@ public: } } }; + +/*! + Displays 'Get Directory' dialog box and returns a user's choice (a directory name) +*/ QString SalomePyQt::getExistingDirectory( QWidget* parent, const QString& initial, const QString& caption ) @@ -934,6 +982,11 @@ public: } } }; + +/*! + Dumps the contents of the currently active view to the image file + in the given format (JPEG, PNG, BMP are supported) +*/ bool SalomePyQt::dumpView( const QString& filename ) { return ProcessEvent( new TDumpViewEvent( filename ) ); @@ -952,6 +1005,10 @@ public: myResult = SALOME_PYQT_Module::defaultMenuGroup(); } }; + +/*! + \return default menu group +*/ int SalomePyQt::defaultMenuGroup() { return ProcessEvent( new TDefMenuGroupEvent() ); @@ -1023,27 +1080,34 @@ public: } } }; -// create new toolbar or get existing by name + +/*! + create new toolbar or get existing by name +*/ int SalomePyQt::createTool( const QString& tBar ) { return ProcessEvent( new TCreateToolEvent( CrTool( tBar ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( const int id, const int tBar, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( const int id, const QString& tBar, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( QtxAction* a, const int tBar, const int id, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( QtxAction* a, const QString& tBar, const int id, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h index a3022cb2a..609a68e96 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h @@ -16,14 +16,6 @@ // // See http://www.salome-platform.org/ // -//============================================================================= -// File : SalomePyQt.h -// Created : 25/04/05 -// Author : Vadim SANDLER -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #ifndef SALOME_PYQT_H #define SALOME_PYQT_H diff --git a/src/SALOME_SWIG/Help.py b/src/SALOME_SWIG/Help.py deleted file mode 100755 index 404ee4dfc..000000000 --- a/src/SALOME_SWIG/Help.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Help.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -class SalomeDoc: - def __init__(self, aDoc): - self.doc = aDoc - def __repr__(self): - print self.doc - return "---" - def salome(self): - doc_salome = ''' -MODULE : salome ---------------- -module salome gives access to Salome ressources: -variables: - - salome:orb : CORBA - salome.naming_service : instance of naming Service class - methods: - Resolve(name) : find a CORBA object (ior) by its pathname - Register(name) : register a CORBA object under a pathname - salome.lcc : instance of lifeCycleCORBA class - methods: - FindOrLoadComponent(server,name) : - obtain an Engine (CORBA object) - or launch the Engine if not found, - with a Server name and an Engine name - salome.sg - methods: - updateObjBrowser(bool): - getActiveStudyId(): - getActiveStudyName(): - - SelectedCount(): returns number of selected objects - getSelected(i): returns entry of selected object number i - getAllSelected(): returns list of entry of selected objects - AddIObject(Entry): select an existing Interactive object - RemoveIObject(Entry): remove object from selection - ClearIObjects(): clear selection - - Display(*Entry): - DisplayOnly(Entry): - Erase(Entry): - DisplayAll(): - EraseAll(): - - IDToObject(Entry): returns CORBA reference from entry - - salome.myStudyName : active Study Name - salome.myStudyId : active Study Id - salome.myStudy : the active Study itself (CORBA ior) - methods : defined in SALOMEDS.idl - -methods: - salome.DumpStudy(study) : Dump a study, given the ior ---- -''' - print doc_salome - - def geompy(self): - doc_geompy = ''' -MODULE : geompy ---------------- -module geompy provides an encapsulation of GEOM Engine methods -variables: - geompy.geom : a Geometry Engine, found or loaded - at first import of module geompy. - methods : defined in GEOM_Gen.idl - geompy.myBuilder : a study builder - geompy.father : GEOM root in current study (salome.myStudy) - -methods: - addToStudy(aShape, aName) : add the shape into the current study - --- all methods of GEOM_Gen.idl that returns a shape are encapsulated, - with the same interface : shapes are named with their ior -''' - print doc_geompy - - def supervision(self): - doc_supervision = ''' -MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor ------------------------------------------------------------------ -this modules provide access to Editor and Executor Engine methods - -See SUPERV.idl - -In order to run the example (supervisionexample.py) - - Type : from supervisionexample import * - supervisionexample.py contains comments - -A new python example avoids references to LifeCycleCORBA - avoids references to NamingService - avoids references to ModuleCatalog - avoids SuperVisionComponent creation - allows G.Input(...) instead of AddInput(G,...) - replaces Editor/Executor with Graph - allows Nodes, Ports and Links CORBA objects - shortens methods names - ... - - See /SuperVisionTest/resources/GraphExample.py - and GraphExample.xml ---- -''' - print doc_supervision - - - -help = SalomeDoc(''' -Availables modules: - salome : gives access to Salome ressources - geompy : encapsulation of GEOM Engine methods - supervision : gives access to SuperVision Engine -To obtain specific help on a module "truc", type: help.truc() -To run an example, type: import example3 -''') - diff --git a/src/SALOME_SWIG/Makefile.in b/src/SALOME_SWIG/Makefile.in index 19142ae1b..0c757d005 100755 --- a/src/SALOME_SWIG/Makefile.in +++ b/src/SALOME_SWIG/Makefile.in @@ -46,11 +46,11 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ SALOME_GenericObj.idl SWIG_DEF = libSALOME_Swig.i -EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py salome_test.py test_remove_ref.py +EXPORT_PYSCRIPTS = libSALOME_Swig.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py test_remove_ref.py EXPORT_SHAREDPYSCRIPTS=SALOMEGUI_shared_modules.py -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) LIBS+= $(PYTHON_LIBS) LDFLAGS+= -lSalomeApp diff --git a/src/SALOME_SWIG/PyInterp.py b/src/SALOME_SWIG/PyInterp.py deleted file mode 100755 index 3e0133d89..000000000 --- a/src/SALOME_SWIG/PyInterp.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : PyInterp.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -import sys -from omniORB import CORBA -from LifeCycleCORBA import * -from libSALOME_Swig import * -import SALOMEDS -from SALOME_NamingServicePy import * - - #-------------------------------------------------------------------------- - -def DumpComponent(Study, SO, offset): - it = Study.NewChildIterator(SO) - Builder = Study.NewBuilder() - while it.More(): - CSO = it.Value() - it.Next() - anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName") - AtName = anAttr._narrow(SALOMEDS.AttributeName) - t_name = AtName.Value() - if t_name[0] == 1: - ofs = 1 - a = "" - while ofs <= offset: - a = a + "--" - ofs = ofs +1 - print a + ">" + CSO.GetID() + " " + t_name[1] - t_RefSO = CSO.ReferencedObject() - if t_RefSO[0] == 1: - RefSO = t_RefSO[1] - ofs = 1 - a = "" - while ofs <= offset: - a = a + " " - ofs = ofs +1 - print a + ">" + RefSO.GetID() - DumpComponent(Study, CSO, offset+2) - - #-------------------------------------------------------------------------- - -def DumpStudy(Study): - itcomp = Study.NewComponentIterator() - while itcomp.More(): - SC = itcomp.Value() - itcomp.Next() - name = SC.ComponentDataType() - print "-> ComponentDataType is " + name - DumpComponent(Study, SC, 1) - - - #-------------------------------------------------------------------------- - -# initialise the ORB -orb = CORBA.ORB_init([''], CORBA.ORB_ID) - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -# create an SALOMEGUI_Swig instance -sg = SALOMEGUI_Swig() - -#create an naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get active study name and id -myStudyName = sg.getActiveStudyName() -print myStudyName - -myStudyId = sg.getActiveStudyId() -print myStudyId - -# get Study Manager reference -obj = naming_service.Resolve('myStudyManager') -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -# get active study -myStudy = myStudyManager.GetStudyByName(myStudyName) - diff --git a/src/SALOME_SWIG/SALOMEGUI_Swig.cxx b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx index 0c8e1764d..ea767e60b 100644 --- a/src/SALOME_SWIG/SALOMEGUI_Swig.cxx +++ b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx @@ -53,22 +53,22 @@ using namespace std; -////////////////////////////////////////////////////////////////////////////// -// asv : 3.12.04 : added checking for NULL GUI objects in almost all methods. -// In the scope of fixing bug PAL6869. -////////////////////////////////////////////////////////////////////////////// -// (PR : modify comments) -// Instance of this class is created every time "import salome" line is typed -// - in IAPP embedded Python interpretor (SALOME_Session_Server executable), -// - in inline Python nodes in Supervisor (in SALOME_Container executable), -// - in stand-alone Python console outside any executable. -// SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server -////////////////////////////////////////////////////////////////////////////// -// VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) -// All methods are implemeted using Event mechanism. -// Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently -// implemented only for OCC and VTK viewers. -////////////////////////////////////////////////////////////////////////////// +/*! + asv : 3.12.04 : added checking for NULL GUI objects in almost all methods. + In the scope of fixing bug PAL6869. + + (PR : modify comments) + Instance of this class is created every time "import salome" line is typed + - in IAPP embedded Python interpretor (SALOME_Session_Server executable), + - in inline Python nodes in Supervisor (in SALOME_Container executable), + - in stand-alone Python console outside any executable. + SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server + + VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) + All methods are implemeted using Event mechanism. + Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently + implemented only for OCC and VTK viewers. +*/ /*! getApplication() @@ -120,6 +120,10 @@ public: myResult = (bool)( getApplication() && getApplication()->desktop() ); } }; + +/*! + \return true if GUI is available. +*/ bool SALOMEGUI_Swig::hasDesktop() { return ProcessEvent( new THasDesktopEvent() ); @@ -160,6 +164,10 @@ public: } } }; + +/*! + \return active study's ID or 0 if there is no active study. +*/ int SALOMEGUI_Swig::getActiveStudyId() { return ProcessEvent( new TGetActiveStudyIdEvent() ); @@ -180,6 +188,10 @@ public: } } }; + +/*! + \return active study's name or NULL if there is no active study. +*/ const char* SALOMEGUI_Swig::getActiveStudyName() { string result = ProcessEvent( new TGetActiveStudyNameEvent() ); @@ -190,20 +202,32 @@ const char* SALOMEGUI_Swig::getActiveStudyName() SALOMEGUI_Swig::getComponentName Returns the name of the component by its user name. */ +class TGetModulCatalogEvent: public SALOME_Event { +public: + typedef CORBA::Object_var TResult; + TResult myResult; + TGetModulCatalogEvent() : myResult(CORBA::Object::_nil()) {} + virtual void Execute() { + if (SalomeApp_Application* anApp = getApplication()) + myResult = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); + } +}; + +/*! + \return the name of the component by its user name. +*/ const char* SALOMEGUI_Swig::getComponentName( const char* componentUserName ) { - if ( SalomeApp_Application* anApp = getApplication() ) { - CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); - if ( !CORBA::is_nil( anObject ) ) { - SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = - SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); - SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); - for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { - CORBA::String_var aModuleName = aModules[ ind ].modulename; - CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; - if ( strcmp(componentUserName, aModuleUserName.in()) == 0 ) - return aModuleName._retn(); - } + CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent()); + if (!CORBA::is_nil(anObject)) { + SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = + SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); + SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); + for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { + CORBA::String_var aModuleName = aModules[ ind ].modulename; + CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; + if ( strcmp(componentUserName, aModuleUserName.in()) == 0 ) + return aModuleName._retn(); } } return 0; @@ -215,18 +239,16 @@ const char* SALOMEGUI_Swig::getComponentName( const char* componentUserName ) */ const char* SALOMEGUI_Swig::getComponentUserName( const char* componentName ) { - if ( SalomeApp_Application* anApp = getApplication() ) { - CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); - if ( !CORBA::is_nil( anObject ) ) { - SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = - SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); - SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); - for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { - CORBA::String_var aModuleName = aModules[ ind ].modulename; - CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; - if ( strcmp(componentName, aModuleName.in()) == 0 ) - return aModuleUserName._retn(); - } + CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent()); + if (!CORBA::is_nil(anObject)) { + SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = + SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); + SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); + for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { + CORBA::String_var aModuleName = aModules[ ind ].modulename; + CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; + if ( strcmp(componentName, aModuleName.in()) == 0 ) + return aModuleUserName._retn(); } } return 0; @@ -253,6 +275,10 @@ public: } } }; + +/*! + \return the number of selected objects. +*/ int SALOMEGUI_Swig::SelectedCount() { return ProcessEvent( new TSelectedCountEvent() ); @@ -290,6 +316,10 @@ public: } } }; + +/*! + \return the selected object entry by the given index. +*/ const char* SALOMEGUI_Swig::getSelected( int index ) { QString result = ProcessEvent( new TGetSelectedEvent( index ) ); @@ -530,6 +560,11 @@ public: } } }; + +/*! + \return TRUE if the object with given entry is in the current viewer. + VSR: For the current moment implemented for OCC and VTK viewers only. +*/ bool SALOMEGUI_Swig::IsInCurrentView( const char* theEntry ) { return ProcessEvent( new TIsInViewerEvent( theEntry ) ); diff --git a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py index cd849085d..bdd521f3f 100755 --- a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py +++ b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# """ """ diff --git a/src/SALOME_SWIG/salome.py b/src/SALOME_SWIG/salome.py deleted file mode 100755 index 9d45865db..000000000 --- a/src/SALOME_SWIG/salome.py +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -from omniORB import CORBA -from LifeCycleCORBA import * -from libSALOME_Swig import * -import SALOMEDS -from SALOME_NamingServicePy import * - -from SALOME_utilities import * - -#-------------------------------------------------------------------------- - -def DumpComponent(Study, SO, offset): - it = Study.NewChildIterator(SO) - Builder = Study.NewBuilder() - while it.More(): - CSO = it.Value() - it.Next() - anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName") - AtName = anAttr._narrow(SALOMEDS.AttributeName) - t_name = AtName.Value() - if t_name[0] == 1: - ofs = 1 - a = "" - while ofs <= offset: - a = a + "--" - ofs = ofs +1 - MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) ) - t_RefSO = CSO.ReferencedObject() - if t_RefSO[0] == 1: - RefSO = t_RefSO[1] - ofs = 1 - a = "" - while ofs <= offset: - a = a + " " - ofs = ofs +1 - MESSAGE( a + ">" + str(RefSO.GetID()) ) - DumpComponent(Study, CSO, offset+2) - - #-------------------------------------------------------------------------- - -def DumpStudy(Study): - itcomp = Study.NewComponentIterator() - while itcomp.More(): - SC = itcomp.Value() - itcomp.Next() - name = SC.ComponentDataType() - MESSAGE( "-> ComponentDataType is " + name ) - DumpComponent(Study, SC, 1) - - - #-------------------------------------------------------------------------- - -def ImportComponentGUI(ComponentName): - libName = "lib" + ComponentName + "_Swig" - command = "from " + libName + " import *" - exec ( command ) - constructor = ComponentName + "_Swig()" - command = "gui = " + constructor - exec ( command ) - return gui - - #-------------------------------------------------------------------------- - -def SalomeGUIgetAllSelected(self): - selNumber = self.SelectedCount() - listSelected = [] - for i in range(selNumber): - listSelected.append(self.getSelected(i)) - return listSelected - -class SalomeGUI(SALOMEGUI_Swig): - getAllSelected = SalomeGUIgetAllSelected - - #-------------------------------------------------------------------------- - -def IDToObject(id): - myObj = None - mySO = myStudy.FindObjectID(id); - if mySO is not None: - ok, anAttr = mySO.FindAttribute("AttributeIOR") - if ok: - AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR) - if AtIOR.Value() != "": - myObj = orb.string_to_object(AtIOR.Value()) - return myObj - -def ObjectToSObject(obj): - mySO = None - if obj is not None: - ior = orb.object_to_string(obj) - if ior != "": - mySO = myStudy.FindObjectIOR(ior) - return mySO - -def ObjectToID(obj): - mySO = ObjectToSObject(obj) - if mySO: - return mySO.GetID() - return "" - -def IDToSObject(id): - mySO = myStudy.FindObjectID(id); - return mySO - - #-------------------------------------------------------------------------- - -# initialise the ORB -orb = CORBA.ORB_init([''], CORBA.ORB_ID) - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -# create an SALOMEGUI_Swig instance -sg = SalomeGUI() - -#create an naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get active study name and id -myStudyName = sg.getActiveStudyName() -MESSAGE( myStudyName ) - -myStudyId = sg.getActiveStudyId() -MESSAGE( str(myStudyId) ) - -# get Study Manager reference -obj = naming_service.Resolve('myStudyManager') -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -# get active study -myStudy = myStudyManager.GetStudyByName(myStudyName) - diff --git a/src/SALOME_SWIG/salome_test.py b/src/SALOME_SWIG/salome_test.py deleted file mode 100755 index 75e5f0bbd..000000000 --- a/src/SALOME_SWIG/salome_test.py +++ /dev/null @@ -1,486 +0,0 @@ -# SALOME SALOME_SWIG : binding of C++ implementation and Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : salome_test.py -# Module : SALOME - -print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some" -print "operation within the components." - -import salome -from salome import sg -import SALOMEDS -import os - -import SALOME_ModuleCatalog - -print "======================================================================" -print " Get Catalog " -print "======================================================================" -obj = salome.naming_service.Resolve('Kernel/ModulCatalog') -catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog) - -print "======================================================================" -print " Create Study " -print "======================================================================" - -comp = catalog.GetComponent("GEOM") -if comp is None: - raise RuntimeError,"Component GEOM not found in Module Catalog." - -import geompy - -print "=================================" -print " create AttributeReal " -print "=================================" -A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal") -if A == None : - raise RuntimeError, "Can't create AttributeReal attribute" -A = A._narrow(SALOMEDS.AttributeReal) -A.SetValue(0.0001) -if A.Value() != 0.0001: - raise RuntimeError, "Error : wrong value of AttributeReal" - -print -print " =========== Test Geometry ==========================" -print - -print "===================================" -print " define a box" -print "===================================" - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -print -print "============= Test SMESH =============================" -print - -import StdMeshers - -comp = catalog.GetComponent("SMESH") -if comp is None: - raise RuntimeError,"Component SMESH not found in Module Catalog." - -comp = catalog.GetComponent("MED") -if comp is None: - raise RuntimeError,"Component MED not found in Module Catalog." - -import SMESH - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") -smeshgui = salome.ImportComponentGUI("SMESH") -smeshgui.Init(salome.myStudyId); - -ShapeTypeCompSolid = 1 -ShapeTypeSolid = 2 -ShapeTypeShell = 3 -ShapeTypeFace = 4 -ShapeTypeWire = 5 -ShapeTypeEdge = 6 -ShapeTypeVertex = 7 - -# ---- define a box - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -# ---- add first face of box in study - -subShapeList=geompy.SubShapeAll(box,ShapeTypeFace) -face=subShapeList[0] -name = geompy.SubShapeName(face, box) -print name -idface=geompy.addToStudyInFather(box,face,name) - -# ---- add shell from box in study - -subShellList=geompy.SubShapeAll(box,ShapeTypeShell) -shell = subShellList[0] -name = geompy.SubShapeName(shell, box) -print name -idshell=geompy.addToStudyInFather(box,shell,name) - -# ---- add first edge of face in study - -edgeList = geompy.SubShapeAll(face,ShapeTypeEdge) -edge=edgeList[0]; -name = geompy.SubShapeName(edge, face) -print name -idedge=geompy.addToStudyInFather(face,edge,name) - - -# ---- SMESH - -# ---- create Hypothesis - -print "-------------------------- create Hypothesis" -print "-------------------------- LocalLength" -hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" ) -hypLen1.SetLength(100) -print hypLen1.GetName() -print hypLen1.GetId() -print hypLen1.GetLength() - -smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100") - -print "-------------------------- NumberOfSegments" -hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" ) -hypNbSeg1.SetNumberOfSegments(7) -print hypNbSeg1.GetName() -print hypNbSeg1.GetId() -print hypNbSeg1.GetNumberOfSegments() - -smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7") - -print "-------------------------- MaxElementArea" -hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea1.SetMaxElementArea(2500) -print hypArea1.GetName() -print hypArea1.GetId() -print hypArea1.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500") - -print "-------------------------- MaxElementArea" -hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea2.SetMaxElementArea(500) -print hypArea2.GetName() -print hypArea2.GetId() -print hypArea2.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500") - -print "-------------------------- Regular_1D" -algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" ) -listHyp=algoReg.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoReg.GetName() -print algoReg.GetId() - -smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" ) - -print "-------------------------- MEFISTO_2D" -algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" ) -listHyp=algoMef.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoMef.GetName() -print algoMef.GetId() - -smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" ) - -# ---- add hypothesis to box - -print "-------------------------- add hypothesis to box" -box=salome.IDToObject(idbox) -mesh = smesh.CreateMesh(box) - -smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" ); - -ret=mesh.AddHypothesis(box,algoReg) -print ret -ret=mesh.AddHypothesis(box,algoMef) -print ret - - -ret=mesh.AddHypothesis(box,hypNbSeg1) -print ret -ret=mesh.AddHypothesis(box,hypArea1) -print ret - - -# ---- add hypothesis to edge - -print "-------------------------- add hypothesis to edge" -edge=salome.IDToObject(idedge) -submesh=mesh.GetSubMesh(edge, "SubMeshEdge") - -ret=mesh.AddHypothesis(edge,algoReg) -print ret -ret=mesh.AddHypothesis(edge,hypLen1) -print ret - -print "-------------------------- add hypothesis to face" -face=salome.IDToObject(idface) -submesh = mesh.GetSubMesh(face, "SubMeshFace") - -ret=mesh.AddHypothesis(face,hypArea2) -print ret - -smesh.Compute(mesh, box) -sg.updateObjBrowser(1); - -print -print "============= Test Supervisor =============================" -print - -comp = catalog.GetComponent("SUPERV") -if comp is None: - raise RuntimeError,"Component SUPERV not found in Module Catalog." - -from SuperV import * -import SALOMEDS -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV") -father = myStudy.FindComponent("SUPERV") -if father is None: - father = myBuilder.NewComponent("SUPERV") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName"); - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue( salome.sg.getComponentUserName("SUPERV") ) - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap"); - aPixmap = A2._narrow(SALOMEDS.AttributePixMap); - aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" ); - myBuilder.DefineComponentInstance(father,SuperVision) - -def addStudy(ior): - dataflow = SuperVision.getStreamGraph(ior) - name=dataflow.Name() - itr = myStudy.NewChildIterator(father) - while itr.More(): - item=itr.Value() - res,A=item.FindAttribute("AttributeName") - if res: - aName = A._narrow(SALOMEDS.AttributeName) - if aName.Value() == name : - print myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - print "A = ", A - if A is not None : - #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR); - print "anIOR.SetValue(dataflow.getIOR())" - anIOR.SetValue(dataflow.getIOR()) - return - itr.Next() - obj = myBuilder.NewObject(father) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeName") - aName=A._narrow(SALOMEDS.AttributeName) - aName.SetValue(name) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR) - anIOR.SetValue(dataflow.getIOR()) - -import os -dir= os.getenv("DATA_DIR") -if dir == None: - raise RuntimeError, "DATA_DIR is not defined" -xmlfile = dir +"/Superv/Graphs/GraphGeomEssai.xml" -print "Load dataflow from the file : " -print xmlfile -print - -myGraph = StreamGraph ( xmlfile ) - -# This DataFlow is "valid" : no loop, correct links between Nodes etc... -print "myGraph.IsValid() = ", myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print "myGraph.IsDone() = ",myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -print " " -#print "Type : print myGraph.IsDone()" -#print " If execution is finished ==> 1 (true)" -res=myGraph.IsDone() -if res != 1: - raise RuntimeError, "myGraph.Run() is not done" - -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -myGraph.PrintPorts() - -# Export will create newsupervisionexample.xml and the corresponding .py file -tmpdir=os.getenv("TmpDir") -if tmpdir is None: - tmpdir="/tmp" -file = tmpdir + "/newsupervisionexample" -print "--------------\n"+file+"\n--------------\n" -myGraph.Export(file) - -ior = salome.orb.object_to_string(myGraph.G) -addStudy(ior) - -GraphName = myGraph.Name() -print "Befor save ", -#nodes = myGraph.Nodes() -nodes = myGraph.G.Nodes().FNodes -length_bs = len(nodes) -print "ListOfNodes length = ", length_bs -names=[] -for node in nodes: - names.append(node.Name()) -print names - -# Graph creation -GraphInLines = StreamGraph( 'GraphInLines' ) -GraphInLines.SetName( 'GraphInLines' ) -GraphInLines.SetAuthor( '' ) -GraphInLines.SetComment( '' ) -GraphInLines.Coords( 0 , 0 ) - -# Creation of InLine Nodes -PyAdd = [] -PyAdd.append( 'def Add(a,b) : ' ) -PyAdd.append( ' return a+b ' ) -PyAdd.append( '' ) -Add = GraphInLines.INode( 'Add' , PyAdd ) -Add.InPort( 'a' , 'long' ) -Add.InPort( 'b' , 'long' ) -Add.OutPort( 'f' , 'long' ) -Add.SetName( 'Add' ) -Add.SetAuthor( '' ) -Add.SetComment( 'Python function' ) -Add.Coords( 351 , 77 ) -PySub = [] -PySub.append( 'def Sub(a,b) : ' ) -PySub.append( ' return a-b ' ) -PySub.append( '' ) -Sub = GraphInLines.INode( 'Sub' , PySub ) -Sub.InPort( 'a' , 'long' ) -Sub.InPort( 'b' , 'long' ) -Sub.OutPort( 'f' , 'long' ) -Sub.SetName( 'Sub' ) -Sub.SetAuthor( '' ) -Sub.SetComment( 'Python function' ) -Sub.Coords( 86 , 333 ) -PyMul = [] -PyMul.append( 'def Mul(a,b) : ' ) -PyMul.append( ' return a*b ' ) -Mul = GraphInLines.INode( 'Mul' , PyMul ) -Mul.InPort( 'a' , 'long' ) -Mul.InPort( 'b' , 'long' ) -Mul.OutPort( 'Result' , 'long' ) -Mul.SetName( 'Mul' ) -Mul.SetAuthor( '' ) -Mul.SetComment( 'Python function' ) -Mul.Coords( 616 , 247 ) - -# Creation of intermediate Output variables and of Control Links -Addf = Add.Port( 'f' ) -Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) ) -Mula.AddCoord( 1 , 570 , 356 ) -Mula.AddCoord( 2 , 570 , 186 ) -Subf = Sub.Port( 'f' ) -Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) ) -Mulb.AddCoord( 1 , 282 , 376 ) -Mulb.AddCoord( 2 , 282 , 442 ) -Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) ) -Addb.AddCoord( 1 , 283 , 209 ) -Addb.AddCoord( 2 , 283 , 374 ) -Addb.AddCoord( 3 , 283 , 442 ) - -# Creation of Input datas -Adda = Add.Input( 'a' , 1) -Suba = Sub.Input( 'a' , 3) -Subb = Sub.Input( 'b' , 4) - -# Creation of Output variables -MulResult = Mul.Port( 'Result' ) - -GraphInLines.Run() - -GraphInLines.DoneW() - -GraphInLines.PrintPorts() - -sg.updateObjBrowser(1); - -print -print "============= Test VISU and MED =============================" -print - -comp = catalog.GetComponent("VISU") -if comp is None: - raise RuntimeError,"Component VISU not found in Module Catalog." - -import sys -import SALOMEDS -import SALOME -import SALOME_MED -import VISU - -import visu_gui - -medFileName = "pointe.med" -medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFileName -print "Load ", medFile - -studyCurrent = salome.myStudyName - -med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED") -myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU") - -try: - if os.access(medFile, os.R_OK) : - if not os.access(medFile, os.W_OK) : - import random - medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName - print " -- Copy " + medFile + " to " + medFileNew - os.system("cp "+ medFile + " " + medFileNew) - medFile = medFileNew - os.system("chmod 755 " + medFile) - - if os.access(medFile, os.W_OK) : - med_comp.readStructFileWithFieldType(medFile,studyCurrent) - med_obj = visu_gui.visu.getMedObjectFromStudy() - print "med_obj - ", med_obj - - myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1) - aMeshName = "maa1" - anEntity = VISU.NODE - aTimeStampId = -1 - - myResult1 = myVisu.ImportMedField(myField1) - aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity); - - aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - myResult2 = myVisu.ImportFile(medFile); - aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity); - - aTimeStampId = 3 - aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - sg.updateObjBrowser(0) - else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file"; - else : print "We have no permission to read medFile, it will not be opened"; - -except: - if sys.exc_type == SALOME.SALOME_Exception : - print "There is no permission to read " + medFile - else : - print sys.exc_type - print sys.exc_value - print sys.exc_traceback - -sg.updateObjBrowser(1); diff --git a/src/SALOME_SWIG/supervisionexample.py b/src/SALOME_SWIG/supervisionexample.py index 56bdd9bf5..9444eb9c1 100755 --- a/src/SALOME_SWIG/supervisionexample.py +++ b/src/SALOME_SWIG/supervisionexample.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# #============================================================================== # File : supervisionexample.py # Created : 23 nov 2001 diff --git a/src/SALOME_SWIG/supervisiongeomexample.py b/src/SALOME_SWIG/supervisiongeomexample.py index 8c56bb1f2..e30e66b6c 100755 --- a/src/SALOME_SWIG/supervisiongeomexample.py +++ b/src/SALOME_SWIG/supervisiongeomexample.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # Generated python file of Graph GraphGeom2Essai diff --git a/src/SOCC/Makefile.in b/src/SOCC/Makefile.in index 36b2aa697..9440935a0 100755 --- a/src/SOCC/Makefile.in +++ b/src/SOCC/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander Solovyov(OCN) # Module : SOCC diff --git a/src/SOCC/SOCC_Prs.cxx b/src/SOCC/SOCC_Prs.cxx index a751570c4..a7867e388 100644 --- a/src/SOCC/SOCC_Prs.cxx +++ b/src/SOCC/SOCC_Prs.cxx @@ -29,84 +29,63 @@ #include "SOCC_Prs.h" using namespace std; -//========================================================== /*! - * SOCC_Prs::SOCC_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ SOCC_Prs::SOCC_Prs() { myToActivate = true; } -//========================================================== /*! - * SOCC_Prs::SOCC_Prs - * Standard constructor - */ -//========================================================== + Standard constructor +*/ SOCC_Prs::SOCC_Prs( const Handle(AIS_InteractiveObject)& obj ) { AddObject( obj ); } -//========================================================== /*! - * SOCC_Prs::~SOCC_Prs - * Destructor - */ -//========================================================== + Destructor +*/ SOCC_Prs::~SOCC_Prs() { myObjects.Clear(); } -//========================================================== /*! - * SOCC_Prs::GetObjects - * Get interactive objects list - */ -//========================================================== + Get interactive objects list +*/ void SOCC_Prs::GetObjects( AIS_ListOfInteractive& list ) const { list = myObjects; } -//========================================================== /*! - * SOCC_Prs::AddObject - * Add interactive object - */ -//========================================================== + Add interactive object +*/ void SOCC_Prs::AddObject( const Handle(AIS_InteractiveObject)& obj ) { myObjects.Append( obj ); } -//========================================================== /*! - * SOCC_Prs::IsNull - * Return 0 if list of the interactive objects is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the interactive objects is empty [ Reimplemented from SALOME_Prs ] +*/ bool SOCC_Prs::IsNull() const { return myObjects.IsEmpty(); } -//================================================================= /*! - * GEOM_Displayer::SetToActivate - * This method is used for activisation/deactivisation of - * objects in the moment of displaying + This method is used for activisation/deactivisation of + objects in the moment of displaying */ -//================================================================= void SOCC_Prs::SetToActivate( const bool toActivate ) { myToActivate = toActivate; } + bool SOCC_Prs::ToActivate() const { return myToActivate; diff --git a/src/SOCC/SOCC_ViewModel.cxx b/src/SOCC/SOCC_ViewModel.cxx index 60c0a880e..0a569f048 100755 --- a/src/SOCC/SOCC_ViewModel.cxx +++ b/src/SOCC/SOCC_ViewModel.cxx @@ -16,643 +16,686 @@ // // See http://www.salome-platform.org/ // -#include "SOCC_ViewModel.h" - -#include "SOCC_Prs.h" -#include "SOCC_ViewWindow.h" - -#include "SUIT_Session.h" -#include "SUIT_Application.h" - -//#include "ToolsGUI.h" - -// Temporarily commented to avoid awful dependecy on SALOMEDS -// TODO: better mechanism of storing display/erse status in a study -// should be provided... -//#include -//#include CORBA_CLIENT_HEADER(SALOMEDS) - -#include -#include - -#include -#include - -// Temporarily commented to avoid awful dependecy on SALOMEDS -// TODO: better mechanism of storing display/erse status in a study -// should be provided... -//#include -//#include -//#include -//#include - -//#include "SALOMEDSClient.hxx" -//#include "SALOMEDS_StudyManager.hxx" - -#include - -// in order NOT TO link with SalomeApp, here the code returns SALOMEDS_Study. -// SalomeApp_Study::studyDS() does it as well, but -- here it is retrieved from -// SALOMEDS::StudyManager - no linkage with SalomeApp. - -// Temporarily commented to avoid awful dependecy on SALOMEDS -// TODO: better mechanism of storing display/erse status in a study -// should be provided... -//static _PTR(Study) getStudyDS() -//{ -// SALOMEDSClient_Study* aStudy = NULL; -// _PTR(StudyManager) aMgr( new SALOMEDS_StudyManager() ); - - // get id of SUIT_Study, if it's a SalomeApp_Study, it will return - // id of its underlying SALOMEDS::Study -// SUIT_Application* app = SUIT_Session::session()->activeApplication(); -// if ( !app ) return _PTR(Study)(aStudy); -// SUIT_Study* stud = app->activeStudy(); -// if ( !stud ) return _PTR(Study)(aStudy); -// const int id = stud->id(); // virtual method, must return SALOMEDS_Study id - // get SALOMEDS_Study with this id from StudyMgr -// return aMgr->GetStudyByID( id ); -//} - -SOCC_Viewer::SOCC_Viewer( bool DisplayTrihedron ) -: OCCViewer_Viewer( DisplayTrihedron ) -{ -} - -SOCC_Viewer::~SOCC_Viewer() -{ -} - -bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj, - bool hilight, bool upd ) -{ - bool isInLocal = getAISContext()->HasOpenedContext(); - //SUIT_Study* ActiveStudy = SUIT_Application::getDesktop()->getActiveStudy(); - //SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() ); - - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - { - if ( !isInLocal ) - OCCViewer_Viewer::highlight( ite.Value(), hilight, false ); - // highlight subshapes only when local selection is active - else - { - /*if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISShape ) ) ) - { - Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast( ite.Value() ); - TColStd_IndexedMapOfInteger MapIndex; - Sel->GetIndex( IObject, MapIndex ); - aSh->highlightSubShapes( MapIndex, highlight ); - }*/ - } - break; - } - } - - if( upd ) - update(); - - return false; -} - -bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj, - bool onlyInViewer ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects(List); - - if( !onlyInViewer ) { - AIS_ListOfInteractive List1; - getAISContext()->ObjectsInCollector(List1); - List.Append(List1); - } - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - return true; - } - return false; -} - -bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects( List ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - return getAISContext()->IsDisplayed( ite.Value() ); - } - - return false; -} - -void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj, - const QColor& color, bool update ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - { - OCCViewer_Viewer::setColor( ite.Value(), color, update ); - return; - } - } -} - -void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)& obj, - int mode, bool update ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - { - OCCViewer_Viewer::switchRepresentation( ite.Value(), mode, update ); - return; - } - } -} - -void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj, - float trans, bool update ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects( List ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) - { - OCCViewer_Viewer::setTransparency( ite.Value(), trans, update ); - return; - } - } -} - -void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj, - const QString& name ) -{ - AIS_ListOfInteractive List; - getAISContext()->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - while (ite.More()) - { - if (ite.Value()->IsKind(STANDARD_TYPE(SALOME_AISShape))) - { - Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast(ite.Value()); - - if ( aSh->hasIO() ) - { - Handle(SALOME_InteractiveObject) IO = aSh->getIO(); - if ( IO->isSame( obj ) ) - { - aSh->setName( (char*)name.latin1() ); - break; - } - } - } - else if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) - { - Handle(SALOME_AISObject) aSh = Handle(SALOME_AISObject)::DownCast( ite.Value() ); - - // Add code here, if someone create a MODULE_AISObject. - } - ite.Next(); - } -} - -//======================================================================= -// name : Display -// Purpose : Display presentation -//======================================================================= -void SOCC_Viewer::Display( const SALOME_OCCPrs* prs ) -{ - // try do downcast object - const SOCC_Prs* anOCCPrs = dynamic_cast( prs ); - if ( !anOCCPrs || anOCCPrs->IsNull() ) - return; - - // get SALOMEDS Study - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - // _PTR(Study) study(getStudyDS()); - - // get context - Handle (AIS_InteractiveContext) ic = getAISContext(); - - // get all displayed objects - AIS_ListOfInteractive List; - ic->DisplayedObjects( List ); - // get objects in the collector - AIS_ListOfInteractive ListCollector; - ic->ObjectsInCollector( ListCollector ); - - // get objects to be displayed - AIS_ListOfInteractive anAISObjects; - anOCCPrs->GetObjects( anAISObjects ); - - AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); - for ( ; aIter.More(); aIter.Next() ) - { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) - { - // try to find presentation in the viewer - bool bDisplayed = false; - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - // compare presentations by handles - // if the object is already displayed - nothing to do more - if ( ite.Value() == anAIS ) - { - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - bDisplayed = true; - break; - } - } - - if ( bDisplayed ) - continue; - - // then try to find presentation in the collector - bDisplayed = false; - ite.Initialize( ListCollector ); - for ( ; ite.More(); ite.Next() ) - { - // compare presentations by handles - // if the object is in collector - display it - if ( ite.Value() == anAIS ) - { - ic->DisplayFromCollector( anAIS, false ); - - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - bDisplayed = true; - - // Set visibility flag - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - //Handle(SALOME_InteractiveObject) anObj = - // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - //if ( !anObj.IsNull() && anObj->hasEntry() ) - //{ - // if ( study ) - // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); - //} - break; - } - } - if ( bDisplayed ) - continue; - - // if object is not displayed and not found in the collector - display it - if ( anAIS->IsKind( STANDARD_TYPE(AIS_Trihedron) ) ) - { - Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anAIS ); - double aNewSize = 100, aSize = 100; - getTrihedronSize( aNewSize, aSize ); - aTrh->SetSize( aTrh == getTrihedron() ? aNewSize : 0.5 * aNewSize ); - } - - ic->Display( anAIS, false ); - - // Set visibility flag - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - //Handle(SALOME_InteractiveObject) anObj = - // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - //if ( !anObj.IsNull() && anObj->hasEntry() ) - //{ - // if ( study ) - // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); - //} - - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - } - } -} - -//======================================================================= -// name : Erase -// Purpose : Erase presentation -//======================================================================= -void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced ) -{ - // try do downcast object - const SOCC_Prs* anOCCPrs = dynamic_cast( prs ); - if ( !anOCCPrs || anOCCPrs->IsNull() ) - return; - - // get SALOMEDS Study - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - // _PTR(Study) study(getStudyDS()); - - // get context - Handle(AIS_InteractiveContext) ic = getAISContext(); - - // get objects to be erased - AIS_ListOfInteractive anAISObjects; - anOCCPrs->GetObjects( anAISObjects ); - - AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); - for ( ; aIter.More(); aIter.Next() ) { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) { - // erase the object from context : move it to collector - ic->Erase( anAIS, false, forced ? false : true ); - - // Set visibility flag if necessary - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - //if ( !forced ) - //{ - // Handle(SALOME_InteractiveObject) anObj = - // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - // if ( !anObj.IsNull() && anObj->hasEntry() ) - // { - // if ( study ) - // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); - // } - //} - } - } -} - -//======================================================================= -// name : EraseAll -// Purpose : Erase all presentations -//======================================================================= -void SOCC_Viewer::EraseAll( const bool forced ) -{ - // get SALOMEDS Study - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - // _PTR(Study) study(getStudyDS()); - - // get context - Handle(AIS_InteractiveContext) ic = getAISContext(); - - // check if trihedron is displayed - Standard_Boolean isTrihedronDisplayed = ic->IsDisplayed( getTrihedron() ); - - // get objects to be erased (all currently displayed objects) - AIS_ListOfInteractive aList; - ic->DisplayedObjects( aList ); - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) { - if ( isTrihedronDisplayed && anIter.Value()->DynamicType() == STANDARD_TYPE( AIS_Trihedron ) ) - continue; - - // erase an object - Handle(AIS_InteractiveObject) anIO = anIter.Value(); - ic->Erase( anIO, false, forced ? false : true ); - - // Set visibility flag if necessary - // Temporarily commented to avoid awful dependecy on SALOMEDS - // TODO: better mechanism of storing display/erse status in a study - // should be provided... - //if ( !forced ) { - // Handle(SALOME_InteractiveObject) anObj = - // Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() ); - - // if ( !anObj.IsNull() && anObj->hasEntry() ) { - // if ( study ) - // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); - // } - //} - } - - // display trihedron if necessary - if ( isTrihedronDisplayed ) - getAISContext()->Display( getTrihedron() ); - else - Repaint(); -} - -//======================================================================= -// name : CreatePrs -// Purpose : Create presentation corresponding to the entry -//======================================================================= -SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry ) -{ - SOCC_Prs* prs = new SOCC_Prs(); - if ( entry ) - { - // get context - Handle(AIS_InteractiveContext) ic = getAISContext(); - - // get displayed objects - AIS_ListOfInteractive List; - ic->DisplayedObjects( List ); - // get objects in the collector - AIS_ListOfInteractive ListCollector; - ic->ObjectsInCollector( ListCollector ); - List.Append( ListCollector ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), entry ) == 0 ) - prs->AddObject( ite.Value() ); - } - } - return prs; -} - -//======================================================================= -// name : LocalSelection -// Purpose : Activates selection of sub shapes -//======================================================================= -void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode ) -{ - Handle(AIS_InteractiveContext) ic = getAISContext(); - - const SOCC_Prs* anOCCPrs = dynamic_cast( thePrs ); - if ( ic.IsNull() ) - return; - - // Open local context if there is no one - bool allObjects = thePrs == 0 || thePrs->IsNull(); - if ( !ic->HasOpenedContext() ) { - ic->ClearCurrents( false ); - ic->OpenLocalContext( allObjects, true, true ); - } - - AIS_ListOfInteractive anObjs; - // Get objects to be activated - if ( allObjects ) - ic->DisplayedObjects( anObjs ); - else - anOCCPrs->GetObjects( anObjs ); - - // Activate selection of objects from prs - AIS_ListIteratorOfListOfInteractive aIter( anObjs ); - for ( ; aIter.More(); aIter.Next() ) { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) - { - if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) ) - { - ic->Load( anAIS, -1, false ); - ic->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)theMode ) ); - } - else if ( anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron) ) - { - ic->Load( anAIS, -1, false ); - ic->Activate( anAIS, theMode ); - } - } - } -} - -//======================================================================= -// name : GlobalSelection -// Purpose : Deactivates selection of sub shapes -//======================================================================= -void SOCC_Viewer::GlobalSelection( const bool update ) const -{ - Handle(AIS_InteractiveContext) ic = getAISContext(); - if ( !ic.IsNull() ) - { - ic->CloseAllContexts( false ); - if ( update ) - ic->CurrentViewer()->Redraw(); - } -} - -//======================================================================= -// name : BeforeDisplay -// Purpose : Axiluary method called before displaying of objects -//======================================================================= -void SOCC_Viewer::BeforeDisplay( SALOME_Displayer* d ) -{ - d->BeforeDisplay( this, SALOME_OCCViewType() ); -} - -//======================================================================= -// name : AfterDisplay -// Purpose : Axiluary method called after displaying of objects -//======================================================================= -void SOCC_Viewer::AfterDisplay( SALOME_Displayer* d ) -{ - d->AfterDisplay( this, SALOME_OCCViewType() ); -} - -//======================================================================= -// name : getTrihedronSize -// Purpose : Get new and current trihedron size corresponding to the -// current model size -//======================================================================= -bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize ) -{ - theNewSize = 100; - theSize = 100; - - //SRN: BUG IPAL8996, a usage of method ActiveView without an initialization - Handle(V3d_Viewer) viewer = getViewer3d(); - viewer->InitActiveViews(); - if(!viewer->MoreActiveViews()) return false; - - Handle(V3d_View) view3d = viewer->ActiveView(); - //SRN: END of fix - - if ( view3d.IsNull() ) - return false; - - double Xmin = 0, Ymin = 0, Zmin = 0, Xmax = 0, Ymax = 0, Zmax = 0; - double aMaxSide; - - view3d->View()->MinMaxValues( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax ); - - if ( Xmin == RealFirst() || Ymin == RealFirst() || Zmin == RealFirst() || - Xmax == RealLast() || Ymax == RealLast() || Zmax == RealLast() ) - return false; - - aMaxSide = Xmax - Xmin; - if ( aMaxSide < Ymax -Ymin ) aMaxSide = Ymax -Ymin; - if ( aMaxSide < Zmax -Zmin ) aMaxSide = Zmax -Zmin; - - float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.); - - static float EPS = 5.0E-3; - theSize = getTrihedron()->Size(); - theNewSize = aMaxSide*aSizeInPercents / 100.0; - - return fabs( theNewSize - theSize ) > theSize * EPS || - fabs( theNewSize - theSize) > theNewSize * EPS; -} - -//======================================================================= -// name : Repaint -// Purpose : -//======================================================================= -void SOCC_Viewer::Repaint() -{ -// onAdjustTrihedron(); - getViewer3d()->Update(); -} - -//======================================================================= -// name : createView -// Purpose : create SOCC_ViewWindow -//======================================================================= -SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop ) -{ - SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this); - initView( view ); - return view; -} +#include "SOCC_ViewModel.h" + +#include "SOCC_Prs.h" +#include "SOCC_ViewWindow.h" + +#include "SUIT_Session.h" +#include "SUIT_Application.h" + +//#include "ToolsGUI.h" + +// Temporarily commented to avoid awful dependecy on SALOMEDS +// TODO: better mechanism of storing display/erse status in a study +// should be provided... +//#include +//#include CORBA_CLIENT_HEADER(SALOMEDS) + +#include +#include + +#include +#include + +// Temporarily commented to avoid awful dependecy on SALOMEDS +// TODO: better mechanism of storing display/erse status in a study +// should be provided... +//#include +//#include +//#include +//#include + +//#include "SALOMEDSClient.hxx" +//#include "SALOMEDS_StudyManager.hxx" + +#include + +// in order NOT TO link with SalomeApp, here the code returns SALOMEDS_Study. +// SalomeApp_Study::studyDS() does it as well, but -- here it is retrieved from +// SALOMEDS::StudyManager - no linkage with SalomeApp. + +// Temporarily commented to avoid awful dependecy on SALOMEDS +// TODO: better mechanism of storing display/erse status in a study +// should be provided... +//static _PTR(Study) getStudyDS() +//{ +// SALOMEDSClient_Study* aStudy = NULL; +// _PTR(StudyManager) aMgr( new SALOMEDS_StudyManager() ); + + // get id of SUIT_Study, if it's a SalomeApp_Study, it will return + // id of its underlying SALOMEDS::Study +// SUIT_Application* app = SUIT_Session::session()->activeApplication(); +// if ( !app ) return _PTR(Study)(aStudy); +// SUIT_Study* stud = app->activeStudy(); +// if ( !stud ) return _PTR(Study)(aStudy); +// const int id = stud->id(); // virtual method, must return SALOMEDS_Study id + // get SALOMEDS_Study with this id from StudyMgr +// return aMgr->GetStudyByID( id ); +//} + +/*! + Constructor + \param DisplayTrihedron - is trihedron displayed +*/ +SOCC_Viewer::SOCC_Viewer( bool DisplayTrihedron ) +: OCCViewer_Viewer( DisplayTrihedron ) +{ +} + +/*! + Destructor +*/ +SOCC_Viewer::~SOCC_Viewer() +{ +} + +/*! + Hilights/unhilights object in viewer + \param obj - object to be updated + \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param update - update current viewer +*/ +bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj, + bool hilight, bool upd ) +{ + bool isInLocal = getAISContext()->HasOpenedContext(); + //SUIT_Study* ActiveStudy = SUIT_Application::getDesktop()->getActiveStudy(); + //SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() ); + + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects(List); + + AIS_ListIteratorOfListOfInteractive ite(List); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + { + if ( !isInLocal ) + OCCViewer_Viewer::highlight( ite.Value(), hilight, false ); + // highlight subshapes only when local selection is active + else + { + /*if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISShape ) ) ) + { + Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast( ite.Value() ); + TColStd_IndexedMapOfInteger MapIndex; + Sel->GetIndex( IObject, MapIndex ); + aSh->highlightSubShapes( MapIndex, highlight ); + }*/ + } + break; + } + } + + if( upd ) + update(); + + return false; +} + +/*! + \return true if object is in viewer or in collector + \param obj - object to be checked + \param onlyInViewer - search object only in viewer (so object must be displayed) +*/ +bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj, + bool onlyInViewer ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects(List); + + if( !onlyInViewer ) { + AIS_ListOfInteractive List1; + getAISContext()->ObjectsInCollector(List1); + List.Append(List1); + } + + AIS_ListIteratorOfListOfInteractive ite(List); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + return true; + } + return false; +} + +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ +bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects( List ); + + AIS_ListIteratorOfListOfInteractive ite( List ); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + return getAISContext()->IsDisplayed( ite.Value() ); + } + + return false; +} + +/*! + Sets color of object + \param obj - object to be updated + \param color - new color + \param update - update current viewer +*/ +void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj, + const QColor& color, bool update ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects(List); + + AIS_ListIteratorOfListOfInteractive ite(List); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + { + OCCViewer_Viewer::setColor( ite.Value(), color, update ); + return; + } + } +} + +/*! + Changes display mode of object + \param obj - object to be processed + \param mode - new display mode + \param update - update current viewer +*/ +void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)& obj, + int mode, bool update ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects(List); + + AIS_ListIteratorOfListOfInteractive ite(List); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + { + OCCViewer_Viewer::switchRepresentation( ite.Value(), mode, update ); + return; + } + } +} + +/*! + Changes transparency of object + \param obj - object to be processed + \param trans - new transparency + \param update - update current viewer +*/ +void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj, + float trans, bool update ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects( List ); + + AIS_ListIteratorOfListOfInteractive ite( List ); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) ) + { + OCCViewer_Viewer::setTransparency( ite.Value(), trans, update ); + return; + } + } +} + +/*! + Changes name of object + \param obj - object to be renamed + \param name - new name +*/ +void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj, + const QString& name ) +{ + AIS_ListOfInteractive List; + getAISContext()->DisplayedObjects(List); + + AIS_ListIteratorOfListOfInteractive ite(List); + while (ite.More()) + { + if (ite.Value()->IsKind(STANDARD_TYPE(SALOME_AISShape))) + { + Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast(ite.Value()); + + if ( aSh->hasIO() ) + { + Handle(SALOME_InteractiveObject) IO = aSh->getIO(); + if ( IO->isSame( obj ) ) + { + aSh->setName( (char*)name.latin1() ); + break; + } + } + } + else if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) + { + Handle(SALOME_AISObject) aSh = Handle(SALOME_AISObject)::DownCast( ite.Value() ); + + // Add code here, if someone create a MODULE_AISObject. + } + ite.Next(); + } +} + + +/*! + Display presentation + \param prs - presentation +*/ +void SOCC_Viewer::Display( const SALOME_OCCPrs* prs ) +{ + // try do downcast object + const SOCC_Prs* anOCCPrs = dynamic_cast( prs ); + if ( !anOCCPrs || anOCCPrs->IsNull() ) + return; + + // get SALOMEDS Study + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + // _PTR(Study) study(getStudyDS()); + + // get context + Handle (AIS_InteractiveContext) ic = getAISContext(); + + // get all displayed objects + AIS_ListOfInteractive List; + ic->DisplayedObjects( List ); + // get objects in the collector + AIS_ListOfInteractive ListCollector; + ic->ObjectsInCollector( ListCollector ); + + // get objects to be displayed + AIS_ListOfInteractive anAISObjects; + anOCCPrs->GetObjects( anAISObjects ); + + AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); + for ( ; aIter.More(); aIter.Next() ) + { + Handle(AIS_InteractiveObject) anAIS = aIter.Value(); + if ( !anAIS.IsNull() ) + { + // try to find presentation in the viewer + bool bDisplayed = false; + AIS_ListIteratorOfListOfInteractive ite( List ); + for ( ; ite.More(); ite.Next() ) + { + // compare presentations by handles + // if the object is already displayed - nothing to do more + if ( ite.Value() == anAIS ) + { + // Deactivate object if necessary + if ( !anOCCPrs->ToActivate() ) + ic->Deactivate( anAIS ); + bDisplayed = true; + break; + } + } + + if ( bDisplayed ) + continue; + + // then try to find presentation in the collector + bDisplayed = false; + ite.Initialize( ListCollector ); + for ( ; ite.More(); ite.Next() ) + { + // compare presentations by handles + // if the object is in collector - display it + if ( ite.Value() == anAIS ) + { + ic->DisplayFromCollector( anAIS, false ); + + // Deactivate object if necessary + if ( !anOCCPrs->ToActivate() ) + ic->Deactivate( anAIS ); + bDisplayed = true; + + // Set visibility flag + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + //Handle(SALOME_InteractiveObject) anObj = + // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); + //if ( !anObj.IsNull() && anObj->hasEntry() ) + //{ + // if ( study ) + // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); + //} + break; + } + } + if ( bDisplayed ) + continue; + + // if object is not displayed and not found in the collector - display it + if ( anAIS->IsKind( STANDARD_TYPE(AIS_Trihedron) ) ) + { + Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anAIS ); + double aNewSize = 100, aSize = 100; + getTrihedronSize( aNewSize, aSize ); + aTrh->SetSize( aTrh == getTrihedron() ? aNewSize : 0.5 * aNewSize ); + } + + ic->Display( anAIS, false ); + + // Set visibility flag + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + //Handle(SALOME_InteractiveObject) anObj = + // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); + //if ( !anObj.IsNull() && anObj->hasEntry() ) + //{ + // if ( study ) + // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); + //} + + // Deactivate object if necessary + if ( !anOCCPrs->ToActivate() ) + ic->Deactivate( anAIS ); + } + } +} + + +/*! + Erase presentation + \param prs - presentation + \param forced - removes object from context +*/ +void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced ) +{ + // try do downcast object + const SOCC_Prs* anOCCPrs = dynamic_cast( prs ); + if ( !anOCCPrs || anOCCPrs->IsNull() ) + return; + + // get SALOMEDS Study + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + // _PTR(Study) study(getStudyDS()); + + // get context + Handle(AIS_InteractiveContext) ic = getAISContext(); + + // get objects to be erased + AIS_ListOfInteractive anAISObjects; + anOCCPrs->GetObjects( anAISObjects ); + + AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); + for ( ; aIter.More(); aIter.Next() ) { + Handle(AIS_InteractiveObject) anAIS = aIter.Value(); + if ( !anAIS.IsNull() ) { + // erase the object from context : move it to collector + ic->Erase( anAIS, false, forced ? false : true ); + + // Set visibility flag if necessary + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + //if ( !forced ) + //{ + // Handle(SALOME_InteractiveObject) anObj = + // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); + // if ( !anObj.IsNull() && anObj->hasEntry() ) + // { + // if ( study ) + // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); + // } + //} + } + } +} + + +/*! + Erase all presentations + \param forced - removes all objects from context +*/ +void SOCC_Viewer::EraseAll( const bool forced ) +{ + // get SALOMEDS Study + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + // _PTR(Study) study(getStudyDS()); + + // get context + Handle(AIS_InteractiveContext) ic = getAISContext(); + + // check if trihedron is displayed + Standard_Boolean isTrihedronDisplayed = ic->IsDisplayed( getTrihedron() ); + + // get objects to be erased (all currently displayed objects) + AIS_ListOfInteractive aList; + ic->DisplayedObjects( aList ); + AIS_ListIteratorOfListOfInteractive anIter( aList ); + for ( ; anIter.More(); anIter.Next() ) { + if ( isTrihedronDisplayed && anIter.Value()->DynamicType() == STANDARD_TYPE( AIS_Trihedron ) ) + continue; + + // erase an object + Handle(AIS_InteractiveObject) anIO = anIter.Value(); + ic->Erase( anIO, false, forced ? false : true ); + + // Set visibility flag if necessary + // Temporarily commented to avoid awful dependecy on SALOMEDS + // TODO: better mechanism of storing display/erse status in a study + // should be provided... + //if ( !forced ) { + // Handle(SALOME_InteractiveObject) anObj = + // Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() ); + + // if ( !anObj.IsNull() && anObj->hasEntry() ) { + // if ( study ) + // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this ); + // } + //} + } + + // display trihedron if necessary + if ( isTrihedronDisplayed ) + getAISContext()->Display( getTrihedron() ); + else + Repaint(); +} + +/*! + Create presentation corresponding to the entry + \param entry - entry +*/ +SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry ) +{ + SOCC_Prs* prs = new SOCC_Prs(); + if ( entry ) + { + // get context + Handle(AIS_InteractiveContext) ic = getAISContext(); + + // get displayed objects + AIS_ListOfInteractive List; + ic->DisplayedObjects( List ); + // get objects in the collector + AIS_ListOfInteractive ListCollector; + ic->ObjectsInCollector( ListCollector ); + List.Append( ListCollector ); + + AIS_ListIteratorOfListOfInteractive ite( List ); + for ( ; ite.More(); ite.Next() ) + { + Handle(SALOME_InteractiveObject) anObj = + Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); + + if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), entry ) == 0 ) + prs->AddObject( ite.Value() ); + } + } + return prs; +} + +/*! + Activates selection of sub shapes +*/ +void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode ) +{ + Handle(AIS_InteractiveContext) ic = getAISContext(); + + const SOCC_Prs* anOCCPrs = dynamic_cast( thePrs ); + if ( ic.IsNull() ) + return; + + // Open local context if there is no one + bool allObjects = thePrs == 0 || thePrs->IsNull(); + if ( !ic->HasOpenedContext() ) { + ic->ClearCurrents( false ); + ic->OpenLocalContext( allObjects, true, true ); + } + + AIS_ListOfInteractive anObjs; + // Get objects to be activated + if ( allObjects ) + ic->DisplayedObjects( anObjs ); + else + anOCCPrs->GetObjects( anObjs ); + + // Activate selection of objects from prs + AIS_ListIteratorOfListOfInteractive aIter( anObjs ); + for ( ; aIter.More(); aIter.Next() ) { + Handle(AIS_InteractiveObject) anAIS = aIter.Value(); + if ( !anAIS.IsNull() ) + { + if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) ) + { + ic->Load( anAIS, -1, false ); + ic->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)theMode ) ); + } + else if ( anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron) ) + { + ic->Load( anAIS, -1, false ); + ic->Activate( anAIS, theMode ); + } + } + } +} + +/*! + Deactivates selection of sub shapes +*/ +void SOCC_Viewer::GlobalSelection( const bool update ) const +{ + Handle(AIS_InteractiveContext) ic = getAISContext(); + if ( !ic.IsNull() ) + { + ic->CloseAllContexts( false ); + if ( update ) + ic->CurrentViewer()->Redraw(); + } +} + +/*! + Auxiliary method called before displaying of objects +*/ +void SOCC_Viewer::BeforeDisplay( SALOME_Displayer* d ) +{ + d->BeforeDisplay( this, SALOME_OCCViewType() ); +} + +/*! + Auxiliary method called after displaying of objects +*/ +void SOCC_Viewer::AfterDisplay( SALOME_Displayer* d ) +{ + d->AfterDisplay( this, SALOME_OCCViewType() ); +} + +/*! + Get new and current trihedron size corresponding to the current model size +*/ +bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize ) +{ + theNewSize = 100; + theSize = 100; + + //SRN: BUG IPAL8996, a usage of method ActiveView without an initialization + Handle(V3d_Viewer) viewer = getViewer3d(); + viewer->InitActiveViews(); + if(!viewer->MoreActiveViews()) return false; + + Handle(V3d_View) view3d = viewer->ActiveView(); + //SRN: END of fix + + if ( view3d.IsNull() ) + return false; + + double Xmin = 0, Ymin = 0, Zmin = 0, Xmax = 0, Ymax = 0, Zmax = 0; + double aMaxSide; + + view3d->View()->MinMaxValues( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax ); + + if ( Xmin == RealFirst() || Ymin == RealFirst() || Zmin == RealFirst() || + Xmax == RealLast() || Ymax == RealLast() || Zmax == RealLast() ) + return false; + + aMaxSide = Xmax - Xmin; + if ( aMaxSide < Ymax -Ymin ) aMaxSide = Ymax -Ymin; + if ( aMaxSide < Zmax -Zmin ) aMaxSide = Zmax -Zmin; + + float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.); + + static float EPS = 5.0E-3; + theSize = getTrihedron()->Size(); + theNewSize = aMaxSide*aSizeInPercents / 100.0; + + return fabs( theNewSize - theSize ) > theSize * EPS || + fabs( theNewSize - theSize) > theNewSize * EPS; +} + + +/*! + Updates current viewer +*/ +void SOCC_Viewer::Repaint() +{ +// onAdjustTrihedron(); + getViewer3d()->Update(); +} + + +/*! + create SOCC_ViewWindow +*/ +SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop ) +{ + SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this); + initView( view ); + return view; +} diff --git a/src/SOCC/SOCC_ViewWindow.cxx b/src/SOCC/SOCC_ViewWindow.cxx index ce28624a0..444b6ef74 100644 --- a/src/SOCC/SOCC_ViewWindow.cxx +++ b/src/SOCC/SOCC_ViewWindow.cxx @@ -22,7 +22,9 @@ #include "SUIT_Accel.h" -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SOCC_ViewWindow ::SOCC_ViewWindow( SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel) @@ -30,14 +32,19 @@ SOCC_ViewWindow { } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SOCC_ViewWindow ::~SOCC_ViewWindow() { } -//---------------------------------------------------------------------------- -void +/*! + Performs action + \param theAction - type of action +*/ +bool SOCC_ViewWindow ::action( const int theAction ) { @@ -91,5 +98,6 @@ SOCC_ViewWindow myViewPort->rotate( cx, cy + inc ); myViewPort->endRotation(); break; - } + } + return true; } diff --git a/src/SOCC/SOCC_ViewWindow.h b/src/SOCC/SOCC_ViewWindow.h index 7b4f22551..413ee469d 100644 --- a/src/SOCC/SOCC_ViewWindow.h +++ b/src/SOCC/SOCC_ViewWindow.h @@ -35,7 +35,7 @@ public: virtual ~SOCC_ViewWindow(); protected: - virtual void action( const int ); + virtual bool action( const int ); }; diff --git a/src/SPlot2d/Makefile.in b/src/SPlot2d/Makefile.in index 44334e80b..cf3f8c9fd 100644 --- a/src/SPlot2d/Makefile.in +++ b/src/SPlot2d/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -27,18 +45,6 @@ LIB_SRC = \ LIB_MOC = \ SPlot2d_ViewModel.h -#LIB_CLIENT_IDL = SALOMEDS.idl \ -# SALOME_Exception.idl \ -# SALOME_GenericObj.idl - -#LIB_CLIENT_IDL = SALOMEDS.idl \ -# SALOME_ModuleCatalog.idl \ -# SALOME_Component.idl \ -# SALOME_ContainerManager.idl \ -# SALOME_Exception.idl \ -# SALOME_GenericObj.idl - -#CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs diff --git a/src/SPlot2d/SPlot2d_Curve.cxx b/src/SPlot2d/SPlot2d_Curve.cxx index e6b2c5b83..caca33aaf 100644 --- a/src/SPlot2d/SPlot2d_Curve.cxx +++ b/src/SPlot2d/SPlot2d_Curve.cxx @@ -77,36 +77,59 @@ SPlot2d_Curve& SPlot2d_Curve::operator=( const SPlot2d_Curve& curve ) return *this; } +/*! + \return corresponding SALOME_InteractiveObject +*/ Handle(SALOME_InteractiveObject) SPlot2d_Curve::getIO() const { return myIO; } +/*! + Sets corresponding SALOME_InteractiveObject + \param io - SALOME_InteractiveObject +*/ void SPlot2d_Curve::setIO( const Handle(SALOME_InteractiveObject)& io ) { myIO = io; } +/*! + \return true if curve has table interactive object +*/ bool SPlot2d_Curve::hasTableIO() const { return !myTableIO.IsNull(); } +/*! + \return table interactive object of curve +*/ Handle(SALOME_InteractiveObject) SPlot2d_Curve::getTableIO() const { return myTableIO; } +/*! + Sets table interactive object of curve + \param io - SALOME_InteractiveObject +*/ void SPlot2d_Curve::setTableIO( const Handle(SALOME_InteractiveObject)& io ) { myTableIO = io; } +/*! + \return SALOME_InteractiveObject +*/ bool SPlot2d_Curve::hasIO() const { return !myIO.IsNull(); } +/*! + \return table title +*/ QString SPlot2d_Curve::getTableTitle() const { QString title; diff --git a/src/SPlot2d/SPlot2d_Prs.cxx b/src/SPlot2d/SPlot2d_Prs.cxx index 38756328c..ce54a8bfb 100644 --- a/src/SPlot2d/SPlot2d_Prs.cxx +++ b/src/SPlot2d/SPlot2d_Prs.cxx @@ -25,40 +25,34 @@ using namespace std; #endif -//========================================================== /*! - * SPlot2d_Prs::SPlot2d_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ SPlot2d_Prs::SPlot2d_Prs() :Plot2d_Prs() { } -//========================================================== /*! - * SPlot2d_Prs::SPlot2d_Prs - * Standard constructor - */ -//========================================================== + Standard constructor +*/ SPlot2d_Prs::SPlot2d_Prs( const Plot2d_Curve* obj ) :Plot2d_Prs(obj) { } +/*! + Standard constructor +*/ SPlot2d_Prs::SPlot2d_Prs( const Plot2d_Prs* prs ) { mySecondY = prs->isSecondY(); myCurves = prs->getCurves(); } -//========================================================== /*! - * SPlot2d_Prs::~SPlot2d_Prs - * Destructor - */ -//========================================================== + Destructor +*/ SPlot2d_Prs::~SPlot2d_Prs() { } diff --git a/src/SPlot2d/SPlot2d_ViewModel.cxx b/src/SPlot2d/SPlot2d_ViewModel.cxx index 554927ff5..14b9b2c6f 100644 --- a/src/SPlot2d/SPlot2d_ViewModel.cxx +++ b/src/SPlot2d/SPlot2d_ViewModel.cxx @@ -63,10 +63,6 @@ using namespace std; return aMgr->GetStudyByID( id ); } */ -//================================================================================= -// SPlot2d_Viewer implementation -//================================================================================= - /*! Constructor */ @@ -110,6 +106,11 @@ void SPlot2d_Viewer::rename( const Handle(SALOME_InteractiveObject)& IObject, aViewFrame->updateTitles(); } +/*! + Renames all copies of object in all view windows + \param IObj - object to be renamed + \param name - new name +*/ void SPlot2d_Viewer::renameAll( const Handle(SALOME_InteractiveObject)& IObj, const QString& name ) { SUIT_ViewManager* vm = getViewManager(); @@ -232,12 +233,9 @@ void SPlot2d_Viewer::Repaint() if(aViewFrame) aViewFrame->Repaint(); } -//========================================================== /*! - * SPlot2d_Viewer::Display - * Display presentation - */ -//========================================================== + Display presentation +*/ void SPlot2d_Viewer::Display( const SALOME_Prs2d* prs ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -245,12 +243,9 @@ void SPlot2d_Viewer::Display( const SALOME_Prs2d* prs ) if(aViewFrame && aPrs) aViewFrame->Display(aPrs); } -//========================================================== /*! - * SPlot2d_Viewer::Erase - * Erase presentation - */ -//========================================================== + Erase presentation +*/ void SPlot2d_Viewer::Erase( const SALOME_Prs2d* prs, const bool ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -258,12 +253,9 @@ void SPlot2d_Viewer::Erase( const SALOME_Prs2d* prs, const bool ) if(aViewFrame && aPrs) aViewFrame->Erase(aPrs); } -//========================================================== /*! - * SPlot2d_Viewer::CreatePrs - * Create presentation by entry - */ -//========================================================== + Create presentation by entry +*/ SALOME_Prs* SPlot2d_Viewer::CreatePrs( const char* entry ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -277,23 +269,17 @@ SALOME_Prs* SPlot2d_Viewer::CreatePrs( const char* entry ) return NULL; } -//========================================================== /*! - * SPlot2d_Viewer::BeforeDisplay - * Axiluary method called before displaying of objects - */ -//========================================================== + Axiluary method called before displaying of objects +*/ void SPlot2d_Viewer::BeforeDisplay( SALOME_Displayer* d ) { d->BeforeDisplay( this, SALOME_Plot2dViewType() ); } -//========================================================== /*! - * SPlot2d_Viewer::AfterDisplay - * Axiluary method called after displaying of objects - */ -//========================================================== + Axiluary method called after displaying of objects +*/ void SPlot2d_Viewer::AfterDisplay( SALOME_Displayer* d ) { d->AfterDisplay( this, SALOME_Plot2dViewType() ); @@ -331,12 +317,9 @@ Handle(SALOME_InteractiveObject) SPlot2d_Viewer::FindIObject( const char* Entry return anIO; } -//========================================================== /*! - * SPlot2d_Viewer::getActiveViewFrame - * Returns an active Plot2d ViewFrame or NULL - */ -//========================================================== + Returns an active Plot2d ViewFrame or NULL +*/ Plot2d_ViewFrame* SPlot2d_Viewer::getActiveViewFrame() { SUIT_ViewManager* aViewMgr = getViewManager(); @@ -349,6 +332,11 @@ Plot2d_ViewFrame* SPlot2d_Viewer::getActiveViewFrame() return NULL; } +/*! + \return curve by object and viewframe + \param theIObject - object + \param fr - viewframe +*/ SPlot2d_Curve* SPlot2d_Viewer::getCurveByIO( const Handle(SALOME_InteractiveObject)& theIObject, Plot2d_ViewFrame* fr ) { @@ -368,6 +356,9 @@ SPlot2d_Curve* SPlot2d_Viewer::getCurveByIO( const Handle(SALOME_InteractiveObje return NULL; } +/*! + SLOT: called when action "Clone view" is activated +*/ void SPlot2d_Viewer::onCloneView( Plot2d_ViewFrame* clonedVF, Plot2d_ViewFrame* newVF ) { if( !clonedVF || !newVF ) diff --git a/src/SPlot2d/SPlot2d_msg_en.po b/src/SPlot2d/SPlot2d_msg_en.po index 0653ee888..b68ec7b3d 100644 --- a/src/SPlot2d/SPlot2d_msg_en.po +++ b/src/SPlot2d/SPlot2d_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. translating # from French to English, "Foo::Bar" would be translated to "Pub", diff --git a/src/STD/Makefile.in b/src/STD/Makefile.in index 7bcec2561..5ad7fa383 100755 --- a/src/STD/Makefile.in +++ b/src/STD/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : STD diff --git a/src/STD/STD_Application.cxx b/src/STD/STD_Application.cxx index 68b7b1a06..7c0f33498 100755 --- a/src/STD/STD_Application.cxx +++ b/src/STD/STD_Application.cxx @@ -472,8 +472,11 @@ void STD_Application::onSaveDoc() if ( !isOk ) { putInfo( "" ); - SUIT_MessageBox::error1( desktop(), tr( "TIT_FILE_SAVEAS" ), - tr( "MSG_CANT_SAVE" ).arg( activeStudy()->studyName() ), tr( "BUT_OK" ) ); + // displaying a message box as SUIT_Validator in case file can't be written (the most frequent case) + SUIT_MessageBox::error1( desktop(), + tr( "ERR_ERROR" ), + tr( "ERR_PERMISSION_DENIED" ).arg( activeStudy()->studyName() ), + tr( "BUT_OK" ) ); } else putInfo( tr( "INF_DOC_SAVED" ).arg( "" ) ); @@ -510,7 +513,8 @@ bool STD_Application::onSaveAsDoc() if ( !isOk ) SUIT_MessageBox::error1( desktop(), tr( "ERROR" ), - tr( "INF_DOC_SAVING_FAILS" ).arg( aName ), tr( "BUT_OK" ) ); + tr( "INF_DOC_SAVING_FAILS" ).arg( aName ), + tr( "BUT_OK" ) ); } studySaved( activeStudy() ); @@ -835,6 +839,10 @@ QString STD_Application::getDirectory( const QString& initial, const QString& ca return QFileDialog::getExistingDirectory( initial, parent, 0, caption, true ); } +/*! + Changes desktop + \param desk - new desktop +*/ void STD_Application::setDesktop( SUIT_Desktop* desk ) { SUIT_Desktop* prev = desktop(); @@ -860,18 +868,30 @@ void STD_Application::savePreferences() { } +/*! + Custom activity after study is created + Updates desktop and actions +*/ void STD_Application::studyCreated( SUIT_Study* ) { updateDesktopTitle(); updateCommandsStatus(); } +/*! + Custom activity after study is opened + Updates desktop and actions +*/ void STD_Application::studyOpened( SUIT_Study* ) { updateDesktopTitle(); updateCommandsStatus(); } +/*! + Custom activity after study is opened + Updates desktop and actions +*/ void STD_Application::studySaved( SUIT_Study* ) { updateDesktopTitle(); diff --git a/src/STD/STD_CloseDlg.cxx b/src/STD/STD_CloseDlg.cxx index a06d8c6c5..bc6017978 100644 --- a/src/STD/STD_CloseDlg.cxx +++ b/src/STD/STD_CloseDlg.cxx @@ -85,12 +85,9 @@ STD_CloseDlg::STD_CloseDlg( QWidget* parent, bool modal, WFlags f ) connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) ); } -//================================================================================ /*! * \brief reaction on clicked(pressed) button */ -//================================================================================ - void STD_CloseDlg::onButtonClicked() { QPushButton* btn = ( QPushButton* )sender(); diff --git a/src/STD/resources/STD_images.po b/src/STD/resources/STD_images.po index 08410020c..f6b15c196 100755 --- a/src/STD/resources/STD_images.po +++ b/src/STD/resources/STD_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/STD/resources/STD_msg_en.po b/src/STD/resources/STD_msg_en.po index 2c5d9fd37..d5605763b 100755 --- a/src/STD/resources/STD_msg_en.po +++ b/src/STD/resources/STD_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -13,25 +31,25 @@ msgid "INF_READY" msgstr "Ready" msgid "BUT_OK" -msgstr "OK" +msgstr "&Ok" msgid "BUT_CANCEL" -msgstr "Cancel" +msgstr "&Cancel" msgid "BUT_CLOSE" -msgstr "Close" +msgstr "&Close" msgid "BUT_HELP" -msgstr "Help" +msgstr "&Help" msgid "BUT_YES" -msgstr "Yes" +msgstr "&Yes" msgid "BUT_NO" -msgstr "No" +msgstr "&No" msgid "BUT_APPLY" -msgstr "Apply" +msgstr "&Apply" msgid "ERR_ERROR" msgstr "Error" @@ -330,7 +348,7 @@ msgid "CLOSE_DLG_SAVE_CLOSE" msgstr "&Save&&Close" msgid "CLOSE_DLG_CLOSE" -msgstr "&Close w/o saving" +msgstr "C&lose w/o saving" msgid "CLOSE_DLG_UNLOAD" msgstr "&Unload" @@ -342,7 +360,7 @@ msgid "PRP_DESK_FILE_LOAD" msgstr "Load a document" msgid "MEN_DESK_FILE_LOAD" -msgstr "Conn&ect" +msgstr "Conn&ect..." msgid "CLOSE_DLG_CAPTION" msgstr "Close active study" diff --git a/src/SUIT/Makefile.in b/src/SUIT/Makefile.in index a6bab14a7..4a366b401 100755 --- a/src/SUIT/Makefile.in +++ b/src/SUIT/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : suit diff --git a/src/SUIT/SUIT_Accel.cxx b/src/SUIT/SUIT_Accel.cxx index 887b98bca..600ab2ebd 100644 --- a/src/SUIT/SUIT_Accel.cxx +++ b/src/SUIT/SUIT_Accel.cxx @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // SUIT_Accel.cxx: implementation of the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #include "SUIT_Accel.h" #include "SUIT_ViewWindow.h" @@ -30,9 +28,6 @@ #include -/*!\class SUIT_Accel - * Class handles keyboard accelerator bindings. - */ SUIT_Accel* SUIT_Accel::myself = 0; /*! Constructor [private].*/ @@ -125,8 +120,7 @@ bool SUIT_Accel::eventFilter( QObject *obj, QEvent *event ) if ( myMap.contains( type ) ) { IdActionMap idActionMap = myMap[type]; if ( idActionMap.contains( key ) ) { - vw->onAccelAction( idActionMap[key] ); - return true; + return vw->onAccelAction( idActionMap[key] ); } } } diff --git a/src/SUIT/SUIT_Accel.h b/src/SUIT/SUIT_Accel.h index ee3e96cf6..a5bec6b16 100644 --- a/src/SUIT/SUIT_Accel.h +++ b/src/SUIT/SUIT_Accel.h @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // SUIT_Accel.h: interface for the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #ifndef SUIT_Accel_h #define SUIT_Accel_h @@ -29,6 +27,10 @@ #include #include +/*! + \class SUIT_Accel + Manager of keyboard accelerator bindings +*/ class SUIT_EXPORT SUIT_Accel: public QObject { Q_OBJECT diff --git a/src/SUIT/SUIT_Application.cxx b/src/SUIT/SUIT_Application.cxx index bf0daebe6..1d8da2124 100755 --- a/src/SUIT/SUIT_Application.cxx +++ b/src/SUIT/SUIT_Application.cxx @@ -30,6 +30,9 @@ #include #include +/*! + Default constructor +*/ SUIT_Application::SUIT_Application() : QObject( 0 ), myStudy( 0 ), @@ -38,6 +41,9 @@ myStatusLabel( 0 ) { } +/*! + Destructor +*/ SUIT_Application::~SUIT_Application() { delete myStudy; @@ -46,37 +52,61 @@ SUIT_Application::~SUIT_Application() setDesktop( 0 ); } +/*! + \return main window of application (desktop) +*/ SUIT_Desktop* SUIT_Application::desktop() { return myDesktop; } +/*! + \return FALSE if application can not be closed (because of non saved data for example). + This method called by SUIT_Session whin closing of application was requested. +*/ bool SUIT_Application::isPossibleToClose() { return true; } +/*! + Performs some finalization of life cycle of this application. + For instance, the application can force its documents(s) to close. +*/ void SUIT_Application::closeApplication() { emit applicationClosed( this ); } +/*! + \return active Study. If Application supports wirking with several studies this method should be redefined +*/ SUIT_Study* SUIT_Application::activeStudy() const { return myStudy; } +/*! + \return version of application +*/ QString SUIT_Application::applicationVersion() const { return QString::null; } +/*! + Shows the application's main widget. For non GUI application must be redefined. +*/ void SUIT_Application::start() { if ( desktop() ) desktop()->show(); } +/*! + Opens document into active Study. If Study is empty - creates it. + \param theFileName - name of document file +*/ bool SUIT_Application::useFile( const QString& theFileName ) { createEmptyStudy(); @@ -93,22 +123,36 @@ bool SUIT_Application::useFile( const QString& theFileName ) return status; } +/*! + Opens other study into active Study. If Study is empty - creates it. + \param theName - name of study +*/ bool SUIT_Application::useStudy( const QString& theName ) { return false; } +/*! + Creates new empty Study if active Study = 0 +*/ void SUIT_Application::createEmptyStudy() { if ( !activeStudy() ) setActiveStudy( createNewStudy() ); } +/*! + \return number of Studies. + Must be redefined in Applications which support several studies for one Application instance. +*/ int SUIT_Application::getNbStudies() const { return activeStudy() ? 1 : 0; } +/*! + \return global resource manager +*/ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const { if ( !SUIT_Session::session() ) @@ -118,6 +162,12 @@ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const } #define DEFAULT_MESSAGE_DELAY 3000 + +/*! + Puts the message to the status bar + \param msg - text of message + \param msec - time in milliseconds, after that the status label will be cleared +*/ void SUIT_Application::putInfo ( const QString& msg, const int msec ) { if ( !desktop() ) @@ -135,11 +185,22 @@ void SUIT_Application::putInfo ( const QString& msg, const int msec ) QTimer::singleShot( msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec, myStatusLabel, SLOT( clear() ) ); } +/*! + Initialize with application arguments + \param argc - number of application arguments + \param argv - array of application arguments +*/ SUIT_Application* SUIT_Application::startApplication( int argc, char** argv ) const { return startApplication( name(), argc, argv ); } +/*! + Initialize with application name and arguments + \param name - name of application + \param argc - number of application arguments + \param argv - array of application arguments +*/ SUIT_Application* SUIT_Application::startApplication( const QString& name, int argc, char** argv ) const { SUIT_Session* session = SUIT_Session::session(); @@ -149,6 +210,10 @@ SUIT_Application* SUIT_Application::startApplication( const QString& name, int a return session->startApplication( name, argc, argv ); } +/*! + Sets the main window of application + \param desk - new main window (desktop) +*/ void SUIT_Application::setDesktop( SUIT_Desktop* desk ) { if ( myDesktop == desk ) @@ -160,11 +225,20 @@ void SUIT_Application::setDesktop( SUIT_Desktop* desk ) connect( myDesktop, SIGNAL( activated() ), this, SLOT( onDesktopActivated() ) ); } +/*! + Creates new instance of study. + By default, it is called from createEmptyStudy() + \sa createEmptyStudy() +*/ SUIT_Study* SUIT_Application::createNewStudy() { return new SUIT_Study( this ); } +/*! + Sets study as active + \param study - instance of study to be set as active +*/ void SUIT_Application::setActiveStudy( SUIT_Study* study ) { if ( myStudy == study ) @@ -173,6 +247,11 @@ void SUIT_Application::setActiveStudy( SUIT_Study* study ) myStudy = study; } +/*! + Creates new toolbar + \return identificator of new toolbar in tool manager + \param name - name of new toolbar +*/ int SUIT_Application::createTool( const QString& name ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -181,6 +260,14 @@ int SUIT_Application::createTool( const QString& name ) return desktop()->toolMgr()->createToolBar( name ); } +/*! + Creates new toolbutton + \return SUIT identificator of new action + \param a - action + \param tBar - identificator of toolbar + \param id - proposed SUIT identificator of action (if it is -1, then must be use any free) + \param idx - index in toolbar +*/ int SUIT_Application::createTool( QAction* a, const int tBar, const int id, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -191,6 +278,14 @@ int SUIT_Application::createTool( QAction* a, const int tBar, const int id, cons return intId != -1 ? regId : -1; } +/*! + Creates new toolbutton + \return SUIT identificator of new action + \param a - action + \param tBar - name of toolbar + \param id - proposed SUIT identificator of action (if it is -1, then must be use any free) + \param idx - index in toolbar +*/ int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -201,6 +296,13 @@ int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, return intId != -1 ? regId : -1; } +/*! + Creates new toolbutton + \return "id" if all right or -1 otherwise + \param id - SUIT identificator of action + \param tBar - identificator of toolbar + \param idx - index in toolbar +*/ int SUIT_Application::createTool( const int id, const int tBar, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -210,6 +312,13 @@ int SUIT_Application::createTool( const int id, const int tBar, const int idx ) return intId != -1 ? id : -1; } +/*! + Creates new toolbutton + \return "id" if all right or -1 otherwise + \param id - SUIT identificator of action + \param tBar - name of toolbar + \param idx - index in toolbar +*/ int SUIT_Application::createTool( const int id, const QString& tBar, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -219,6 +328,15 @@ int SUIT_Application::createTool( const int id, const QString& tBar, const int i return intId != -1 ? id : -1; } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param subMenu - menu text of new item + \param menu - identificator of parent menu item + \param id - proposed identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int index ) { @@ -228,6 +346,15 @@ int SUIT_Application::createMenu( const QString& subMenu, const int menu, return desktop()->menuMgr()->insert( subMenu, menu, group, id, index ); } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param subMenu - menu text of new item + \param menu - menu text of parent menu item + \param id - proposed identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int index ) { @@ -237,6 +364,15 @@ int SUIT_Application::createMenu( const QString& subMenu, const QString& menu, return desktop()->menuMgr()->insert( subMenu, menu, group, id, index ); } +/*! + Creates new menu item + \return SUIT identificator of new action + \param a - action + \param menu - identificator of parent menu item + \param id - proposed SUIT identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( QAction* a, const int menu, const int id, const int group, const int index ) { if ( !a || !desktop() || !desktop()->menuMgr() ) @@ -247,6 +383,15 @@ int SUIT_Application::createMenu( QAction* a, const int menu, const int id, cons return intId != -1 ? regId : -1; } +/*! + Creates new menu item + \return SUIT identificator of new action + \param a - action + \param menu - menu text of parent menu item + \param id - proposed SUIT identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, const int group, const int index ) { if ( !a || !desktop() || !desktop()->menuMgr() ) @@ -257,6 +402,14 @@ int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, return intId != -1 ? regId : -1; } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param id - SUIT identificator of action + \param menu - menu text of parent menu item + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const int id, const int menu, const int group, const int index ) { if ( !desktop() || !desktop()->menuMgr() ) @@ -266,6 +419,14 @@ int SUIT_Application::createMenu( const int id, const int menu, const int group, return intId != -1 ? id : -1; } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param id - SUIT identificator of action + \param menu - menu text of parent menu item + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const int id, const QString& menu, const int group, const int index ) { if ( !desktop() || !desktop()->menuMgr() ) @@ -275,40 +436,74 @@ int SUIT_Application::createMenu( const int id, const QString& menu, const int g return intId != -1 ? id : -1; } +/*! + Show/hide menu item corresponding to action + \param a - action + \param on - if it is true, the item will be shown, otherwise it will be hidden +*/ void SUIT_Application::setMenuShown( QAction* a, const bool on ) { setMenuShown( actionId( a ), on ); } +/*! + Show/hide menu item corresponding to action + \param id - identificator of action in menu manager + \param on - if it is true, the item will be shown, otherwise it will be hidden +*/ void SUIT_Application::setMenuShown( const int id, const bool on ) { if ( desktop() && desktop()->menuMgr() ) desktop()->menuMgr()->setShown( id, on ); } +/*! + Show/hide tool button corresponding to action + \param a - action + \param on - if it is true, the button will be shown, otherwise it will be hidden +*/ void SUIT_Application::setToolShown( QAction* a, const bool on ) { setToolShown( actionId( a ), on ); } +/*! + Show/hide menu item corresponding to action + \param id - identificator of action in tool manager + \param on - if it is true, the button will be shown, otherwise it will be hidden +*/ void SUIT_Application::setToolShown( const int id, const bool on ) { if ( desktop() && desktop()->toolMgr() ) desktop()->toolMgr()->setShown( id, on ); } +/*! + Show/hide both menu item and tool button corresponding to action + \param a - action + \param on - if it is true, the item will be shown, otherwise it will be hidden +*/ void SUIT_Application::setActionShown( QAction* a, const bool on ) { setMenuShown( a, on ); setToolShown( a, on ); } +/*! + Show/hide both menu item and tool button corresponding to action + \param id - identificator in both menu manager and tool manager + \param on - if it is true, the item will be shown, otherwise it will be hidden +*/ void SUIT_Application::setActionShown( const int id, const bool on ) { setMenuShown( id, on ); setToolShown( id, on ); } +/*! + \return action by it's SUIT identificator + \param id - SUIT identificator +*/ QAction* SUIT_Application::action( const int id ) const { QAction* a = 0; @@ -317,6 +512,10 @@ QAction* SUIT_Application::action( const int id ) const return a; } +/*! + \return SUIT identificator of action + \param a - action +*/ int SUIT_Application::actionId( const QAction* a ) const { int id = -1; @@ -329,6 +528,20 @@ int SUIT_Application::actionId( const QAction* a ) const return id; } +/*! + Creates action and registers it both in menu manager and tool manager + \return new instance of action + \param id - proposed SUIT identificator + \param text - description + \param icon - icon for toolbar + \param menu - menu text + \param tip - tool tip + \param key - shortcut + \param parent - parent object + \param toggle - if it is TRUE the action will be a toggle action, otherwise it will be a command action + \param reciever - object that contains slot + \param member - slot to be called when action is activated +*/ QAction* SUIT_Application::createAction( const int id, const QString& text, const QIconSet& icon, const QString& menu, const QString& tip, const int key, QObject* parent, const bool toggle, QObject* reciever, const char* member ) @@ -344,6 +557,11 @@ QAction* SUIT_Application::createAction( const int id, const QString& text, cons return a; } +/*! + Registers action both in menu manager and tool manager + \param id - proposed SUIT identificator (if it is -1, auto generated one is used) + \param a - action +*/ int SUIT_Application::registerAction( const int id, QAction* a ) { int ident = actionId( a ); @@ -367,11 +585,18 @@ int SUIT_Application::registerAction( const int id, QAction* a ) return ident; } +/*! + \return global action used as separator +*/ QAction* SUIT_Application::separator() { return QtxActionMgr::separator(); } +/*! + SLOT: it is called when desktop is activated +*/ + void SUIT_Application::onDesktopActivated() { emit activated( this ); diff --git a/src/SUIT/SUIT_Convertor.h b/src/SUIT/SUIT_Convertor.h index 36e1985da..0f1713b81 100755 --- a/src/SUIT/SUIT_Convertor.h +++ b/src/SUIT/SUIT_Convertor.h @@ -18,7 +18,6 @@ // // SUIT_Convertor.h: interface for the SUIT_Convertor class. // -////////////////////////////////////////////////////////////////////// #if !defined(AFX_SUIT_CONVERTOR_H__4C27F4C7_DC7C_4BEF_9DC1_EFB97B387EBF__INCLUDED_) #define AFX_SUIT_CONVERTOR_H__4C27F4C7_DC7C_4BEF_9DC1_EFB97B387EBF__INCLUDED_ diff --git a/src/SUIT/SUIT_DataObject.cxx b/src/SUIT/SUIT_DataObject.cxx index ddb393817..6240ed008 100755 --- a/src/SUIT/SUIT_DataObject.cxx +++ b/src/SUIT/SUIT_DataObject.cxx @@ -464,11 +464,17 @@ void SUIT_DataObject::setOn( const bool on ) myCheck = on; } +/*! + \return the opened state of the object (used in Object Browser). +*/ bool SUIT_DataObject::isOpen() const { return myOpen; } +/*! + Sets the opened state of the object (used in Object Browser). +*/ void SUIT_DataObject::setOpen( const bool on ) { myOpen = on; diff --git a/src/SUIT/SUIT_DataObject.h b/src/SUIT/SUIT_DataObject.h index bb14608c3..263698f06 100755 --- a/src/SUIT/SUIT_DataObject.h +++ b/src/SUIT/SUIT_DataObject.h @@ -37,7 +37,9 @@ typedef QPtrListIterator DataObjectListIterator; #endif /*! - Class provide support data object. + \class SUIT_DataObject + Data Object represents uniform data tree structure recommended to use in SUIT-based applications + Many of standard classes (DataModel,ObjectBrowser) deal with SUIT_DataObjects */ class SUIT_EXPORT SUIT_DataObject { @@ -116,6 +118,13 @@ private: friend class SUIT_DataObjectIterator; }; +/*! + \class SUIT_DataObject::Signal + Auxiliary class providing functionality to use signals of data object state change + SUIT_DataObject cannot have signals, because it isn't QObject, but + methods connect/disconnect of SUIT_DataObject with help of this it is possible + to emulate Qt signal processing +*/ class SUIT_DataObject::Signal : public QObject { Q_OBJECT diff --git a/src/SUIT/SUIT_DataObjectIterator.h b/src/SUIT/SUIT_DataObjectIterator.h index 45b8f7082..f697a0f68 100644 --- a/src/SUIT/SUIT_DataObjectIterator.h +++ b/src/SUIT/SUIT_DataObjectIterator.h @@ -22,7 +22,10 @@ #include "SUIT_DataObject.h" /*! - Class provide data object iterator. + \class SUIT_DataObjectIterator + Provides functionality of SUIT tree detour + It is possible to use "to-depth" or "to-breadth" detour and + to control level detour (from left or from right) */ class SUIT_EXPORT SUIT_DataObjectIterator { @@ -51,6 +54,11 @@ private: int myDetourType, myCurrentLevel; }; +/*! + \class SUIT_DataObjectIterator + Provides functionality of SUIT tree detour between certain levels + Only "to-breadth" detour is used +*/ class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator { public: diff --git a/src/SUIT/SUIT_DataOwner.cxx b/src/SUIT/SUIT_DataOwner.cxx index 28ceb5153..a7f562515 100755 --- a/src/SUIT/SUIT_DataOwner.cxx +++ b/src/SUIT/SUIT_DataOwner.cxx @@ -26,11 +26,6 @@ #define _typeinfo type_info #endif -//******************************************************************** -// SUIT_DataOwner class -//******************************************************************** - - /*! Constructor*/ SUIT_DataOwner::SUIT_DataOwner() { @@ -49,43 +44,42 @@ bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 ) return p1.isNull() && p2.isNull(); } -//******************************************************************** -/*! \class SUIT_DataOwnerPtrList - * implements value list with unique items (uniqueness is - * provided by operator==()) - */ -//******************************************************************** +/*! + \class SUIT_DataOwnerPtrList + implements value list with unique items (uniqueness is + provided by operator==()) +*/ -//==================================================================== -//! Constructor (default) -//==================================================================== +/*! + Constructor (default) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList() : QValueList(), mySkipEqual( true ) { } -//==================================================================== -//! Constructor (default) -//==================================================================== +/*! + Constructor (default) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) { } -//==================================================================== -//! Constructor (copy) -//==================================================================== +/*! + Constructor (copy) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l ) : QValueList( l ), mySkipEqual( true ) { } -//==================================================================== -//! Constructor (copy) -//==================================================================== +/*! + Constructor (copy) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) @@ -102,9 +96,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, co } #ifndef QT_NO_STL -//==================================================================== -//! Constructor (from stl) -//==================================================================== +/*! + Constructor (from stl) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list& l ) : QValueList( l ), mySkipEqual( true ) @@ -113,9 +107,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list #endif #ifndef QT_NO_STL -//==================================================================== -//! Constructor (from stl) -//==================================================================== +/*! + Constructor (from stl) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list& l, const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) @@ -127,9 +121,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list } #endif -//==================================================================== -//! Appends an item to the list -//==================================================================== +/*! + Appends an item to the list +*/ SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x ) { if( mySkipEqual && myMap.contains( x ) ) //contains uses SUIT_DataOwnerPtr::operator== @@ -143,9 +137,9 @@ SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOw return it; } -//==================================================================== -//! Clear list -//==================================================================== +/*! + Clear list +*/ void SUIT_DataOwnerPtrList::clear() { if( mySkipEqual ) @@ -153,9 +147,9 @@ void SUIT_DataOwnerPtrList::clear() QValueList::clear(); } -//==================================================================== -//! Remove an item from the list -//==================================================================== +/*! + Remove an item from the list +*/ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x ) { if( mySkipEqual && myMap.contains(x) ) @@ -163,9 +157,9 @@ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x ) return QValueList::remove( x ); } -//==================================================================== -//! -//==================================================================== +/*! + Operator < allows to order suit data owners for map +*/ bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 ) { return p1.get() #include "SUIT.h" +/*! + \class SUIT_FileValidator + Provides functionality to check file +*/ class SUIT_EXPORT SUIT_FileValidator { public: diff --git a/src/SUIT/SUIT_MessageBox.cxx b/src/SUIT/SUIT_MessageBox.cxx index 1d4d03cad..0e8630c91 100755 --- a/src/SUIT/SUIT_MessageBox.cxx +++ b/src/SUIT/SUIT_MessageBox.cxx @@ -16,12 +16,13 @@ // // See http://www.salome-platform.org/ // -/******************************************************************** -** Class: SUIT_MessageBox -** Descr: Message dialog box for SUIT-based application -** Module: SUIT -** Created: UI team, 02.10.00 -*********************************************************************/ + +/*! + \class: SUIT_MessageBox + Message dialog box for SUIT-based application + Module: SUIT + Created: UI team, 02.10.00 +*/ #include "SUIT_MessageBox.h" #include "SUIT_OverrideCursor.h" diff --git a/src/SUIT/SUIT_MessageBox.h b/src/SUIT/SUIT_MessageBox.h index f8cf626be..334ecb080 100755 --- a/src/SUIT/SUIT_MessageBox.h +++ b/src/SUIT/SUIT_MessageBox.h @@ -16,12 +16,7 @@ // // See http://www.salome-platform.org/ // -/******************************************************************** -** Class: SUIT_MessageBox -** Descr: Message dialog box for SUIT-based application -** Module: SUIT -** Created: UI team, 02.10.00 -*********************************************************************/ + #ifndef SUIT_MESSAGEBOX_H #define SUIT_MESSAGEBOX_H @@ -36,6 +31,10 @@ #define SUIT_NO 4 #define SUIT_HELP 5 +/*! + \class SUIT_MessageBox + \brief Message dialog box for SUIT-based application +*/ class SUIT_EXPORT SUIT_MessageBox { public: diff --git a/src/SUIT/SUIT_Operation.cxx b/src/SUIT/SUIT_Operation.cxx index 658ff2017..5426588c7 100755 --- a/src/SUIT/SUIT_Operation.cxx +++ b/src/SUIT/SUIT_Operation.cxx @@ -16,16 +16,15 @@ // // See http://www.salome-platform.org/ // -/** -* SALOME SalomeApp -* -* Copyright (C) 2005 CEA/DEN, EDF R&D -* -* -* -* File : SUIT_Operation.h -* Author : Unknown -* Module : SALOME + +/*! + SALOME SalomeApp + + Copyright (C) 2005 CEA/DEN, EDF R&D + + File : SUIT_Operation.h + Author : Unknown + Module : SALOME */ #include "SUIT_Operation.h" @@ -36,13 +35,13 @@ #include "SUIT_Application.h" /*! - * \brief Constructor - * \param SUIT_Application - application for this operation -* -* Constructs an empty operation. Constructor should work very fast because many -* operators may be created after starting application but only several from them -* may be used. As result this constructor stores given application in myApp field -* and set Waiting status. + \brief Constructor + \param SUIT_Application - application for this operation + + Constructs an empty operation. Constructor should work very fast because many + operators may be created after starting application but only several from them + may be used. As result this constructor stores given application in myApp field + and set Waiting status. */ SUIT_Operation::SUIT_Operation( SUIT_Application* app ) : QObject(), diff --git a/src/SUIT/SUIT_Operation.h b/src/SUIT/SUIT_Operation.h index 4f1b617b9..1c91a2b19 100755 --- a/src/SUIT/SUIT_Operation.h +++ b/src/SUIT/SUIT_Operation.h @@ -16,17 +16,6 @@ // // See http://www.salome-platform.org/ // -/** -* SALOME SalomeApp -* -* Copyright (C) 2005 CEA/DEN, EDF R&D -* -* -* -* File : SUIT_Operation.h -* Author : Unknown -* Module : SALOME -*/ #ifndef SUIT_OPERATION_H #define SUIT_OPERATION_H @@ -40,6 +29,7 @@ class SUIT_Study; class SUIT_Application; /*! + \class SUIT_Operation * \brief Base class for all operations * * Base class for all operations. If you perform an action it is reasonable to create diff --git a/src/SUIT/SUIT_ResourceMgr.cxx b/src/SUIT/SUIT_ResourceMgr.cxx index ed8f3a872..e76ed76b1 100755 --- a/src/SUIT/SUIT_ResourceMgr.cxx +++ b/src/SUIT/SUIT_ResourceMgr.cxx @@ -18,6 +18,9 @@ // #include "SUIT_ResourceMgr.h" +#include +#include + /*! Constructor */ @@ -61,15 +64,59 @@ QString SUIT_ResourceMgr::loadDoc( const QString& prefix, const QString& id ) co return path( docSection, prefix, id ); } +#include /*! Returns the user file name for specified application */ -QString SUIT_ResourceMgr::userFileName( const QString& appName ) const +QString SUIT_ResourceMgr::userFileName( const QString& appName, const bool for_load ) const { QString pathName = QtxResourceMgr::userFileName( appName ); if ( !version().isEmpty() ) pathName += QString( "." ) + version(); + if( !QFileInfo( pathName ).exists() && for_load ) + { + QString newName = findAppropriateUserFile( pathName ); + if( !newName.isEmpty() ) + pathName = newName; + } + return pathName; } + +/*! + Finds other the most appropriate user file instead missing one +*/ +QString SUIT_ResourceMgr::findAppropriateUserFile( const QString& fname ) const +{ + QDir d( QFileInfo( fname ).dir( true ) ); + d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks ); + QStringList l = d.entryList(); + QString appr_file; + int id0 = userFileId( fname ), id, appr=-1; + if( id0<0 ) + return appr_file; + + for( QStringList::const_iterator anIt = l.begin(), aLast = l.end(); anIt!=aLast; anIt++ ) + { + id = userFileId( *anIt ); + if( id<0 ) + continue; + + if( abs( id-id0 ) < abs( appr-id0 ) ) + { + appr = id; + appr_file = d.absFilePath( *anIt ); + } + } + return appr_file; +} + +/*! + Calculates integer extended version number by user file name for comparing +*/ +int SUIT_ResourceMgr::userFileId( const QString& ) const +{ + return -1; +} diff --git a/src/SUIT/SUIT_ResourceMgr.h b/src/SUIT/SUIT_ResourceMgr.h index 2b1a18bec..ebb380446 100755 --- a/src/SUIT/SUIT_ResourceMgr.h +++ b/src/SUIT/SUIT_ResourceMgr.h @@ -35,7 +35,9 @@ public: QString loadDoc( const QString&, const QString& ) const; protected: - virtual QString userFileName( const QString& ) const; + virtual QString userFileName( const QString&, const bool = true ) const; + virtual QString findAppropriateUserFile( const QString& ) const; + virtual int userFileId( const QString& ) const; private: QString myVersion; diff --git a/src/SUIT/SUIT_Selector.h b/src/SUIT/SUIT_Selector.h index 5d1ae0e3a..7d195ffbd 100755 --- a/src/SUIT/SUIT_Selector.h +++ b/src/SUIT/SUIT_Selector.h @@ -27,6 +27,13 @@ class SUIT_SelectionMgr; class SUIT_DataOwnerPtrList; +/*! + \class SUIT_Selector + Base class for all selectors used in SUIT-based applications. + Provides functionality to get/set selection from/into some widget + (ObjectBrowser, viewers, etc) + Used by selection manager for selection synhronizing +*/ class SUIT_EXPORT SUIT_Selector : public QObject { Q_OBJECT diff --git a/src/SUIT/SUIT_Session.cxx b/src/SUIT/SUIT_Session.cxx index 7eca7329a..baa32fd81 100755 --- a/src/SUIT/SUIT_Session.cxx +++ b/src/SUIT/SUIT_Session.cxx @@ -290,7 +290,7 @@ SUIT_Session::AppLib SUIT_Session::loadLibrary( const QString& name, QString& li #ifdef WIN32 lib = ::LoadLibrary( (char*)libFile.latin1() ); #else - lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY /*| RTLD_GLOBAL */ ); + lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY | RTLD_GLOBAL ); #endif return lib; } @@ -313,7 +313,7 @@ QString SUIT_Session::applicationName( const QString& str ) const */ SUIT_ResourceMgr* SUIT_Session::createResourceMgr( const QString& appName ) const { - return new SUIT_ResourceMgr( appName ); + return new SUIT_ResourceMgr( applicationName( appName ) ); } /*! diff --git a/src/SUIT/SUIT_Study.cxx b/src/SUIT/SUIT_Study.cxx index 995aede9e..ac8320b6c 100755 --- a/src/SUIT/SUIT_Study.cxx +++ b/src/SUIT/SUIT_Study.cxx @@ -117,11 +117,12 @@ void SUIT_Study::closeDocument(bool permanently) { } +/*! + Custom document initialization to be performed \n + within onNewDoc() handler can be put here +*/ void SUIT_Study::createDocument() { - /*! Custom document initialization to be performed \n - * within onNewDoc() handler can be put here - */ } /*! diff --git a/src/SUIT/SUIT_Tools.h b/src/SUIT/SUIT_Tools.h index 07d8ff059..56643dfea 100755 --- a/src/SUIT/SUIT_Tools.h +++ b/src/SUIT/SUIT_Tools.h @@ -27,6 +27,10 @@ #include #include +/*! + \class SUIT_Tools + Prodives set of auxiliary static methods +*/ class SUIT_EXPORT SUIT_Tools : public Qtx { public: diff --git a/src/SUIT/SUIT_TreeSync.h b/src/SUIT/SUIT_TreeSync.h index 19bdf4edd..1ce2a3a5a 100644 --- a/src/SUIT/SUIT_TreeSync.h +++ b/src/SUIT/SUIT_TreeSync.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SUIT_TREE_SYNC_HEADER #define SUIT_TREE_SYNC_HEADER @@ -5,25 +23,49 @@ #include #include +/*! + \struct DiffItem + \brief Struct representing difference between items +*/ template struct DiffItem { - SrcItem mySrc; //if it is null, then this item is to deleted - TrgItem myTrg; //if it is null, then this item is to added - //if both fields aren't null, then this item is to update + SrcItem mySrc; + /*! + \var mySrc + if it is null, then this item is to deleted + */ + TrgItem myTrg; + /*! + \var myTrg + if it is null, then this item is to added + if both fields aren't null, then this item is to update + */ }; +/*! + \brief synchronizes two trees +*/ template TrgItem synchronize( const SrcItem&, const TrgItem&, const TreeData& ); +/*! + \brief compares children +*/ template void diffSiblings( const SrcItem&, const TrgItem&, QValueList < DiffItem < SrcItem,TrgItem > >&, const TreeData& ); +/*! + \brief create item with children (subtree) +*/ template TrgItem createSubTree( const SrcItem&, const TrgItem&, const TrgItem&, const bool, const TreeData& ); +/*! + \brief find equal element in list +*/ template const typename QValueList::const_iterator findEqual( const QValueList& l, const typename QValueList::const_iterator& first, @@ -33,8 +75,31 @@ const typename QValueList::const_iterator findEqual( const QValueList +
  • bool isEqual( const SrcItem&, const TrgItem& ) const - returns true if items are equal +
  • SrcItem nullSrc() const - returns null SrcItem +
  • TrgItem nullTrg() const - returns null TrgItem +
  • TrgItem createItem( +
      +
    1. const SrcItem& src, - corresponding SrcItem +
    2. const TrgItem& parent, - parent TrgItem +
    3. const TrgItem& after, - TrgItem after that new item must be added +
    4. const bool prepend - whether new item must be added as first +
    + ) const - creates new TrgItem +
  • void updateItem( const TrgItem& ) const - updates TrgItem without recreation +
  • void deleteItemWithChildren( const TrgItem& ) const - deletes TrgItem with all children +
  • void children( const SrcItem&, QValueList& ) const - fills list with children +
  • void children( const TrgItem&, QValueList& ) const - fills list with children +
  • SrcItem parent( const SrcItem& ) const - return parent SrcItem +
  • TrgItem parent( const TrgItem& ) const - return parent SrcItem + +*/ template TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) { @@ -48,7 +113,6 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) diffSiblings( r1, r2, d, td ); typename QValueList< DiffItem< SrcItem, TrgItem > >::const_iterator anIt = d.begin(), aLast = d.end(); - bool isFirst = true; TrgItem lastItem = td.nullTrg(); // TrgItem tail = td.nullTrg(); for( ; anIt!=aLast; anIt++ ) @@ -64,7 +128,9 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) if( item.myTrg==td.nullTrg() ) { //to add - lastItem = createSubTree( item.mySrc, r2, lastItem, isFirst, td ); + TrgItem nitem = createSubTree( item.mySrc, r2, lastItem, lastItem==td.nullTrg(), td ); + if( nitem!=td.nullTrg() ) + lastItem = nitem; } else { @@ -73,10 +139,9 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) synchronize( item.mySrc, item.myTrg, td ); lastItem = item.myTrg; } - isFirst = false; } } - + return r2; } else @@ -88,6 +153,14 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) } } +/*! + Finds equal element in list + \return iterator + \param l - list to search + \param first - start iterator + \param it - item to be found + \param td - tree data object (provides auxiliary methods) +*/ template const typename QValueList::const_iterator findEqual( const QValueList& l, const typename QValueList::const_iterator& first, @@ -101,13 +174,20 @@ const typename QValueList::const_iterator findEqual( const QValueList void diffSiblings( const SrcItem& src, const TrgItem& trg, QValueList < DiffItem < SrcItem,TrgItem > >& d, const TreeData& td ) { - if( src==td.nullSrc() || trg==td.nullTrg() ) - return; + //if( src==td.nullSrc() || trg==td.nullTrg() ) + // return; QValueList src_ch; QValueList trg_ch; @@ -155,6 +235,15 @@ void diffSiblings( const SrcItem& src, const TrgItem& trg, } } +/*! + Creates sub-tree + \return root of just created sub-tree + \param src - corresponding SrcItem + \param parent - parent of new TrgItem + \param after - TrgItem, after that new item must be added + \param asFirst - true if TrgItem must be added as first + \param td - tree data object (provides auxiliary methods) +*/ template TrgItem createSubTree( const SrcItem& src, const TrgItem& parent, const TrgItem& after, const bool asFirst, diff --git a/src/SUIT/SUIT_ViewManager.cxx b/src/SUIT/SUIT_ViewManager.cxx index 69288994b..3158025d4 100755 --- a/src/SUIT/SUIT_ViewManager.cxx +++ b/src/SUIT/SUIT_ViewManager.cxx @@ -254,9 +254,9 @@ void SUIT_ViewManager::onDeleteStudy() myStudy = NULL; } +/*! invoke method of SUIT_PopupClient, which notifies about popup*/ void SUIT_ViewManager::onContextMenuRequested( QContextMenuEvent* e ) { - /*! invoke method of SUIT_PopupClient, which notifies about popup*/ contextMenuRequest( e ); } diff --git a/src/SUIT/SUIT_ViewModel.cxx b/src/SUIT/SUIT_ViewModel.cxx index 38a9aac1e..49bef3db8 100755 --- a/src/SUIT/SUIT_ViewModel.cxx +++ b/src/SUIT/SUIT_ViewModel.cxx @@ -18,7 +18,6 @@ // // SUIT_ViewModel.cxx: implementation of the SUIT_ViewModel class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewModel.h" diff --git a/src/SUIT/SUIT_ViewWindow.cxx b/src/SUIT/SUIT_ViewWindow.cxx index 3b013f679..a0e154a81 100755 --- a/src/SUIT/SUIT_ViewWindow.cxx +++ b/src/SUIT/SUIT_ViewWindow.cxx @@ -18,7 +18,6 @@ // // SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewWindow.h" #include "SUIT_Desktop.h" @@ -54,21 +53,36 @@ SUIT_ViewWindow::~SUIT_ViewWindow() { } +/*! + Sets new view manager for window + \param theManager - new view manager +*/ void SUIT_ViewWindow::setViewManager( SUIT_ViewManager* theManager ) { myManager = theManager; } +/*! + \return view manager of window +*/ SUIT_ViewManager* SUIT_ViewWindow::getViewManager() const { return myManager; } +/*! + \return QImage, containing all scene rendering in window +*/ QImage SUIT_ViewWindow::dumpView() { return QImage(); } +/*! + Saves scene rendering in window to file + \param fileName - name of file + \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG") +*/ bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format ) { QImage img = dumpView(); @@ -111,6 +125,9 @@ void SUIT_ViewWindow::onDumpView() qApp->postEvent( this, new QCustomEvent( DUMP_EVENT ) ); } +/*! + \return filters for image files +*/ QString SUIT_ViewWindow::filter() const { return tr( "TLT_IMAGE_FILES" ); @@ -148,22 +165,30 @@ bool SUIT_ViewWindow::event( QEvent* e ) /*! Called by SUIT_Accel::onActivated() when a key accelerator was activated and this window was active */ -void SUIT_ViewWindow::onAccelAction( int _action ) +bool SUIT_ViewWindow::onAccelAction( int _action ) { - action( _action ); + return action( _action ); } /*! action handle standard action (zoom, pan) or custom action. to be redefined in successors. */ -void SUIT_ViewWindow::action( const int ) +bool SUIT_ViewWindow::action( const int ) { + return true; } +/*! + \return string containing visual parameters of window +*/ QString SUIT_ViewWindow::getVisualParameters() { return "empty"; } - + +/*! + Sets visual parameters of window by its string representation + \param parameters - string with visual parameters +*/ void SUIT_ViewWindow::setVisualParameters( const QString& parameters ) { } diff --git a/src/SUIT/SUIT_ViewWindow.h b/src/SUIT/SUIT_ViewWindow.h index 200deb1c4..c32e6776a 100755 --- a/src/SUIT/SUIT_ViewWindow.h +++ b/src/SUIT/SUIT_ViewWindow.h @@ -18,7 +18,6 @@ // // SUIT_ViewWindow.h: interface for the SUIT_ViewWindow class. // -////////////////////////////////////////////////////////////////////// #if !defined(AFX_SUIT_VIEWWINDOW_H__82C3D51A_6F10_45B0_BCFE_3CB3EF596A4D__INCLUDED_) #define AFX_SUIT_VIEWWINDOW_H__82C3D51A_6F10_45B0_BCFE_3CB3EF596A4D__INCLUDED_ @@ -50,7 +49,7 @@ public: virtual QImage dumpView(); virtual bool dumpViewToFormat( const QString& fileName, const QString& format ); - void onAccelAction( int ); + bool onAccelAction( int ); virtual QString getVisualParameters(); virtual void setVisualParameters( const QString& parameters ); @@ -73,7 +72,7 @@ protected: void closeEvent( QCloseEvent* ); virtual void contextMenuEvent( QContextMenuEvent* ); virtual QString filter() const; - virtual void action( const int ); + virtual bool action( const int ); SUIT_Desktop* myDesktop; SUIT_ViewManager* myManager; diff --git a/src/SUIT/resources/SUIT_images.po b/src/SUIT/resources/SUIT_images.po index b22696bbd..7fa7e7f9d 100755 --- a/src/SUIT/resources/SUIT_images.po +++ b/src/SUIT/resources/SUIT_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/SUIT/resources/SUIT_msg_en.po b/src/SUIT/resources/SUIT_msg_en.po index 95f43c747..6de96c108 100755 --- a/src/SUIT/resources/SUIT_msg_en.po +++ b/src/SUIT/resources/SUIT_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -60,15 +78,6 @@ msgstr "The file \"%1\" does not exist!" msgid "ERR_PERMISSION_DENIED" msgstr "Can't save file \"%1\".\nPermission denied." -msgid "BUT_OK" -msgstr "&OK" - -msgid "BUT_YES" -msgstr "&Yes" - -msgid "BUT_NO" -msgstr "&No" - msgid "INF_DIRECTORIES_FILTER" msgstr "Directories" diff --git a/src/SUIT/utilities.h b/src/SUIT/utilities.h index cfc5ed0e5..fe27a2190 100755 --- a/src/SUIT/utilities.h +++ b/src/SUIT/utilities.h @@ -26,7 +26,7 @@ // Module : SALOME // $Header$ -/* --- Definition macros file to print informations if _DEBUG_ is defined --- */ +/*! --- Definition macros file to print informations if _DEBUG_ is defined --- */ #ifndef UTILITIES_H #define UTILITIES_H @@ -38,7 +38,7 @@ #include "LocalTraceBufferPool.hxx" -/** \file utilities.h +/*! \file utilities.h * For each message to put in the trace, a specific ostingstream object is \n * created and destroyed automatically at the end of the message macro. \n * The insert function of LocalTraceBufferPool class gets a buffer in a \n @@ -65,7 +65,7 @@ std::cerr << "ABORT return code= "<< code << std::endl; \ std::exit(code);} -/* --- To print date and time of compilation of current source --- */ +/*! --- To print date and time of compilation of current source --- */ #if defined ( __GNUC__ ) #define COMPILER "g++" @@ -90,7 +90,7 @@ << " at " << __TIME__ << MESS_END } #ifdef _DEBUG_ -/** @name the following MACROS are useful at debug time*/ +/*! @name the following MACROS are useful at debug time*/ //@{ #define MESSAGE(msg) {MESS_BEGIN("- Trace ") << msg << MESS_END} #define SCRUTE(var) {MESS_BEGIN("- Trace ") << #var << "=" << var < #include +#include #ifdef SUIT_ENABLE_PYTHON #include @@ -38,6 +39,7 @@ #include #include #include +#include #include @@ -101,7 +103,6 @@ public: SUITApp_Session( bool theIniFormat ) : SUIT_Session(), myIniFormat ( theIniFormat ) {} virtual ~SUITApp_Session() {} -protected: virtual SUIT_ResourceMgr* createResourceMgr( const QString& appName ) const { SUIT_ResourceMgr* resMgr = 0; @@ -139,13 +140,16 @@ int main( int args, char* argv[] ) QStringList argList; bool noExceptHandling = false; - bool iniFormat = false; + bool iniFormat = false; + bool noSplash = false; for ( int i = 1; i < args /*&& !noExceptHandling*/; i++ ) { - if ( !strcmp( argv[i], "/noexcepthandling" ) ) + if ( !strcmp( argv[i], "--noexcepthandling" ) ) noExceptHandling = true; else if ( !strcmp( argv[i], "--format=ini") ) iniFormat = true; + else if ( !strcmp( argv[i], "--nosplash") ) + noSplash = true; else argList.append( QString( argv[i] ) ); } @@ -156,6 +160,55 @@ int main( int args, char* argv[] ) if ( !argList.isEmpty() ) { SUITApp_Session* aSession = new SUITApp_Session( iniFormat ); + QtxSplash* splash = 0; + if ( !noSplash ) { + SUIT_ResourceMgr* resMgr = aSession->createResourceMgr( argList.first() ); + if ( resMgr ) { + resMgr->loadLanguage(); + QString splashIcon, splashInfo, splashTextColors; + resMgr->value( "splash", "image", splashIcon ); + resMgr->value( "splash", "info", splashInfo, false ); + resMgr->value( "splash", "text_colors", splashTextColors ); + QString appName = QObject::tr( "APP_NAME" ).stripWhiteSpace(); + QString appVersion = QObject::tr( "APP_VERSION" ).stripWhiteSpace(); + if ( appVersion == "APP_VERSION" ) { + if ( appName == "APP_NAME" || appName.lower() == "salome" ) + appVersion = salomeVersion(); + else + appVersion = ""; + } + QPixmap px( splashIcon ); + if ( !px.isNull() ) { + splash = QtxSplash::splash( px ); + if ( !splashTextColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashTextColors ); + QColor c1, c2; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + splash->setTextColors( c1, c2 ); + } + else { + splash->setTextColors( Qt::white, Qt::black ); + } +#ifdef _DEBUG_ + splash->setHideOnClick( true ); +#endif + QFont f = splash->font(); + f.setBold( true ); + splash->setFont( f ); + if ( !splashInfo.isEmpty() ) { + splashInfo.replace( QRegExp( "%A" ), appName ); + splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( appVersion ) ); + splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) ); + splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) ); + splashInfo.replace( QRegExp( "\\\\n" ), "\n" ); + splash->message( splashInfo ); + } + splash->show(); + qApp->processEvents(); + } + } + } SUIT_Application* theApp = aSession->startApplication( argList.first() ); if ( theApp ) { @@ -164,8 +217,12 @@ int main( int args, char* argv[] ) // if ( !app.mainWidget() ) // app.setMainWidget( theApp->desktop() ); + if ( splash ) + splash->finish( theApp->desktop() ); result = app.exec(); + if ( splash ) + delete splash; } delete aSession; } diff --git a/src/SUITApp/SUITApp_Application.cxx b/src/SUITApp/SUITApp_Application.cxx index 744d84acc..84f267953 100644 --- a/src/SUITApp/SUITApp_Application.cxx +++ b/src/SUITApp/SUITApp_Application.cxx @@ -31,6 +31,9 @@ #include #endif +/*! + Constructor +*/ SUITApp_Application::SUITApp_Application( int& argc, char** argv, SUIT_ExceptionHandler* hand ) : QApplication( argc, argv ), myExceptHandler( hand ) @@ -45,6 +48,9 @@ myExceptHandler( hand ) delete strTbl; } +/*! + Constructor +*/ SUITApp_Application::SUITApp_Application( int& argc, char** argv, Type type, SUIT_ExceptionHandler* hand ) : QApplication( argc, argv, type ), myExceptHandler( hand ) @@ -54,17 +60,30 @@ myExceptHandler( hand ) installTranslator( strTbl ); } +/*! + Sends event to receiver + \return the value that is returned from the receiver's event handler + \param e - event + \param receiver - receiver +*/ bool SUITApp_Application::notify( QObject* receiver, QEvent* e ) { return myExceptHandler ? myExceptHandler->handle( receiver, e ) : QApplication::notify( receiver, e ); } +/*! + Changes exception handler + \param hand - new handler +*/ void SUITApp_Application::setHandler( SUIT_ExceptionHandler* hand ) { myExceptHandler = hand; } +/*! + \return exception handler +*/ SUIT_ExceptionHandler* SUITApp_Application::handler() const { return myExceptHandler; diff --git a/src/SUITApp/resources/SUITApp_msg_en.po b/src/SUITApp/resources/SUITApp_msg_en.po index fa5399056..1cc1968c2 100644 --- a/src/SUITApp/resources/SUITApp_msg_en.po +++ b/src/SUITApp/resources/SUITApp_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# msgid "APP_ERROR" msgstr "Error" diff --git a/src/SUPERVGraph/Makefile.in b/src/SUPERVGraph/Makefile.in index 8772d041e..3c5c54963 100755 --- a/src/SUPERVGraph/Makefile.in +++ b/src/SUPERVGraph/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -34,7 +52,7 @@ RESOURCES_FILES = view_pan.png \ LIB_CLIENT_IDL = -CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib -lsuit diff --git a/src/SUPERVGraph/SUPERVGraph.cxx b/src/SUPERVGraph/SUPERVGraph.cxx index 2b8f3d87f..69aab0ec8 100755 --- a/src/SUPERVGraph/SUPERVGraph.cxx +++ b/src/SUPERVGraph/SUPERVGraph.cxx @@ -31,6 +31,9 @@ using namespace std; +/*! + Creates view +*/ SUIT_ViewWindow* SUPERVGraph::createView(SUIT_Desktop* parent) { return new SUPERVGraph_ViewFrame( parent/*, "vtkView"*/ ); @@ -38,6 +41,9 @@ SUIT_ViewWindow* SUPERVGraph::createView(SUIT_Desktop* parent) extern "C" { + /*! + Creates view + */ SUIT_ViewWindow* createView(SUIT_Desktop* parent) { return SUPERVGraph::createView(parent); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx index 716cc8fca..9bbf6431d 100755 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx @@ -38,21 +38,33 @@ using namespace std; +/*! + Constructor +*/ SUPERVGraph_View::SUPERVGraph_View( QWidget* theParent ): QWidget( theParent ) { init(theParent); } +/*! + Constructor +*/ SUPERVGraph_View::SUPERVGraph_View( SUPERVGraph_View* theParent ): QWidget( theParent ) { init(theParent); } +/*! + Builds popup for SUPERVGraph viewer +*/ void SUPERVGraph_View::contextMenuPopup( QPopupMenu* ) { // to be implemented } +/*! + Initialization +*/ void SUPERVGraph_View::init( QWidget* theParent ) { if ( theParent->inherits( "QMainWindow" ) ) { @@ -88,6 +100,9 @@ SUPERVGraph_ViewFrame::SUPERVGraph_ViewFrame( SUIT_Desktop* theDesktop ) createToolBar(); } +/*! + Creates actions of SUPERVGraph view window +*/ void SUPERVGraph_ViewFrame::createActions() { if (!myActionsMap.isEmpty()) return; @@ -109,16 +124,18 @@ void SUPERVGraph_ViewFrame::createActions() myActionsMap[ ResetId ] = aAction; } -//================================================================ -// Function : createToolBar -// Purpose : -//================================================================ +/*! + Creates toolbar of SUPERVGraph view window +*/ void SUPERVGraph_ViewFrame::createToolBar() { myActionsMap[PanId]->addTo(myToolBar); myActionsMap[ResetId]->addTo(myToolBar); } +/*! + Destructor +*/ SUPERVGraph_ViewFrame::~SUPERVGraph_ViewFrame() {} /*! @@ -130,10 +147,13 @@ SUPERVGraph_View* SUPERVGraph_ViewFrame::getViewWidget() } +/*! + Sets new view widget + \param theView - new view widget +*/ void SUPERVGraph_ViewFrame::setViewWidget( SUPERVGraph_View* theView ) { myView = theView; - setFocusProxy( myView ); // mkr : IPAL11388 } @@ -272,40 +292,69 @@ QColor SUPERVGraph_ViewFrame::backgroundColor() const return QMainWindow::backgroundColor(); } +/*! +*/ void SUPERVGraph_ViewFrame::onAdjustTrihedron() { // MESSAGE ( "SUPERVGraph_ViewFrame::onAdjustTrihedron" ) } +/*! + Changes name of object + \param obj - object to be renamed + \param name - new name +*/ void SUPERVGraph_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) { // MESSAGE ( "SUPERVGraph_ViewFrame::rename" ) } +/*! + Unhilights all object in viewer + \param updateviewer - update current viewer +*/ void SUPERVGraph_ViewFrame::unHighlightAll() { // MESSAGE ( "SUPERVGraph_ViewFrame::unHighlightAll" ) } +/*! + Hilights/unhilights object in viewer + \param obj - object to be updated + \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param update - update current viewer +*/ void SUPERVGraph_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight, bool immediatly ) { // MESSAGE ( "SUPERVGraph_ViewFrame::highlight" ) } +/*! + \return true if object is in viewer or in collector + \param obj - object to be checked + \param onlyInViewer - search object only in viewer (so object must be displayed) +*/ bool SUPERVGraph_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) { // MESSAGE ( "SUPERVGraph_ViewFrame::isInViewer" ) return false; } +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool SUPERVGraph_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) { // MESSAGE ( "SUPERVGraph_ViewFrame::isVisible" ) return false; } +/*! + Custom resize event handler +*/ void SUPERVGraph_ViewFrame::resizeEvent( QResizeEvent* theEvent ) { QMainWindow::resizeEvent( theEvent ); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx index 9cf508b31..fa3bfdb4a 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx @@ -20,6 +20,9 @@ int SUPERVGraph_ViewManager::myMaxId = 0; +/*! + Constructor +*/ SUPERVGraph_ViewManager::SUPERVGraph_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop, SUIT_ViewModel* theViewModel ) @@ -28,16 +31,27 @@ SUPERVGraph_ViewManager::SUPERVGraph_ViewManager( SUIT_Study* theStudy, myId = ++myMaxId; } +/*! + Destructor +*/ SUPERVGraph_ViewManager::~SUPERVGraph_ViewManager() { } +/*! + Sets view name + \param theView - view to assign name +*/ void SUPERVGraph_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( QString( "SUPERVISION scene:%1 - viewer:%2" ).arg( myId ).arg(aPos+1)); } +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void SUPERVGraph_ViewManager::contextMenuPopup( QPopupMenu* thePopup) { SUIT_ViewManager::contextMenuPopup( thePopup ); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx index c6fe5f9ea..aadb0a192 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx @@ -21,15 +21,25 @@ #include "SUIT_Desktop.h" #include "SUIT_ViewWindow.h" +/*! + Constructor +*/ SUPERVGraph_Viewer::SUPERVGraph_Viewer() :SUIT_ViewModel() { } +/*! + Destructor +*/ SUPERVGraph_Viewer::~SUPERVGraph_Viewer() { } +/*! + Creates new view window + \param theDesktop - main window of application +*/ SUIT_ViewWindow* SUPERVGraph_Viewer::createView(SUIT_Desktop* theDesktop) { SUPERVGraph_ViewFrame* aRes = new SUPERVGraph_ViewFrame( theDesktop ); diff --git a/src/SVTK/Makefile.in b/src/SVTK/Makefile.in index 58c7e6fdb..810689524 100755 --- a/src/SVTK/Makefile.in +++ b/src/SVTK/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander Solovyov(OCN) # Module : SVTK @@ -19,6 +37,7 @@ EXPORT_HEADERS= \ SALOME_Actor.h \ SVTK_RectPicker.h \ SVTK_DeviceActor.h \ + SVTK_DialogBase.h \ SVTK_FontWidget.h \ SVTK_CubeAxesActor2D.h \ SVTK_Functor.h \ @@ -38,7 +57,9 @@ EXPORT_HEADERS= \ SVTK_Event.h \ SVTK_ViewModelBase.h -PO_FILES = SVTK_msg_en.po +PO_FILES = \ + SVTK_msg_en.po \ + SVTK_images.po # Libraries targets LIB = libSVTK.la @@ -51,7 +72,9 @@ LIB_SRC= \ SVTK_DeviceActor.cxx \ SVTK_CubeAxesActor2D.cxx \ SVTK_NonIsometricDlg.cxx \ + SVTK_UpdateRateDlg.cxx \ SVTK_CubeAxesDlg.cxx \ + SVTK_DialogBase.cxx \ SVTK_FontWidget.cxx \ SVTK_Trihedron.cxx \ SVTK_MainWindow.cxx \ @@ -70,8 +93,10 @@ LIB_MOC = \ SVTK_GenericRenderWindowInteractor.h \ SVTK_RenderWindowInteractor.h \ SVTK_NonIsometricDlg.h \ + SVTK_UpdateRateDlg.h \ SVTK_CubeAxesDlg.h \ SVTK_FontWidget.h \ + SVTK_DialogBase.h \ SVTK_ViewModelBase.h \ SVTK_ViewManager.h \ SVTK_ViewWindow.h \ @@ -85,11 +110,13 @@ CPPFLAGS+= \ $(QT_INCLUDES) \ $(OCC_INCLUDES) \ $(VTK_INCLUDES) \ + $(QWT_INCLUDES) \ $(BOOST_CPPFLAGS) LDFLAGS+= \ $(QT_MT_LIBS) \ $(OCC_LIBS) \ + $(QWT_LIBS) \ $(VTK_LIBS) LIBS+= -lqtx -lsuit -lstd -lCAM -lSalomeObject -lSalomePrs -lVTKViewer diff --git a/src/SVTK/SALOME_Actor.cxx b/src/SVTK/SALOME_Actor.cxx index 9b1b7937d..bb100848c 100644 --- a/src/SVTK/SALOME_Actor.cxx +++ b/src/SVTK/SALOME_Actor.cxx @@ -73,7 +73,6 @@ using namespace std; int SALOME_POINT_SIZE = 5; int SALOME_LINE_WIDTH = 3; -//---------------------------------------------------------------------------- namespace { int @@ -83,12 +82,13 @@ namespace { int anEdgeId = 0; if (vtkCell* aPickedCell = theActor->GetElemCell(theObjId)) { - float aPickPosition[3]; + vtkFloatingPointType aPickPosition[3]; thePicker->GetPickPosition(aPickPosition); - float aMinDist = 1000000.0, aDist = 0; + vtkFloatingPointType aMinDist = 1000000.0, aDist = 0; for (int i = 0, iEnd = aPickedCell->GetNumberOfEdges(); i < iEnd; i++){ if(vtkLine* aLine = vtkLine::SafeDownCast(aPickedCell->GetEdge(i))){ - int subId; float pcoords[3], closestPoint[3], weights[3]; + int subId; + vtkFloatingPointType pcoords[3], closestPoint[3], weights[3]; aLine->EvaluatePosition(aPickPosition,closestPoint,subId,pcoords,aDist,weights); if (aDist < aMinDist) { aMinDist = aDist; @@ -122,11 +122,11 @@ namespace } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SALOME_Actor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SALOME_Actor ::SALOME_Actor(): myRenderer(NULL), @@ -164,14 +164,17 @@ SALOME_Actor myOutlineActor->SetVisibility( false ); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SALOME_Actor ::~SALOME_Actor() {} -//---------------------------------------------------------------------------- +/*! + \return true if the SALOME_Actor has a reference to SALOME_InteractiveObject +*/ Standard_Boolean SALOME_Actor ::hasIO() @@ -179,6 +182,9 @@ SALOME_Actor return !myIO.IsNull(); } +/*! + \return correspoinding reference to SALOME_InteractiveObject +*/ const Handle(SALOME_InteractiveObject)& SALOME_Actor ::getIO() @@ -186,6 +192,10 @@ SALOME_Actor return myIO; } +/*! + Sets reference to SALOME_InteractiveObject + \param theIO - new SALOME_InteractiveObject +*/ void SALOME_Actor ::setIO(const Handle(SALOME_InteractiveObject)& theIO) @@ -193,6 +203,10 @@ SALOME_Actor myIO = theIO; } +/*! + Sets name the SALOME_Actor + \param theName - new name +*/ void SALOME_Actor ::setName(const char* theName) @@ -203,7 +217,9 @@ SALOME_Actor } -//---------------------------------------------------------------------------- +/*! + Publishes the actor in all its internal devices +*/ void SALOME_Actor ::AddToRender(vtkRenderer* theRenderer) @@ -217,6 +233,9 @@ SALOME_Actor theRenderer->AddActor( myOutlineActor.GetPointer() ); } +/*! + Removes the actor from all its internal devices +*/ void SALOME_Actor ::RemoveFromRender(vtkRenderer* theRenderer) @@ -228,6 +247,9 @@ SALOME_Actor theRenderer->RemoveActor( myOutlineActor.GetPointer() ); } +/*! + \return reference on renderer where it is published +*/ vtkRenderer* SALOME_Actor ::GetRenderer() @@ -235,8 +257,10 @@ SALOME_Actor return myRenderer; } - -//---------------------------------------------------------------------------- +/*! + Sets interactor in order to use vtkInteractorObserver devices + \param theInteractor - new interactor +*/ void SALOME_Actor ::SetInteractor(vtkRenderWindowInteractor* theInteractor) @@ -244,6 +268,9 @@ SALOME_Actor myInteractor = theInteractor; } +/*! + Put a request to redraw the view +*/ void SALOME_Actor ::Update() @@ -251,8 +278,10 @@ SALOME_Actor myInteractor->CreateTimer(VTKI_TIMER_UPDATE); } - -//---------------------------------------------------------------------------- +/*! + Apply view transformation + \param theTransform - transformation +*/ void SALOME_Actor ::SetTransform(VTKViewer_Transform* theTransform) @@ -264,10 +293,14 @@ SALOME_Actor myOutlineActor->SetTransform(theTransform); } - +/*! + Apply additional position +*/ void SALOME_Actor -::SetPosition(float _arg1, float _arg2, float _arg3) +::SetPosition(vtkFloatingPointType _arg1, + vtkFloatingPointType _arg2, + vtkFloatingPointType _arg3) { Superclass::SetPosition(_arg1,_arg2,_arg3); @@ -276,16 +309,20 @@ SALOME_Actor myOutlineActor->SetPosition(_arg1,_arg2,_arg3); } - +/*! + Apply additional position +*/ void SALOME_Actor -::SetPosition(float _arg[3]) +::SetPosition(vtkFloatingPointType _arg[3]) { SetPosition(_arg[0],_arg[1],_arg[2]); } - -//---------------------------------------------------------------- +/*! + Shows/hides actor + \param theVisibility - new visibility state +*/ void SALOME_Actor ::SetVisibility( int theVisibility ) @@ -304,8 +341,10 @@ SALOME_Actor } } - -//---------------------------------------------------------------- +/*! + Set selector in order to the actor at any time can restore current selection + \param theSelector - new selector +*/ void SALOME_Actor ::SetSelector(SVTK_Selector* theSelector) @@ -313,6 +352,9 @@ SALOME_Actor mySelector = theSelector; } +/*! + To map current selection to VTK representation +*/ void SALOME_Actor ::Highlight(bool theIsHighlight) @@ -349,11 +391,14 @@ SALOME_Actor highlight(theIsHighlight); } +/*! + Updates visibility of the highlight devices +*/ void SALOME_Actor ::highlight(bool theIsHighlight) { - float aBounds[6]; + vtkFloatingPointType aBounds[6]; GetInput()->GetBounds(aBounds); myOutline->SetBounds(aBounds); myOutlineActor->SetVisibility( GetVisibility() && theIsHighlight ); @@ -362,13 +407,18 @@ SALOME_Actor } -//---------------------------------------------------------------- +/*! + To process prehighlight (called from SVTK_InteractorStyle) +*/ bool SALOME_Actor ::PreHighlight(vtkInteractorStyle *theInteractorStyle, SVTK_SelectionEvent* theSelectionEvent, bool theIsHighlight) { + if ( !GetPickable() ) + return false; + vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer(); // myPreHighlightActor->SetVisibility( false ); @@ -377,9 +427,9 @@ SALOME_Actor Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode; bool anIsChanged = (mySelectionMode != aSelectionMode); - float x = theSelectionEvent->myX; - float y = theSelectionEvent->myY; - float z = 0.0; + vtkFloatingPointType x = theSelectionEvent->myX; + vtkFloatingPointType y = theSelectionEvent->myY; + vtkFloatingPointType z = 0.0; if( !theIsHighlight ) { SetPreSelected( false ); @@ -500,14 +550,18 @@ SALOME_Actor return anIsChanged; } - -//---------------------------------------------------------------- +/*! + To process highlight (called from SVTK_InteractorStyle) +*/ bool SALOME_Actor ::Highlight(vtkInteractorStyle *theInteractorStyle, SVTK_SelectionEvent* theSelectionEvent, bool theIsHighlight) { + if ( !GetPickable() ) + return false; + myOutlineActor->SetVisibility( false ); myHighlightActor->SetVisibility( false ); @@ -515,13 +569,16 @@ SALOME_Actor // Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode; bool anIsShift = theSelectionEvent->myIsShift; - if( !anIsShift ) { + if( !anIsShift || !theIsHighlight ) { mySelector->RemoveIObject( this ); } - float x = theSelectionEvent->myX; - float y = theSelectionEvent->myY; - float z = 0.0; + if ( !theIsHighlight ) + return true; + + vtkFloatingPointType x = theSelectionEvent->myX; + vtkFloatingPointType y = theSelectionEvent->myY; + vtkFloatingPointType z = 0.0; if( !theSelectionEvent->myIsRectangle ) { switch(aSelectionMode){ @@ -588,16 +645,16 @@ SALOME_Actor break; } }else{ - float xLast = theSelectionEvent->myLastX; - float yLast = theSelectionEvent->myLastY; - float zLast = 0.0; + vtkFloatingPointType xLast = theSelectionEvent->myLastX; + vtkFloatingPointType yLast = theSelectionEvent->myLastY; + vtkFloatingPointType zLast = 0.0; - float x1 = x < xLast ? x : xLast; - float y1 = y < yLast ? y : yLast; - float z1 = z < zLast ? z : zLast; - float x2 = x > xLast ? x : xLast; - float y2 = y > yLast ? y : yLast; - float z2 = z > zLast ? z : zLast; + vtkFloatingPointType x1 = x < xLast ? x : xLast; + vtkFloatingPointType y1 = y < yLast ? y : yLast; + vtkFloatingPointType z1 = z < zLast ? z : zLast; + vtkFloatingPointType x2 = x > xLast ? x : xLast; + vtkFloatingPointType y2 = y > yLast ? y : yLast; + vtkFloatingPointType z2 = z > zLast ? z : zLast; switch(aSelectionMode){ case NodeSelection: { @@ -611,7 +668,6 @@ SALOME_Actor if(aMapIter != aVectorIdsMap.end()){ const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second; vtkIdType anEnd = aVectorIds.size(); - SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin(); for(vtkIdType anId = 0; anId < anEnd; anId++ ) { int aPointId = aVectorIds[anId]; if( aPointId >= 0 && mySelector->IsValid( this, aPointId, true ) ) { @@ -633,8 +689,8 @@ SALOME_Actor } case ActorSelection : { - float aPnt[3]; - float* aBounds = GetBounds(); + vtkFloatingPointType aPnt[3]; + vtkFloatingPointType* aBounds = GetBounds(); bool anIsPicked = true; for( int i = 0; i <= 1; i++ ) { @@ -672,7 +728,6 @@ SALOME_Actor if(aMapIter != aVectorIdsMap.end()){ const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second; vtkIdType anEnd = aVectorIds.size(); - SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin(); for(vtkIdType anId = 0; anId < anEnd; anId++ ) { int aCellId = aVectorIds[anId]; if ( !mySelector->IsValid( this, aCellId ) ) @@ -698,7 +753,10 @@ SALOME_Actor return true; } -//---------------------------------------------------------------------------- +/*! + To set up a picker for nodal selection (initialized by SVTK_Renderer::AddActor) + \param thePointPicker - new picker +*/ void SALOME_Actor ::SetPointPicker(vtkPointPicker* thePointPicker) @@ -706,6 +764,10 @@ SALOME_Actor myPointPicker = thePointPicker; } +/*! + To set up a picker for cell selection (initialized by SVTK_Renderer::AddActor) + \param theCellPicker - new picker +*/ void SALOME_Actor ::SetCellPicker(vtkCellPicker* theCellPicker) @@ -713,6 +775,10 @@ SALOME_Actor myCellPicker = theCellPicker; } +/*! + To set up a picker for point rectangle selection (initialized by SVTK_Renderer::AddActor) + \param theRectPicker - new picker +*/ void SALOME_Actor ::SetPointRectPicker(SVTK_RectPicker* theRectPicker) @@ -720,6 +786,10 @@ SALOME_Actor myPointRectPicker = theRectPicker; } +/*! + To set up a picker for cell rectangle selection (initialized by SVTK_Renderer::AddActor) + \param theRectPicker - new picker +*/ void SALOME_Actor ::SetCellRectPicker(SVTK_RectPicker* theRectPicker) @@ -727,7 +797,9 @@ SALOME_Actor myCellRectPicker = theRectPicker; } -//---------------------------------------------------------------------------- +/*! + To set up a prehighlight property (initialized by SVTK_Renderer::AddActor) +*/ void SALOME_Actor ::SetPreHighlightProperty(vtkProperty* theProperty) @@ -735,6 +807,9 @@ SALOME_Actor myPreHighlightActor->SetProperty(theProperty); } +/*! + To set up a highlight property (initialized by SVTK_Renderer::AddActor) +*/ void SALOME_Actor ::SetHighlightProperty(vtkProperty* theProperty) diff --git a/src/SVTK/SALOME_Actor.h b/src/SVTK/SALOME_Actor.h index d377ff633..3539e4b73 100644 --- a/src/SVTK/SALOME_Actor.h +++ b/src/SVTK/SALOME_Actor.h @@ -100,12 +100,14 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor //! Apply additional position virtual void - SetPosition(float _arg1, float _arg2, float _arg3); + SetPosition(vtkFloatingPointType _arg1, + vtkFloatingPointType _arg2, + vtkFloatingPointType _arg3); //! Apply additional position virtual void - SetPosition(float _arg[3]); + SetPosition(vtkFloatingPointType _arg[3]); //---------------------------------------------------------------------------- //! Visibility management diff --git a/src/SVTK/SVTK.h b/src/SVTK/SVTK.h index d4d8cf530..69bf29c1c 100755 --- a/src/SVTK/SVTK.h +++ b/src/SVTK/SVTK.h @@ -16,17 +16,24 @@ // // See http://www.salome-platform.org/ // -#ifdef WNT -#ifdef SVTK_EXPORTS -#define SVTK_EXPORT __declspec(dllexport) -#else -#define SVTK_EXPORT __declspec(dllimport) -#endif -#else -#define SVTK_EXPORT -#endif - -#if defined WNT -#pragma warning ( disable: 4251 ) -#pragma warning ( disable: 4786 ) -#endif +#ifndef SVTK_H +#define SVTK_H + +#include "VTKViewer.h" + +#ifdef WNT +# ifdef SVTK_EXPORTS +# define SVTK_EXPORT __declspec(dllexport) +# else +# define SVTK_EXPORT __declspec(dllimport) +# endif +#else +# define SVTK_EXPORT +#endif + +#if defined WNT +#pragma warning ( disable: 4251 ) +#pragma warning ( disable: 4786 ) +#endif + +#endif diff --git a/src/SVTK/SVTK_Actor.cxx b/src/SVTK/SVTK_Actor.cxx index 337075bb1..dbe6aad1b 100644 --- a/src/SVTK/SVTK_Actor.cxx +++ b/src/SVTK/SVTK_Actor.cxx @@ -46,10 +46,11 @@ CopyPoints(vtkUnstructuredGrid* theGrid, vtkDataSet *theSourceDataSet) aPoints->Delete(); } -//======================================================================= - vtkStandardNewMacro(SVTK_Actor); +/*! + Constructor +*/ SVTK_Actor ::SVTK_Actor(): myUnstructuredGrid(vtkUnstructuredGrid::New()) @@ -62,7 +63,6 @@ SVTK_Actor myUnstructuredGrid->Allocate(); } -//---------------------------------------------------------------------------- void SVTK_Actor ::Initialize() @@ -70,8 +70,6 @@ SVTK_Actor SetInput(GetSource()); } - -//---------------------------------------------------------------------------- void SVTK_Actor ::SetSource(vtkUnstructuredGrid* theUnstructuredGrid) @@ -91,15 +89,14 @@ SVTK_Actor return myUnstructuredGrid.GetPointer(); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_Actor ::~SVTK_Actor() { } - -//---------------------------------------------------------------------------- const TColStd_IndexedMapOfInteger& SVTK_Actor ::GetMapIndex() const @@ -107,8 +104,6 @@ SVTK_Actor return myMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapCells(SALOME_Actor* theMapActor, @@ -136,8 +131,6 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapPoints(SALOME_Actor* theMapActor, @@ -151,7 +144,7 @@ SVTK_Actor aPoints->SetNumberOfPoints(aNbOfParts); for(int i = 0; i < aNbOfParts; i++){ int aPartId = theMapIndex( i+1 ); - if(float* aCoord = theMapActor->GetNodeCoord(aPartId)){ + if(vtkFloatingPointType* aCoord = theMapActor->GetNodeCoord(aPartId)){ aPoints->SetPoint(i,aCoord); myUnstructuredGrid->InsertNextCell(VTK_VERTEX,1,&i); } @@ -165,8 +158,6 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapEdge(SALOME_Actor* theMapActor, @@ -205,5 +196,3 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- diff --git a/src/SVTK/SVTK_CubeAxesActor2D.cxx b/src/SVTK/SVTK_CubeAxesActor2D.cxx index 3fdcf72f3..7c2d6ae8c 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.cxx +++ b/src/SVTK/SVTK_CubeAxesActor2D.cxx @@ -48,7 +48,6 @@ vtkCxxRevisionMacro(SVTK_CubeAxesActor2D, "$Revision$"); vtkStandardNewMacro(SVTK_CubeAxesActor2D); -//---------------------------------------------------------------------------- // Instantiate this object. SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D() { @@ -130,7 +129,6 @@ SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D() } -//---------------------------------------------------------------------------- SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D() { this->wireActorXY->Delete(); @@ -146,12 +144,10 @@ SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D() this->rgridMapperXZ->Delete(); } -//---------------------------------------------------------------------------- // Static variable describes connections in cube. static int Conn[8][3] = {{1,2,4}, {0,3,5}, {3,0,6}, {2,1,7}, {5,6,0}, {4,7,1}, {7,4,2}, {6,5,3}}; -//---------------------------------------------------------------------------- // Project the bounding box and compute edges on the border of the bounding // cube. Determine which parts of the edges are visible via intersection // with the boundary of the viewport (minus borders). @@ -198,8 +194,13 @@ int SVTK_CubeAxesActor2D::RenderOverlay(vtkViewport *viewport) return renderedSomething; } -static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRange2,bool theY){ - float tmp=-1000; +static void ChangeValues(vtkFloatingPointType* aArray1, + vtkFloatingPointType* aArray2, + vtkFloatingPointType *aRange1, + vtkFloatingPointType* aRange2, + bool theY) +{ + vtkFloatingPointType tmp=-1000; if (!theY){ for (int i=0; i<4; i++){ tmp = aArray1[i]; aArray1[i] = aArray2[i]; aArray2[i] = tmp; @@ -223,9 +224,15 @@ static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRa } } -static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords, - float* xRange,float* yRange,float* zRange, - const int xAxes,const int yAxes, const int zAxes) +static void ChangeArrays(vtkFloatingPointType* xCoords, + vtkFloatingPointType* yCoords, + vtkFloatingPointType* zCoords, + vtkFloatingPointType* xRange, + vtkFloatingPointType* yRange, + vtkFloatingPointType* zRange, + const int xAxes, + const int yAxes, + const int zAxes) { if ( xAxes == 0 && yAxes == 2 && zAxes == 1) ChangeValues(yCoords,zCoords,yRange,zRange,true); @@ -243,14 +250,13 @@ static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords, ChangeValues(zCoords,xCoords,zRange,xRange,false); } -//---------------------------------------------------------------------------- // Project the bounding box and compute edges on the border of the bounding // cube. Determine which parts of the edges are visible via intersection // with the boundary of the viewport (minus borders). int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) { - float bounds[6], slope = 0.0, minSlope, num, den; - float pts[8][3], d2, d2Min, min; + vtkFloatingPointType bounds[6], slope = 0.0, minSlope, num, den; + vtkFloatingPointType pts[8][3], d2, d2Min, min; int i, idx = 0; int xIdx, yIdx = 0, zIdx = 0, zIdx2, renderedSomething=0; int xAxes = 0, yAxes, zAxes; @@ -308,7 +314,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) } else { - float e1[2], e2[2], e3[2]; + vtkFloatingPointType e1[2], e2[2], e3[2]; // Find distance to origin d2Min = VTK_LARGE_FLOAT; @@ -401,7 +407,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) } // Setup the axes for plotting - float xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2]; + vtkFloatingPointType xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2]; this->AdjustAxes(pts, bounds, idx, xIdx, yIdx, zIdx, zIdx2, xAxes, yAxes, zAxes, xCoords, yCoords, zCoords, xRange, yRange, zRange); @@ -449,7 +455,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } // YCoords coordinates for Y grid @@ -459,7 +465,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } // ZCoords coordinates for Z grid @@ -469,7 +475,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } @@ -485,8 +491,8 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) rgrid->Delete(); - float aCPosition[3]; - float aCDirection[3]; + vtkFloatingPointType aCPosition[3]; + vtkFloatingPointType aCDirection[3]; this->Camera->GetPosition(aCPosition); this->Camera->GetDirectionOfProjection(aCDirection); @@ -494,12 +500,12 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) bool replaceXY=false; bool replaceYZ=false; bool replaceXZ=false; - float p[6][3]; // centers of planes - float vecs[6][3]; // 6 vectors from camera position to centers + vtkFloatingPointType p[6][3]; // centers of planes + vtkFloatingPointType vecs[6][3]; // 6 vectors from camera position to centers - float aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2; - float aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2; - float aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2; + vtkFloatingPointType aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2; + vtkFloatingPointType aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2; + vtkFloatingPointType aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2; // plane XY p[0][0] = aMiddleX; // plane X=0.5 Y=0.5 Z=0 @@ -555,7 +561,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) YCoords->Delete(); ZCoords->Delete(); - float color[3]; + vtkFloatingPointType color[3]; this->GetProperty()->GetColor(color); this->wireActorXY->GetProperty()->SetColor(color); @@ -644,7 +650,6 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) return renderedSomething; } -//---------------------------------------------------------------------------- // Release any graphics resources that are being consumed by this actor. // The parameter window could be used to determine which graphic // resources to release. diff --git a/src/SVTK/SVTK_CubeAxesActor2D.h b/src/SVTK/SVTK_CubeAxesActor2D.h index 1de1c1ce8..44e3e9810 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.h +++ b/src/SVTK/SVTK_CubeAxesActor2D.h @@ -41,7 +41,8 @@ class vtkPolyDataMapper; class vtkRectilinearGridGeometryFilter; class VTKViewer_Transform; -#include +#include "SVTK.h" +#include "VTKViewer.h" #ifndef WNT class VTK_HYBRID_EXPORT SVTK_CubeAxesActor2D : public vtkCubeAxesActor2D diff --git a/src/SVTK/SVTK_CubeAxesDlg.cxx b/src/SVTK/SVTK_CubeAxesDlg.cxx index 57c9e5694..d5c83a39b 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.cxx +++ b/src/SVTK/SVTK_CubeAxesDlg.cxx @@ -54,10 +54,9 @@ * Description : Tab of dialog */ -//======================================================================= -// name : SVTK_AxisWidget::AxisWg -// Purpose : Constructor -//======================================================================= +/*! + Constructor +*/ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) : QFrame(theParent) { @@ -143,6 +142,9 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked())); } +/*! + Destructor +*/ SVTK_AxisWidget::~SVTK_AxisWidget() { } @@ -154,10 +156,6 @@ void SVTK_AxisWidget::updateControlState() onTicksChecked(); } -//======================================================================= -// name : SVTK_AxisWidget::onNameChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) { QObjectList aChildren(*theGrp->children()); @@ -167,55 +165,31 @@ void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) ((QHBox*)anObj)->setEnabled(theState); } -//======================================================================= -// Labels : SVTK_AxisWidget::onLabelsChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onLabelsChecked() { setEnabled(myLabelsGrp, myIsLabelsVisible->isChecked()); } -//======================================================================= -// Labels : SVTK_AxisWidget::onTicksChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onTicksChecked() { setEnabled(myTicksGrp, myIsTicksVisible->isChecked()); } -//======================================================================= -// name : SVTK_AxisWidget::onNameChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onNameChecked() { setEnabled(myNameGrp, myIsNameVisible->isChecked()); } -//======================================================================= -// name : SVTK_AxisWidget::UseName -// Purpose : -//======================================================================= void SVTK_AxisWidget::UseName(const bool toUse) { myIsNameVisible->setChecked(toUse); } -//======================================================================= -// name : SVTK_AxisWidget::SetName -// Purpose : -//================================================== ===================== void SVTK_AxisWidget::SetName(const QString& theName) { myAxisName->setText(theName); } -//======================================================================= -// name : SVTK_AxisWidget::SetNameFont -// Purpose : -//======================================================================= void SVTK_AxisWidget::SetNameFont(const QColor& theColor, const int theFont, const bool theIsBold, @@ -225,10 +199,6 @@ void SVTK_AxisWidget::SetNameFont(const QColor& theColor, myNameFont->SetData(theColor, theFont, theIsBold, theIsItalic, theIsShadow); } -//======================================================================= -// name : SVTK_AxisWidget::SetNameFont -// Purpose : -//======================================================================= bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) { if (theActor == 0) @@ -248,7 +218,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) vtkTextProperty* aTitleProp = theActor->GetTitleTextProperty(); if (aTitleProp !=0) { - float c[ 3 ]; + vtkFloatingPointType c[ 3 ]; aTitleProp->GetColor(c); aTitleColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255)); aTitleFontFamily = aTitleProp->GetFontFamily(); @@ -276,7 +246,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) vtkTextProperty* aLabelsProp = theActor->GetLabelTextProperty(); if (aLabelsProp !=0) { - float c[ 3 ]; + vtkFloatingPointType c[ 3 ]; aLabelsProp->GetColor(c); aLabelsColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255)); aLabelsFontFamily = aLabelsProp->GetFontFamily(); @@ -300,10 +270,6 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) return true; } -//======================================================================= -// name : SVTK_CubeAxesDlg::Apply -// Purpose : -//======================================================================= bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) { if (theActor == 0) @@ -383,31 +349,30 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) Description : Dialog for specifynig cube axes properties */ -//======================================================================= -// name : SVTK_CubeAxesDlg::SVTK_CubeAxesDlg -// Purpose : Constructor -//======================================================================= -SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction): - QDialog(theParent, - theName, - false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myMainWindow(theParent), - myAction(theAction) +/*! + Constructor +*/ +SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName): + SVTK_DialogBase(theAction, + theParent, + theName), + myMainWindow(theParent) { setCaption(tr("CAPTION")); QVBoxLayout* aLay = new QVBoxLayout(this, 5, 5); aLay->addWidget(createMainFrame(this)); aLay->addWidget(createButtonFrame(this)); + + connect(theParent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow())); + connect(theParent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide())); } -//======================================================================= -// name : SVTK_CubeAxesDlg::createMainFrame -// Purpose : Create frame containing dialog's input fields -//======================================================================= +/*! + Create frame containing dialog's input fields +*/ QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent) { QFrame* aFrame = new QFrame(theParent); @@ -433,10 +398,9 @@ QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent) return aFrame; } -//======================================================================= -// name : SVTK_CubeAxesDlg::createButtonFrame -// Purpose : Create frame containing buttons -//======================================================================= +/*! + Create frame containing buttons +*/ QWidget* SVTK_CubeAxesDlg::createButtonFrame(QWidget* theParent) { QFrame* aFrame = new QFrame(theParent); @@ -462,18 +426,16 @@ QWidget* SVTK_CubeAxesDlg::createButtonFrame(QWidget* theParent) return aFrame; } -//======================================================================= -// name : SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg() { } -//======================================================================= -// name : SVTK_CubeAxesDlg::Update -// Purpose : Update dialog fields, connect signals and slots, show dialog -//======================================================================= +/*! + Update dialog fields, connect signals and slots, show dialog +*/ void SVTK_CubeAxesDlg::Update() { myActor = myMainWindow->GetCubeAxes(); @@ -485,19 +447,17 @@ void SVTK_CubeAxesDlg::Update() myIsVisible->setChecked(myActor->GetVisibility() ? true : false); } -//======================================================================= -// name : SVTK_CubeAxesDlg::isValid -// Purpose : Verify validity of entry data -//======================================================================= +/*! + Verify validity of entry data +*/ bool SVTK_CubeAxesDlg::isValid() const { return true; } -//======================================================================= -// name : SVTK_CubeAxesDlg::onApply -// Purpose : Verify validity of entry data -//======================================================================= +/*! + Verify validity of entry data +*/ bool SVTK_CubeAxesDlg::onApply() { bool isOk = true; @@ -534,29 +494,19 @@ bool SVTK_CubeAxesDlg::onApply() return isOk; } -//======================================================================= -// name : SVTK_CubeAxesDlg::onOk -// Purpose : SLOT called when "Ok" button pressed. -//======================================================================= +/*! + SLOT called when "Ok" button pressed. +*/ void SVTK_CubeAxesDlg::onOk() { if (onApply()) onClose(); } -//======================================================================= -// name : SVTK_CubeAxesDlg::onClose -// Purpose : SLOT called when "Close" button pressed. Close dialog -//======================================================================= +/*! + SLOT: called when "Close" button pressed. Close dialog +*/ void SVTK_CubeAxesDlg::onClose() { reject(); - - myAction->setOn( false ); -} - -void SVTK_CubeAxesDlg::done( int r ) -{ - myAction->setOn( false ); - QDialog::done( r ); } diff --git a/src/SVTK/SVTK_CubeAxesDlg.h b/src/SVTK/SVTK_CubeAxesDlg.h index 642306084..b8047e201 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.h +++ b/src/SVTK/SVTK_CubeAxesDlg.h @@ -27,7 +27,8 @@ #ifndef SVTK_CubeAxesDlg_H #define SVTK_CubeAxesDlg_H -#include +#include "SVTK_DialogBase.h" + #include class QWidget; @@ -52,14 +53,14 @@ class SVTK_MainWindow; * Class : SVTK_CubeAxesDlg * Description : Dialog for specifynig cube axes properties */ -class SVTK_CubeAxesDlg : public QDialog +class SVTK_CubeAxesDlg : public SVTK_DialogBase { Q_OBJECT public: - SVTK_CubeAxesDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction); + SVTK_CubeAxesDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName); virtual ~SVTK_CubeAxesDlg(); void Update(); @@ -69,8 +70,6 @@ private slots: bool onApply(); void onClose(); - virtual void done( int ); - private: QWidget* createButtonFrame( QWidget* ); QWidget* createMainFrame ( QWidget* ); @@ -79,7 +78,6 @@ private: private: SVTK_MainWindow *myMainWindow; SVTK_CubeAxesActor2D* myActor; - QtxAction* myAction; QTabWidget* myTabWg; QCheckBox* myIsVisible; diff --git a/src/SVTK/SVTK_DeviceActor.cxx b/src/SVTK/SVTK_DeviceActor.cxx index be959115c..21b032c31 100644 --- a/src/SVTK/SVTK_DeviceActor.cxx +++ b/src/SVTK/SVTK_DeviceActor.cxx @@ -46,11 +46,11 @@ using namespace std; -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_DeviceActor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_DeviceActor ::SVTK_DeviceActor() { @@ -77,8 +77,9 @@ SVTK_DeviceActor myPassFilter.push_back(VTKViewer_PassThroughFilter::New()); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_DeviceActor ::~SVTK_DeviceActor() { @@ -96,8 +97,9 @@ SVTK_DeviceActor myPassFilter[i]->Delete(); } - -//---------------------------------------------------------------------------- +/*! + To insert some additional filters and then sets the given vtkMapper +*/ void SVTK_DeviceActor ::SetMapper(vtkMapper* theMapper) @@ -105,6 +107,9 @@ SVTK_DeviceActor InitPipeLine(theMapper); } +/*! + To initialize internal pipeline +*/ void SVTK_DeviceActor ::InitPipeLine(vtkMapper* theMapper) @@ -139,7 +144,9 @@ SVTK_DeviceActor Superclass::SetMapper(theMapper); } -//---------------------------------------------------------------------------- +/*! + Allows to get initial vtkDataSet +*/ vtkDataSet* SVTK_DeviceActor ::GetInput() @@ -147,6 +154,9 @@ SVTK_DeviceActor return myPassFilter.front()->GetOutput(); } +/*! + Allows to set initial vtkDataSet +*/ void SVTK_DeviceActor ::SetInput(vtkDataSet* theDataSet) @@ -155,7 +165,9 @@ SVTK_DeviceActor InitPipeLine(myMapper); } -//---------------------------------------------------------------------------- +/*! + To provide VTK to Object and backward mapping +*/ void SVTK_DeviceActor:: SetStoreMapping(bool theStoreMapping) @@ -164,8 +176,9 @@ SetStoreMapping(bool theStoreMapping) } - -//---------------------------------------------------------------------------- +/*! + \return time of modification +*/ unsigned long int SVTK_DeviceActor ::GetMTime() @@ -185,8 +198,10 @@ SVTK_DeviceActor return mTime; } - -//---------------------------------------------------------------------------- +/*! + Apply a view transformation + \param theTransform - transformation +*/ void SVTK_DeviceActor ::SetTransform(VTKViewer_Transform* theTransform) @@ -194,15 +209,20 @@ SVTK_DeviceActor myTransformFilter->SetTransform(theTransform); } - -//---------------------------------------------------------------------------- +/*! + \return true if actor is shrinkable +*/ bool SVTK_DeviceActor ::IsShrunkable() { return myIsShrinkable; } - + +/*! + Changes shrinkable state of actor + theIsShrinkable - new shrinkable state +*/ void SVTK_DeviceActor ::SetShrinkable(bool theIsShrinkable) @@ -210,6 +230,9 @@ SVTK_DeviceActor myIsShrinkable = theIsShrinkable; } +/*! + \return true if actor is shrunkable +*/ bool SVTK_DeviceActor ::IsShrunk() @@ -217,6 +240,9 @@ SVTK_DeviceActor return myIsShrunk; } +/*! + Insert shrink filter into pipeline +*/ void SVTK_DeviceActor ::SetShrink() @@ -231,6 +257,9 @@ SVTK_DeviceActor } } +/*! + Remove shrink filter from pipeline +*/ void SVTK_DeviceActor ::UnShrink() @@ -243,23 +272,32 @@ SVTK_DeviceActor } } -float +/*! + \return shrink factor +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetShrinkFactor() { return myShrinkFilter->GetShrinkFactor(); } +/*! + Changes shrink factor + \param theValue - new shrink factor +*/ void SVTK_DeviceActor -::SetShrinkFactor(float theValue) +::SetShrinkFactor(vtkFloatingPointType theValue) { myShrinkFilter->SetShrinkFactor(theValue); } - -//---------------------------------------------------------------------------- +/*! + Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on) + param theMode - new mode +*/ void SVTK_DeviceActor ::SetRepresentation(SVTK::Representation::Type theMode) @@ -311,6 +349,9 @@ SVTK_DeviceActor myRepresentation = theMode; } +/*! + \return current representation mode +*/ SVTK::Representation::Type SVTK_DeviceActor ::GetRepresentation() @@ -318,21 +359,29 @@ SVTK_DeviceActor return myRepresentation; } -float +/*! + \return default point size +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetDefaultPointSize() { return 5; } -float +/*! + \return default line width +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetDefaultLineWidth() { return 3; } - +/*! + \return true if actor is shaded +*/ bool SVTK_DeviceActor ::IsShaded() @@ -340,6 +389,10 @@ SVTK_DeviceActor return myIsShaded; } +/*! + Sets shaded state of actor + \param theShaded - new shaded state +*/ void SVTK_DeviceActor ::SetShaded(bool theShaded) @@ -347,8 +400,9 @@ SVTK_DeviceActor myIsShaded = theShaded; } - -//---------------------------------------------------------------------------- +/*! + Maps VTK index of a node to corresponding object index +*/ int SVTK_DeviceActor ::GetNodeObjId(int theVtkID) @@ -356,7 +410,10 @@ SVTK_DeviceActor return theVtkID; } -float* +/*! + Get coordinates of a node for given object index +*/ +vtkFloatingPointType* SVTK_DeviceActor ::GetNodeCoord(int theObjID) { @@ -364,6 +421,9 @@ SVTK_DeviceActor } +/*! + Get corresponding #vtkCell for given object index +*/ vtkCell* SVTK_DeviceActor ::GetElemCell(int theObjID) @@ -371,6 +431,9 @@ SVTK_DeviceActor return GetInput()->GetCell(theObjID); } +/*! + Maps VTK index of a cell to corresponding object index +*/ int SVTK_DeviceActor ::GetElemObjId(int theVtkID) @@ -378,15 +441,16 @@ SVTK_DeviceActor return theVtkID; } - -//---------------------------------------------------------------------------- +/*! + Renders actor +*/ void SVTK_DeviceActor ::Render(vtkRenderer *ren, vtkMapper* m) { if(myIsResolveCoincidentTopology){ int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology(); - float aFactor, aUnit; + vtkFloatingPointType aFactor, aUnit; vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); vtkMapper::SetResolveCoincidentTopologyToPolygonOffset(); @@ -401,18 +465,27 @@ SVTK_DeviceActor } } - +/*! + Set polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void SVTK_DeviceActor -::SetPolygonOffsetParameters(float factor, float units) +::SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units) { myPolygonOffsetFactor = factor; myPolygonOffsetUnits = units; } +/*! + Get polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void SVTK_DeviceActor -::GetPolygonOffsetParameters(float& factor, float& units) +::GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units) { factor = myPolygonOffsetFactor; units = myPolygonOffsetUnits; diff --git a/src/SVTK/SVTK_DeviceActor.h b/src/SVTK/SVTK_DeviceActor.h index f8a49bc36..5eee841f4 100644 --- a/src/SVTK/SVTK_DeviceActor.h +++ b/src/SVTK/SVTK_DeviceActor.h @@ -29,6 +29,9 @@ #ifndef SVTK_DEVICE_ACTOR_H #define SVTK_DEVICE_ACTOR_H +#include "SVTK.h" +#include "VTKViewer.h" + #include #include @@ -44,7 +47,6 @@ class vtkDataSet; class vtkShrinkFilter; class vtkDataSetMapper; -//---------------------------------------------------------------------------- namespace SVTK { namespace Representation @@ -58,8 +60,7 @@ namespace SVTK } -//---------------------------------------------------------------------------- -class SVTK_DeviceActor: public vtkLODActor +class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor { public: vtkTypeMacro(SVTK_DeviceActor,vtkLODActor); @@ -95,7 +96,7 @@ class SVTK_DeviceActor: public vtkLODActor GetNodeObjId(int theVtkID); virtual - float* + vtkFloatingPointType* GetNodeCoord(int theObjID); virtual @@ -118,12 +119,12 @@ class SVTK_DeviceActor: public vtkLODActor /** @name For shrink mamnagement purpose */ //@{ - float + vtkFloatingPointType GetShrinkFactor(); virtual void - SetShrinkFactor(float value); + SetShrinkFactor(vtkFloatingPointType value); virtual void @@ -153,11 +154,11 @@ class SVTK_DeviceActor: public vtkLODActor GetRepresentation(); virtual - float + vtkFloatingPointType GetDefaultPointSize(); virtual - float + vtkFloatingPointType GetDefaultLineWidth(); bool @@ -190,11 +191,13 @@ class SVTK_DeviceActor: public vtkLODActor bool myIsShrunk; bool myIsResolveCoincidentTopology; - float myPolygonOffsetFactor; - float myPolygonOffsetUnits; + vtkFloatingPointType myPolygonOffsetFactor; + vtkFloatingPointType myPolygonOffsetUnits; - void SetPolygonOffsetParameters(float factor, float units); - void GetPolygonOffsetParameters(float& factor, float& units); + void SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units); + void GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units); SVTK_DeviceActor(); ~SVTK_DeviceActor(); diff --git a/src/SVTK/SVTK_DialogBase.cxx b/src/SVTK/SVTK_DialogBase.cxx new file mode 100644 index 000000000..ff35c360b --- /dev/null +++ b/src/SVTK/SVTK_DialogBase.cxx @@ -0,0 +1,84 @@ +// SALOME VTKViewer : build VTK viewer into Salome desktop +// +// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : +// Author : +// Module : SALOME +// $Header$ + +#include "SVTK_DialogBase.h" + +#include "QtxAction.h" + +/*! + Constructor +*/ +SVTK_DialogBase +::SVTK_DialogBase(QtxAction* theAction, + QWidget* theParent, + const char* theName, + bool theModal, + WFlags theWFalgs): + QDialog(theParent, + theName, + theModal, + theWFalgs | WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), + myAction(theAction) +{ + connect(theParent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow())); + connect(theParent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide())); +} + +/* + * Destroys the object and frees any allocated resources + */ +SVTK_DialogBase +::~SVTK_DialogBase() +{ + // no need to delete child widgets, Qt does it all for us +} + +void +SVTK_DialogBase +::onParentShow() +{ + if(myAction->isOn()) + show(); + else + hide(); +} + +void +SVTK_DialogBase +::onParentHide() +{ + hide(); +} + +void +SVTK_DialogBase +::done( int r ) +{ + myAction->setOn( false ); + QDialog::done( r ); +} diff --git a/src/SVTK/SVTK_DialogBase.h b/src/SVTK/SVTK_DialogBase.h new file mode 100644 index 000000000..eb2262fb6 --- /dev/null +++ b/src/SVTK/SVTK_DialogBase.h @@ -0,0 +1,60 @@ +// SALOME VTKViewer : build VTK viewer into Salome desktop +// +// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : +// Author : +// Module : SALOME +// $Header$ + +#ifndef SVTK_DIALOGBASE_H +#define SVTK_DIALOGBASE_H + +#include "SVTK.h" + +#include + +class QtxAction; + +class SVTK_EXPORT SVTK_DialogBase : public QDialog +{ + Q_OBJECT; + +public: + SVTK_DialogBase(QtxAction* theAction, + QWidget* theParent, + const char* theName = "", + bool theModal = FALSE, + WFlags theWFalgs = 0); + + ~SVTK_DialogBase(); + +protected slots: + void onParentShow(); + void onParentHide(); + virtual void done( int ); + +protected: + QtxAction* myAction; +}; + +#endif // SVTK_DIALOGBASE_H diff --git a/src/SVTK/SVTK_FontWidget.cxx b/src/SVTK/SVTK_FontWidget.cxx index edaa9a6c0..92f16923e 100644 --- a/src/SVTK/SVTK_FontWidget.cxx +++ b/src/SVTK/SVTK_FontWidget.cxx @@ -39,10 +39,9 @@ * Description : Dialog for specifynig font */ -//======================================================================= -// name : SVTK_FontWidget -// Purpose : Constructor -//======================================================================= +/*! + Constructor +*/ SVTK_FontWidget::SVTK_FontWidget( QWidget* theParent ) : QHBox( theParent ) { @@ -62,36 +61,23 @@ SVTK_FontWidget::SVTK_FontWidget( QWidget* theParent ) connect( myColorBtn, SIGNAL( clicked() ), SLOT( onColor() ) ); } -//======================================================================= -// name : ~SVTK_FontWidget -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ SVTK_FontWidget::~SVTK_FontWidget() { } -//======================================================================= -// name : SetColor -// Purpose : -//======================================================================= void SVTK_FontWidget::SetColor( const QColor& theColor ) { myColorBtn->setPaletteBackgroundColor( theColor ); } -//======================================================================= -// name : GetColor -// Purpose : -//======================================================================= QColor SVTK_FontWidget::GetColor() const { return myColorBtn->paletteBackgroundColor(); } -//======================================================================= -// name : onColor -// Purpose : -//======================================================================= void SVTK_FontWidget::onColor() { QColor aColor = QColorDialog::getColor( GetColor(), this ); @@ -99,10 +85,6 @@ void SVTK_FontWidget::onColor() SetColor( aColor ); } -//======================================================================= -// name : SetData -// Purpose : -//======================================================================= void SVTK_FontWidget::SetData( const QColor& theColor, const int theFamily, const bool theBold, @@ -123,10 +105,6 @@ void SVTK_FontWidget::SetData( const QColor& theColor, myShadow->setChecked( theShadow ); } -//======================================================================= -// name : GetData -// Purpose : -//======================================================================= void SVTK_FontWidget::GetData( QColor& theColor, int& theFamily, bool& theBold, diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx index e3cb3c8e2..4f7cbb599 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx @@ -36,9 +36,11 @@ using namespace std; -//---------------------------------------------------------------------------- vtkStandardNewMacro(QVTK_GenericRenderWindowInteractor); +/*! + Constructor +*/ QVTK_GenericRenderWindowInteractor ::QVTK_GenericRenderWindowInteractor() { @@ -46,14 +48,18 @@ QVTK_GenericRenderWindowInteractor connect(myTimer, SIGNAL(timeout()), this, SLOT(OnTimeOut())) ; } +/*! + Destructor +*/ QVTK_GenericRenderWindowInteractor ::~QVTK_GenericRenderWindowInteractor() { delete myTimer; } - -//---------------------------------------------------------------------------- +/*! + The slot connects to QTimer::timeout signal to invoke vtkCommand::TimerEvent +*/ void QVTK_GenericRenderWindowInteractor ::OnTimeOut() @@ -63,6 +69,9 @@ QVTK_GenericRenderWindowInteractor } } +/*! + Starts the QTimer instance on defined microseconds +*/ int QVTK_GenericRenderWindowInteractor ::CreateTimer(int vtkNotUsed(timertype)) @@ -75,6 +84,9 @@ QVTK_GenericRenderWindowInteractor return 1; } +/*! + Stops the QTimer instance +*/ int QVTK_GenericRenderWindowInteractor ::DestroyTimer(void) @@ -95,20 +107,28 @@ QVTK_GenericRenderWindowInteractor } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_GenericRenderWindowInteractor); +/*! + Constructor +*/ SVTK_GenericRenderWindowInteractor ::SVTK_GenericRenderWindowInteractor(): myRenderWidget(NULL) { } +/*! + Destructor +*/ SVTK_GenericRenderWindowInteractor ::~SVTK_GenericRenderWindowInteractor() { } +/*! + To get access to SVTK_Selector +*/ SVTK_Selector* SVTK_GenericRenderWindowInteractor ::GetSelector() @@ -116,6 +136,10 @@ SVTK_GenericRenderWindowInteractor return mySelector.GetPointer(); } +/*! + To initialize mySelector field + \param theSelector - new selector +*/ void SVTK_GenericRenderWindowInteractor ::SetSelector(SVTK_Selector* theSelector) @@ -123,6 +147,9 @@ SVTK_GenericRenderWindowInteractor mySelector = theSelector; } +/*! + To get access to QWidget, where vtkRenderWindow maps to. +*/ QWidget* SVTK_GenericRenderWindowInteractor ::GetRenderWidget() @@ -130,6 +157,9 @@ SVTK_GenericRenderWindowInteractor return myRenderWidget; } +/*! + To initialize myRenderWidget field. +*/ void SVTK_GenericRenderWindowInteractor ::SetRenderWidget(QWidget* theRenderWidget) diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.h b/src/SVTK/SVTK_GenericRenderWindowInteractor.h index d15fdc557..4e9ab968f 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.h +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.h @@ -42,9 +42,9 @@ class SVTK_Selector; class SVTK_Renderer; -//============================================================================ -//! Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality. /*! + \class QVTK_GenericRenderWindowInteractor + Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality. The class intendes to implement platform indepenedant subclass of vtkRenderWindowInteractor. This is done by usage of Qt library. \note @@ -86,9 +86,9 @@ class SVTK_EXPORT QVTK_GenericRenderWindowInteractor: }; -//============================================================================ -//! This class introduce SALOME specific to the base one /*! + \class SVTK_GenericRenderWindowInteractor + This class introduce SALOME specific to the base one In this class new members is added (#mySelector and #myRenderWidget). They are used for initialization of #SVTK_InteractorStyle by redefinition of #SVTK_InteractorStyle::SetInteractor method diff --git a/src/SVTK/SVTK_InteractorStyle.cxx b/src/SVTK/SVTK_InteractorStyle.cxx index 963aa1894..3bd3cf075 100644 --- a/src/SVTK/SVTK_InteractorStyle.cxx +++ b/src/SVTK/SVTK_InteractorStyle.cxx @@ -98,9 +98,11 @@ namespace } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_InteractorStyle); -//---------------------------------------------------------------------------- + +/*! + Constructor +*/ SVTK_InteractorStyle ::SVTK_InteractorStyle(): mySelectionEvent(new SVTK_SelectionEvent()), @@ -131,13 +133,17 @@ SVTK_InteractorStyle myControllerOnKeyDown->Delete(); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_InteractorStyle ::~SVTK_InteractorStyle() { } -//---------------------------------------------------------------------------- +/*! + \return widget for rendering +*/ QWidget* SVTK_InteractorStyle ::GetRenderWidget() @@ -145,6 +151,9 @@ SVTK_InteractorStyle return myInteractor->GetRenderWidget(); } +/*! + \return selector +*/ SVTK_Selector* SVTK_InteractorStyle ::GetSelector() @@ -152,7 +161,9 @@ SVTK_InteractorStyle return myInteractor->GetSelector(); } -//---------------------------------------------------------------------------- +/*! + Generate special SVTK_SelectionEvent +*/ SVTK_SelectionEvent* SVTK_InteractorStyle ::GetSelectionEvent() @@ -170,7 +181,9 @@ SVTK_InteractorStyle return mySelectionEvent.get(); } -//---------------------------------------------------------------------------- +/*! + Generate special SVTK_SelectionEvent with flipped Y coordinate +*/ SVTK_SelectionEvent* SVTK_InteractorStyle ::GetSelectionEventFlipY() @@ -188,7 +201,6 @@ SVTK_InteractorStyle return mySelectionEvent.get(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::RotateXY(int dx, int dy) @@ -213,7 +225,6 @@ SVTK_InteractorStyle this->Render(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::PanXY(int x, int y, int oldX, int oldY) @@ -223,7 +234,6 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::DollyXY(int dx, int dy) @@ -247,7 +257,6 @@ SVTK_InteractorStyle this->Render(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::SpinXY(int x, int y, int oldX, int oldY) @@ -273,7 +282,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To reset reset view +*/ void SVTK_InteractorStyle ::OnConfigure() @@ -282,8 +293,9 @@ SVTK_InteractorStyle this->GetCurrentRenderer()->InvokeEvent(vtkCommand::ConfigureEvent,NULL); } - -//---------------------------------------------------------------------------- +/*! + To handle mouse move event +*/ void SVTK_InteractorStyle ::OnMouseMove() @@ -295,8 +307,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonDown() @@ -308,8 +321,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonUp() @@ -321,8 +335,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonDown() @@ -334,8 +349,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonUp() @@ -347,8 +363,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle right mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonDown() @@ -360,7 +377,9 @@ SVTK_InteractorStyle x, y ); } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonUp() @@ -372,8 +391,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle mouse move event +*/ void SVTK_InteractorStyle ::OnMouseMove(int vtkNotUsed(ctrl), @@ -387,8 +407,9 @@ SVTK_InteractorStyle onCursorMove(QPoint(x, y)); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonDown(int ctrl, int shift, @@ -416,8 +437,9 @@ SVTK_InteractorStyle return; } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonUp(int vtkNotUsed(ctrl), @@ -433,8 +455,9 @@ SVTK_InteractorStyle } } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonDown(int ctrl, @@ -462,7 +485,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonUp(int vtkNotUsed(ctrl), @@ -479,7 +504,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonDown(int ctrl, @@ -506,7 +533,9 @@ SVTK_InteractorStyle } } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonUp(int vtkNotUsed(ctrl), @@ -522,7 +551,6 @@ SVTK_InteractorStyle } } -//---------------------------------------------------------------------------- /* XPM */ const char* imageZoomCursor[] = { "32 32 3 1", @@ -601,8 +629,9 @@ const char* imageRotateCursor[] = { "................................"}; -//---------------------------------------------------------------------------- -// loads cursors for viewer operations - zoom, pan, etc... +/*! + loads cursors for viewer operations - zoom, pan, etc... +*/ void SVTK_InteractorStyle ::loadCursors() @@ -618,8 +647,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Zoom operation (e.g. through menu command) +/*! + Starts Zoom operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startZoom() @@ -634,8 +664,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Pan operation (e.g. through menu command) +/*! + Starts Pan operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startPan() @@ -649,8 +680,9 @@ SVTK_InteractorStyle ForcedState = VTK_INTERACTOR_STYLE_CAMERA_PAN; } -//---------------------------------------------------------------------------- -// starts Rotate operation (e.g. through menu command) +/*! + Starts Rotate operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startRotate() @@ -665,8 +697,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Spin operation (e.g. through menu command) +/*! + Starts Spin operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startSpin() @@ -682,8 +715,9 @@ SVTK_InteractorStyle -//---------------------------------------------------------------------------- -// starts Fit Area operation (e.g. through menu command) +/*! + Starts Fit Area operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startFitArea() @@ -698,8 +732,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Global Panning operation (e.g. through menu command) +/*! + Starts Global Panning operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startGlobalPan() @@ -721,8 +756,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// fits viewer contents to rect +/*! + Fits viewer contents to rect +*/ void SVTK_InteractorStyle ::fitRect(const int left, @@ -758,8 +794,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts viewer operation (!internal usage!) +/*! + Starts viewer operation (!internal usage!) +*/ void SVTK_InteractorStyle ::startOperation(int operation) @@ -789,8 +826,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// sets proper cursor for window when viewer operation is activated +/*! + Sets proper cursor for window when viewer operation is activated +*/ void SVTK_InteractorStyle ::setCursor(const int operation) @@ -832,15 +870,20 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// called when viewer operation started (!put necessary initialization here!) +/*! + Called when viewer operation started (!put necessary initialization here!) +*/ void SVTK_InteractorStyle ::onStartOperation() { - if (!GetRenderWidget()) return; - // VSV: LOD actor activisation - // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate()); + if (!GetRenderWidget()) + return; + + vtkRenderWindowInteractor *aRWI = this->Interactor; + vtkRenderWindow *aRenWin = aRWI->GetRenderWindow(); + aRenWin->SetDesiredUpdateRate(aRWI->GetDesiredUpdateRate()); + switch (State) { case VTK_INTERACTOR_STYLE_CAMERA_SELECT: case VTK_INTERACTOR_STYLE_CAMERA_FIT: @@ -861,8 +904,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// called when viewer operation finished (!put necessary post-processing here!) +/*! + Called when viewer operation finished (!put necessary post-processing here!) +*/ void SVTK_InteractorStyle ::onFinishOperation() @@ -870,8 +914,9 @@ SVTK_InteractorStyle if (!GetRenderWidget()) return; - // VSV: LOD actor activisation - // rwi->GetRenderWindow()->SetDesiredUpdateRate(rwi->GetStillUpdateRate()); + vtkRenderWindowInteractor *aRWI = this->Interactor; + vtkRenderWindow *aRenWin = aRWI->GetRenderWindow(); + aRenWin->SetDesiredUpdateRate(aRWI->GetStillUpdateRate()); SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY(); @@ -909,13 +954,15 @@ SVTK_InteractorStyle // SALOME_Actor* anActor = GetFirstSALOMEActor(myPicker.GetPointer()); aSelectionEvent->myIsRectangle = false; + + if(!myShiftState) + GetSelector()->ClearIObjects(); + if(anActor){ anActor->Highlight( this, aSelectionEvent, true ); }else{ if(myLastHighlitedActor.GetPointer() && myLastHighlitedActor.GetPointer() != anActor) myLastHighlitedActor->Highlight( this, aSelectionEvent, false ); - if(!myShiftState) - GetSelector()->ClearIObjects(); } myLastHighlitedActor = anActor; } @@ -965,8 +1012,9 @@ SVTK_InteractorStyle } -// called during viewer operation when user moves mouse (!put necessary processing here!) -//---------------------------------------------------------------------------- +/*! + Called during viewer operation when user moves mouse (!put necessary processing here!) +*/ void SVTK_InteractorStyle ::onOperation(QPoint mousePos) @@ -1021,9 +1069,10 @@ SVTK_InteractorStyle } } -// called when user moves mouse inside viewer window and there is no active viewer operation -// (!put necessary processing here!) -//---------------------------------------------------------------------------- +/*! + Called when user moves mouse inside viewer window and there is no active viewer operation + (!put necessary processing here!) +*/ void SVTK_InteractorStyle ::onCursorMove(QPoint mousePos) @@ -1053,8 +1102,9 @@ SVTK_InteractorStyle this->Render(); } -// called on finsh GlobalPan operation -//---------------------------------------------------------------------------- +/*! + Called on finsh GlobalPan operation +*/ void SVTK_InteractorStyle ::Place(const int theX, const int theY) @@ -1079,15 +1129,16 @@ SVTK_InteractorStyle -// Translates view from Point to Point -//---------------------------------------------------------------------------- +/*! + Translates view from Point to Point +*/ void SVTK_InteractorStyle ::TranslateView(int toX, int toY, int fromX, int fromY) { vtkCamera *cam = GetCurrentRenderer()->GetActiveCamera(); double viewFocus[4], focalDepth, viewPoint[3]; - float newPickPoint[4], oldPickPoint[4], motionVector[3]; + vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3]; cam->GetFocalPoint(viewFocus); this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1], @@ -1114,7 +1165,6 @@ SVTK_InteractorStyle motionVector[2] + viewPoint[2]); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalPan( const int incrX, const int incrY ) @@ -1122,7 +1172,6 @@ SVTK_InteractorStyle this->PanXY( incrX, incrY, 0, 0 ); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalZoom( const int incr ) @@ -1130,7 +1179,6 @@ SVTK_InteractorStyle this->DollyXY( incr, incr ); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalRotate( const int incrX, const int incrY ) @@ -1138,7 +1186,9 @@ SVTK_InteractorStyle this->RotateXY( incrX, -incrY ); } -//---------------------------------------------------------------------------- +/*! + Redefined in order to add an observer (callback) for custorm event (space mouse event) +*/ void SVTK_InteractorStyle ::SetInteractor( vtkRenderWindowInteractor* theInteractor ) @@ -1178,8 +1228,9 @@ SVTK_InteractorStyle } } - -//---------------------------------------------------------------------------- +/*! + To implement cached rendering +*/ void SVTK_InteractorStyle ::OnTimer() @@ -1188,7 +1239,9 @@ SVTK_InteractorStyle this->Interactor->Render(); } -//---------------------------------------------------------------------------- +/*! + To invoke #vtkRenderWindowInteractor::CreateTimer +*/ void SVTK_InteractorStyle ::Render() @@ -1196,7 +1249,6 @@ SVTK_InteractorStyle this->Interactor->CreateTimer(VTKI_TIMER_FIRST); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::onSpaceMouseMove( double* data ) @@ -1212,7 +1264,6 @@ SVTK_InteractorStyle IncrementalRotate( (int)data[3], 0 ); // 5. tilt the control forward/backward = rotate around X axis (Z axis of local coordinate system of space mouse) } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::onSpaceMouseButton( int button ) @@ -1227,7 +1278,6 @@ SVTK_InteractorStyle DominantCombinedSwitch(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::DominantCombinedSwitch() @@ -1235,7 +1285,9 @@ SVTK_InteractorStyle printf( "\n--DominantCombinedSwitch() NOT IMPLEMENTED--\n" ); } -//---------------------------------------------------------------------------- +/*! + Main process event method (reimplemented from #vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::ProcessEvents( vtkObject* object, @@ -1326,11 +1378,17 @@ SVTK_InteractorStyle Superclass::ProcessEvents( object, event, clientData, callData ); } -//---------------------------------------------------------------------------- + +/*! + To handle keyboard event (reimplemented from #vtkInteractorStyle) +*/ void SVTK_InteractorStyle::OnChar() { } -//---------------------------------------------------------------------------- + +/*! + Redefined vtkInteractorStyle::OnKeyDown +*/ void SVTK_InteractorStyle::OnKeyDown() { bool bInvokeSuperclass=myControllerOnKeyDown->OnKeyDown(this); @@ -1338,7 +1396,10 @@ void SVTK_InteractorStyle::OnKeyDown() Superclass::OnKeyDown(); } } -//---------------------------------------------------------------------------- + +/*! + Provide instructions for Picking +*/ void SVTK_InteractorStyle::ActionPicking() { int x, y; @@ -1351,54 +1412,60 @@ void SVTK_InteractorStyle::ActionPicking() onFinishOperation(); startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); } -//---------------------------------------------------------------------------- + +/*! + To set current increment controller +*/ void SVTK_InteractorStyle::SetControllerOnKeyDown(SVTK_ControllerOnKeyDown* theController) { myControllerOnKeyDown=theController; } -//---------------------------------------------------------------------------- + +/*! + To get current OnKeyDown controller +*/ SVTK_ControllerOnKeyDown* SVTK_InteractorStyle::ControllerOnKeyDown() { return myControllerOnKeyDown.GetPointer(); } -//---------------------------------------------------------------------------- + +/*! + To get current increment controller +*/ void SVTK_InteractorStyle::SetControllerIncrement(SVTK_ControllerIncrement* theController) { myControllerIncrement=theController; } -//---------------------------------------------------------------------------- + +/*! + To get current increment controller +*/ SVTK_ControllerIncrement* SVTK_InteractorStyle::ControllerIncrement() { return myControllerIncrement.GetPointer(); } vtkStandardNewMacro(SVTK_ControllerIncrement); -//---------------------------------------------------------------------------- SVTK_ControllerIncrement::SVTK_ControllerIncrement() { myIncrement=10; } -//---------------------------------------------------------------------------- SVTK_ControllerIncrement::~SVTK_ControllerIncrement() { } -//---------------------------------------------------------------------------- void SVTK_ControllerIncrement::SetStartValue(const int theValue) { myIncrement=theValue; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Current()const { return myIncrement; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Increase() { ++myIncrement; return myIncrement; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Decrease() { if (myIncrement>1){ @@ -1408,15 +1475,21 @@ int SVTK_ControllerIncrement::Decrease() } vtkStandardNewMacro(SVTK_ControllerOnKeyDown); -//---------------------------------------------------------------------------- + +/*! + Constructor +*/ SVTK_ControllerOnKeyDown::SVTK_ControllerOnKeyDown() { } -//---------------------------------------------------------------------------- + +/*! + Destructor +*/ SVTK_ControllerOnKeyDown::~SVTK_ControllerOnKeyDown() { } -//---------------------------------------------------------------------------- + bool SVTK_ControllerOnKeyDown::OnKeyDown(vtkInteractorStyle* theIS) { return true; diff --git a/src/SVTK/SVTK_InteractorStyle.h b/src/SVTK/SVTK_InteractorStyle.h index 7ea671df4..eebe88ec5 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -45,7 +45,6 @@ #include // -//------------------------------------------- //! Control the value of increment in SALOME way. /*! This class controls of value of increment, @@ -77,7 +76,6 @@ class SVTK_ControllerIncrement : public vtkObject{ void operator=(const SVTK_ControllerIncrement&); //Not implemented }; // -//------------------------------------------- //! Control the behaviour of KeyDown event in SALOME way. /*! This class controls the behaviour of KeyDown event @@ -99,7 +97,6 @@ class SVTK_ControllerOnKeyDown : public vtkObject{ SVTK_ControllerOnKeyDown(const SVTK_ControllerOnKeyDown&);//Not implemented void operator=(const SVTK_ControllerOnKeyDown&); //Not implemented }; -//------------------------------------------- class vtkCell; class vtkPicker; @@ -143,7 +140,7 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle SVTK_SelectionEvent* GetSelectionEventFlipY(); - //! Redefined in order to add an observer (callback) for custorm event (space mouse event) + //! Redefined in order to add an observer (callback) for custom event (space mouse event) virtual void SetInteractor( vtkRenderWindowInteractor* ); diff --git a/src/SVTK/SVTK_MainWindow.cxx b/src/SVTK/SVTK_MainWindow.cxx index 145aa9aa5..be1e25c37 100644 --- a/src/SVTK/SVTK_MainWindow.cxx +++ b/src/SVTK/SVTK_MainWindow.cxx @@ -40,6 +40,7 @@ #include "SUIT_Tools.h" #include "SUIT_ResourceMgr.h" #include "SVTK_NonIsometricDlg.h" +#include "SVTK_UpdateRateDlg.h" #include "SVTK_CubeAxesDlg.h" #include "SVTK_MainWindow.h" @@ -51,8 +52,9 @@ #include - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_MainWindow ::SVTK_MainWindow(QWidget* theParent, const char* theName, @@ -69,6 +71,9 @@ SVTK_MainWindow createToolBar(); } +/*! + To initialize the class +*/ void SVTK_MainWindow ::Initialize(SVTK_RenderWindowInteractor* theInteractor) @@ -82,17 +87,23 @@ SVTK_MainWindow myInteractor->setFocusPolicy(StrongFocus); myInteractor->setFocus(); setFocusProxy(myInteractor); -} + myUpdateRateDlg = new SVTK_UpdateRateDlg(myActionsMap[UpdateRate],this,"SVTK_UpdateRateDlg"); + myNonIsometricDlg = new SVTK_NonIsometricDlg(myActionsMap[NonIsometric],this,"SVTK_NonIsometricDlg"); + myCubeAxesDlg = new SVTK_CubeAxesDlg(myActionsMap[GraduatedAxes],this,"SVTK_CubeAxesDlg"); +} -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_MainWindow ::~SVTK_MainWindow() { } - -//---------------------------------------------------------------------------- +/*! + \return used SVTK_RenderWindowInteractor +*/ SVTK_RenderWindowInteractor* SVTK_MainWindow ::GetInteractor() @@ -100,6 +111,9 @@ SVTK_MainWindow return myInteractor; } +/*! + \return used #vtkRenderWindowInteractor (obsolete) +*/ vtkRenderWindowInteractor* SVTK_MainWindow ::getInteractor() @@ -107,6 +121,9 @@ SVTK_MainWindow return GetInteractor()->GetDevice(); } +/*! + \return used vtkRenderWindow (obsolete) +*/ vtkRenderWindow* SVTK_MainWindow ::getRenderWindow() @@ -114,7 +131,10 @@ SVTK_MainWindow return GetInteractor()->getRenderWindow(); } -//---------------------------------------------------------------------------- +/*! + To repaint the view + \param theUpdateTrihedron - adjust trihedron +*/ void SVTK_MainWindow ::Repaint(bool theUpdateTrihedron) @@ -125,7 +145,9 @@ SVTK_MainWindow GetInteractor()->update(); } -//---------------------------------------------------------------------------- +/*! + To invoke a VTK event on SVTK_RenderWindowInteractor instance +*/ void SVTK_MainWindow ::InvokeEvent(unsigned long theEvent, void* theCallData) @@ -133,7 +155,9 @@ SVTK_MainWindow GetInteractor()->InvokeEvent(theEvent,theCallData); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetInteractorStyle +*/ vtkInteractorStyle* SVTK_MainWindow ::GetInteractorStyle() @@ -141,6 +165,9 @@ SVTK_MainWindow return GetInteractor()->GetInteractorStyle(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::PushInteractorStyle +*/ void SVTK_MainWindow ::PushInteractorStyle(vtkInteractorStyle* theStyle) @@ -148,6 +175,9 @@ SVTK_MainWindow GetInteractor()->PushInteractorStyle(theStyle); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::PopInteractorStyle +*/ void SVTK_MainWindow ::PopInteractorStyle() @@ -155,7 +185,9 @@ SVTK_MainWindow GetInteractor()->PopInteractorStyle(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetSelector +*/ SVTK_Selector* SVTK_MainWindow ::GetSelector() @@ -163,6 +195,9 @@ SVTK_MainWindow return GetInteractor()->GetSelector(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::SelectionMode +*/ Selection_Mode SVTK_MainWindow ::SelectionMode() @@ -170,6 +205,9 @@ SVTK_MainWindow return GetSelector()->SelectionMode(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::SetSelectionMode +*/ void SVTK_MainWindow ::SetSelectionMode(Selection_Mode theMode) @@ -177,8 +215,9 @@ SVTK_MainWindow GetSelector()->SetSelectionMode(theMode); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetRenderer +*/ SVTK_Renderer* SVTK_MainWindow ::GetRenderer() @@ -186,6 +225,9 @@ SVTK_MainWindow return GetInteractor()->GetRenderer(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::getRenderer +*/ vtkRenderer* SVTK_MainWindow ::getRenderer() @@ -193,7 +235,10 @@ SVTK_MainWindow return GetInteractor()->getRenderer(); } -//---------------------------------------------------------------------------- +/*! + Sets background color of the view + \param theColor - new background color +*/ void SVTK_MainWindow ::SetBackgroundColor(const QColor& theColor) @@ -203,18 +248,23 @@ SVTK_MainWindow theColor.blue()/255.0); } +/*! + \return background color of the view +*/ QColor SVTK_MainWindow ::BackgroundColor() { - float aBackgroundColor[3]; + vtkFloatingPointType aBackgroundColor[3]; getRenderer()->GetBackground(aBackgroundColor); return QColor(int(aBackgroundColor[0]*255), int(aBackgroundColor[1]*255), int(aBackgroundColor[2]*255)); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetScale +*/ void SVTK_MainWindow ::GetScale( double theScale[3] ) @@ -222,6 +272,9 @@ SVTK_MainWindow GetRenderer()->GetScale( theScale ); } +/*! + Redirect the request to SVTK_Renderer::SetScale +*/ void SVTK_MainWindow ::SetScale( double theScale[3] ) @@ -230,8 +283,9 @@ SVTK_MainWindow Repaint(); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::AddActor +*/ void SVTK_MainWindow ::AddActor(VTKViewer_Actor* theActor, @@ -242,7 +296,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::RemoveActor +*/ void SVTK_MainWindow ::RemoveActor(VTKViewer_Actor* theActor, @@ -253,8 +309,9 @@ SVTK_MainWindow Repaint(); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetTrihedronSize +*/ int SVTK_MainWindow ::GetTrihedronSize() @@ -262,7 +319,9 @@ SVTK_MainWindow return GetRenderer()->GetTrihedronSize(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::SetTrihedronSize +*/ void SVTK_MainWindow ::SetTrihedronSize( const int theSize, const bool theRelative ) @@ -272,7 +331,6 @@ SVTK_MainWindow } -//---------------------------------------------------------------------------- /*! If parameter theIsForcedUpdate is true, recalculate parameters for * trihedron and cube axes, even if trihedron and cube axes is invisible. */ @@ -284,7 +342,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::IsTrihedronDisplayed +*/ bool SVTK_MainWindow ::IsTrihedronDisplayed() @@ -292,7 +352,9 @@ SVTK_MainWindow return GetRenderer()->IsTrihedronDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::IsCubeAxesDisplayed +*/ bool SVTK_MainWindow ::IsCubeAxesDisplayed() @@ -300,7 +362,9 @@ SVTK_MainWindow return GetRenderer()->IsCubeAxesDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetTrihedron +*/ VTKViewer_Trihedron* SVTK_MainWindow ::GetTrihedron() @@ -308,7 +372,9 @@ SVTK_MainWindow return GetRenderer()->GetTrihedron(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetCubeAxes +*/ SVTK_CubeAxesActor2D* SVTK_MainWindow ::GetCubeAxes() @@ -316,8 +382,9 @@ SVTK_MainWindow return GetRenderer()->GetCubeAxes(); } - -//---------------------------------------------------------------------------- +/*! + \return toolbar of svtk main window +*/ QToolBar* SVTK_MainWindow ::getToolBar() @@ -325,7 +392,6 @@ SVTK_MainWindow return myToolBar; } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::SetEventDispatcher(vtkObject* theDispatcher) @@ -333,11 +399,13 @@ SVTK_MainWindow myEventDispatcher = theDispatcher; } -//---------------------------------------------------------------------------- #if defined(WIN32) && !defined(_DEBUG) #pragma optimize( "", off ) #endif +/*! + Creates all actions of svtk main window +*/ void SVTK_MainWindow ::createActions(SUIT_ResourceMgr* theResourceMgr) @@ -471,8 +539,6 @@ SVTK_MainWindow connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onNonIsometric(bool))); myActionsMap[ NonIsometric ] = anAction; - myNonIsometricDlg = new SVTK_NonIsometricDlg(this,"SVTK_NonIsometricDlg",anAction); - // onGraduatedAxes: Manage graduated axes params anAction = new QtxAction(tr("MNU_SVTK_GRADUATED_AXES"), theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_GRADUATED_AXES" ) ), @@ -482,14 +548,23 @@ SVTK_MainWindow connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onGraduatedAxes(bool))); myActionsMap[ GraduatedAxes ] = anAction; - myCubeAxesDlg = new SVTK_CubeAxesDlg(this,"SVTK_CubeAxesDlg",anAction); + // onGraduatedAxes: Manage graduated axes params + anAction = new QtxAction(tr("MNU_SVTK_UPDATE_RATE"), + theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_UPDATE_RATE" ) ), + tr( "MNU_SVTK_UPDATE_RATE" ), 0, this); + anAction->setStatusTip(tr("DSC_SVTK_UPDATE_RATE")); + anAction->setToggleAction(true); + connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onUpdateRate(bool))); + myActionsMap[ UpdateRate ] = anAction; } #if defined(WIN32) && !defined(_DEBUG) #pragma optimize( "", on ) #endif -//---------------------------------------------------------------------------- +/*! + Creates toolbar of svtk main window +*/ void SVTK_MainWindow ::createToolBar() @@ -518,11 +593,34 @@ SVTK_MainWindow myActionsMap[ResetId]->addTo(myToolBar); + myActionsMap[UpdateRate]->addTo(myToolBar); myActionsMap[NonIsometric]->addTo(myToolBar); myActionsMap[GraduatedAxes]->addTo(myToolBar); } -//---------------------------------------------------------------------------- +/*! + Custom show event handler +*/ +void +SVTK_MainWindow +::showEvent( QShowEvent * theEvent ) +{ + emit Show( theEvent ); +} + +/*! + Custom hide event handler +*/ +void +SVTK_MainWindow +::hideEvent( QHideEvent * theEvent ) +{ + emit Hide( theEvent ); +} + +/*! + Starts zoom transformation +*/ void SVTK_MainWindow ::activateZoom() @@ -530,7 +628,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartZoom,0); } -//---------------------------------------------------------------------------- +/*! + Starts panning transformation +*/ void SVTK_MainWindow ::activatePanning() @@ -538,7 +638,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartPan,0); } -//---------------------------------------------------------------------------- +/*! + Starts rotation transformation +*/ void SVTK_MainWindow ::activateRotation() @@ -546,7 +648,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartRotate,0); } -//---------------------------------------------------------------------------- +/*! + Starts global panning transformation +*/ void SVTK_MainWindow ::activateGlobalPanning() @@ -554,7 +658,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartGlobalPan,0); } -//---------------------------------------------------------------------------- +/*! + Starts window fit transformation +*/ void SVTK_MainWindow ::activateWindowFit() @@ -562,7 +668,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartFitArea,0); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "front view" +*/ void SVTK_MainWindow ::onFrontView() @@ -571,7 +679,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "back view" +*/ void SVTK_MainWindow ::onBackView() @@ -580,7 +690,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "top view" +*/ void SVTK_MainWindow ::onTopView() @@ -589,7 +701,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "bottom view" +*/ void SVTK_MainWindow ::onBottomView() @@ -598,7 +712,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "left view" +*/ void SVTK_MainWindow ::onLeftView() @@ -607,7 +723,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "right view" +*/ void SVTK_MainWindow ::onRightView() @@ -616,7 +734,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void SVTK_MainWindow ::onResetView() @@ -625,7 +745,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "fit all" +*/ void SVTK_MainWindow ::onFitAll() @@ -634,7 +756,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Shows trihedron +*/ void SVTK_MainWindow ::onViewTrihedron() @@ -643,7 +767,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Shows cube axes +*/ void SVTK_MainWindow ::onViewCubeAxes() @@ -652,7 +778,17 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +void +SVTK_MainWindow +::onUpdateRate(bool theIsActivate) +{ + if(theIsActivate){ + myUpdateRateDlg->Update(); + myUpdateRateDlg->show(); + }else + myUpdateRateDlg->hide(); +} + void SVTK_MainWindow ::onNonIsometric(bool theIsActivate) @@ -675,7 +811,6 @@ SVTK_MainWindow myCubeAxesDlg->hide(); } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::onAdjustTrihedron() @@ -683,7 +818,6 @@ SVTK_MainWindow GetRenderer()->OnAdjustTrihedron(); } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::onAdjustCubeAxes() @@ -691,7 +825,9 @@ SVTK_MainWindow GetRenderer()->OnAdjustCubeAxes(); } -//---------------------------------------------------------------------------- +/*! + \return QImage, containing all scene rendering in window +*/ QImage SVTK_MainWindow ::dumpView() diff --git a/src/SVTK/SVTK_MainWindow.h b/src/SVTK/SVTK_MainWindow.h index 45f525f28..675d633b4 100644 --- a/src/SVTK/SVTK_MainWindow.h +++ b/src/SVTK/SVTK_MainWindow.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_MAINWINDOW_H #define SVTK_MAINWINDOW_H @@ -25,6 +43,7 @@ class SUIT_ViewWindow; class SVTK_RenderWindowInteractor; class SVTK_NonIsometricDlg; +class SVTK_UpdateRateDlg; class SVTK_CubeAxesActor2D; class SVTK_CubeAxesDlg; @@ -36,7 +55,6 @@ class SVTK_Renderer; class SVTK_Selector; -//---------------------------------------------------------------------------- //! The class is a container for #SVTK_RenderWindowInteractor. /*! The class contains #SVTK_RenderWindowInteractor instance and @@ -175,7 +193,14 @@ public: //---------------------------------------------------------------------------- QToolBar* getToolBar(); + signals: + void Show( QShowEvent * ); + void Hide( QHideEvent * ); + public slots: + virtual void showEvent( QShowEvent * ); + virtual void hideEvent( QHideEvent * ); + void activateZoom(); void activateWindowFit(); void activateRotation(); @@ -195,6 +220,7 @@ public: void onViewTrihedron(); void onViewCubeAxes(); + void onUpdateRate(bool theIsActivate); void onNonIsometric(bool theIsActivate); void onGraduatedAxes(bool theIsActivate); @@ -216,12 +242,13 @@ public: enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, - ViewTrihedronId, NonIsometric, GraduatedAxes}; + ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate}; typedef QMap TActionsMap; SUIT_ViewWindow* myViewWindow; SVTK_NonIsometricDlg* myNonIsometricDlg; + SVTK_UpdateRateDlg* myUpdateRateDlg; SVTK_CubeAxesDlg* myCubeAxesDlg; vtkSmartPointer myEventDispatcher; diff --git a/src/SVTK/SVTK_NonIsometricDlg.cxx b/src/SVTK/SVTK_NonIsometricDlg.cxx index a01bcbdcb..a2e5ed466 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.cxx +++ b/src/SVTK/SVTK_NonIsometricDlg.cxx @@ -44,15 +44,13 @@ using namespace std; Constructor */ SVTK_NonIsometricDlg -::SVTK_NonIsometricDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction): - QDialog(theParent, - theName, - false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), - m_MainWindow(theParent), - m_Action(theAction) +::SVTK_NonIsometricDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName): + SVTK_DialogBase(theAction, + theParent, + theName), + m_MainWindow(theParent) { setCaption(tr("DLG_TITLE")); setSizeGripEnabled(TRUE); @@ -63,66 +61,70 @@ SVTK_NonIsometricDlg layoutDlg->setMargin(11); // Create croup box with grid layout - QGroupBox* GroupBox = new QGroupBox(this, "GroupBox"); - QGridLayout* glGroupBox = new QGridLayout(GroupBox); - glGroupBox->setMargin(11); - glGroupBox->setSpacing(6); + QGroupBox* aGroupBox = new QGroupBox(this, "GroupBox"); + QHBoxLayout* aHBoxLayout = new QHBoxLayout(aGroupBox); + aHBoxLayout->setMargin(11); + aHBoxLayout->setSpacing(6); // "X" scaling - QLabel* TextLabelX = new QLabel (tr("LBL_X"), GroupBox, "TextLabelX"); - m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelX = new QLabel (tr("LBL_X"), aGroupBox, "TextLabelX"); + TextLabelX->setFixedWidth(15); + m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbXcoeff->setMinimumWidth(80); m_sbXcoeff->setValue(1.0); // "Y" scaling - QLabel* TextLabelY = new QLabel (tr("LBL_Y"), GroupBox, "TextLabelY"); - m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelY = new QLabel (tr("LBL_Y"), aGroupBox, "TextLabelY"); + TextLabelY->setFixedWidth(15); + m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbYcoeff->setMinimumWidth(80); m_sbYcoeff->setValue(1.0); // "Z" scaling - QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), GroupBox, "TextLabelZ"); - m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), aGroupBox, "TextLabelZ"); + TextLabelZ->setFixedWidth(15); + m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbZcoeff->setMinimumWidth(80); m_sbZcoeff->setValue(1.0); // Create button - m_bReset = new QPushButton(tr("&Reset"), GroupBox, "m_bReset"); + m_bReset = new QPushButton(tr("&Reset"), aGroupBox, "m_bReset"); // Layout widgets in the group box - glGroupBox->addWidget(TextLabelX, 0, 0); - glGroupBox->addWidget(m_sbXcoeff, 0, 1); - glGroupBox->addWidget(TextLabelY, 0, 2); - glGroupBox->addWidget(m_sbYcoeff, 0, 3); - glGroupBox->addWidget(TextLabelZ, 0, 4); - glGroupBox->addWidget(m_sbZcoeff, 0, 5); - glGroupBox->addWidget(m_bReset, 0, 6); + aHBoxLayout->addWidget(TextLabelX); + aHBoxLayout->addWidget(m_sbXcoeff); + aHBoxLayout->addWidget(TextLabelY); + aHBoxLayout->addWidget(m_sbYcoeff); + aHBoxLayout->addWidget(TextLabelZ); + aHBoxLayout->addWidget(m_sbZcoeff); + //aHBoxLayout->addStretch(); + aHBoxLayout->addWidget(m_bReset); // OK, CANCEL, Apply button - QGroupBox* aWgt = new QGroupBox(this); - QHBoxLayout* aHBoxLayout = new QHBoxLayout(aWgt); - aHBoxLayout->setMargin(11); - aHBoxLayout->setSpacing(6); + QGroupBox* aGroupBox2 = new QGroupBox(this); + QHBoxLayout* aHBoxLayout2 = new QHBoxLayout(aGroupBox2); + aHBoxLayout2->setMargin(11); + aHBoxLayout2->setSpacing(6); // Create button - QPushButton* m_bOk = new QPushButton(tr("O&K"), aWgt, "m_bOk"); + QPushButton* m_bOk = new QPushButton(tr("O&K"), aGroupBox2, "m_bOk"); m_bOk->setDefault(TRUE); m_bOk->setAutoDefault(TRUE); // Create button - QPushButton* m_bApply = new QPushButton(tr("&Apply"), aWgt, "m_bApply"); + QPushButton* m_bApply = new QPushButton(tr("&Apply"), aGroupBox2, "m_bApply"); m_bApply->setAutoDefault(TRUE); // Create button - QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aWgt, "m_bCancel"); + QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aGroupBox2, "m_bCancel"); m_bCancel->setAutoDefault(TRUE); // Layout buttons - aHBoxLayout->addWidget(m_bOk); - aHBoxLayout->addWidget(m_bApply); - aHBoxLayout->addStretch(); - aHBoxLayout->addWidget(m_bCancel); + aHBoxLayout2->addWidget(m_bOk); + aHBoxLayout2->addWidget(m_bApply); + aHBoxLayout2->addStretch(); + aHBoxLayout2->addWidget(m_bCancel); // Layout top level widgets - layoutDlg->addWidget(GroupBox,0,0); - layoutDlg->addWidget(aWgt,1,0); + layoutDlg->addWidget(aGroupBox,0,0); + layoutDlg->addWidget(aGroupBox2,1,0); // signals and slots connections connect(m_bCancel, SIGNAL(clicked()), this, SLOT(onClickClose())); @@ -187,14 +189,4 @@ SVTK_NonIsometricDlg ::onClickClose() { reject(); - - m_Action->setOn( false ); -} - -void -SVTK_NonIsometricDlg -::done( int r ) -{ - m_Action->setOn( false ); - QDialog::done( r ); } diff --git a/src/SVTK/SVTK_NonIsometricDlg.h b/src/SVTK/SVTK_NonIsometricDlg.h index 6a11a14f6..7043f922e 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.h +++ b/src/SVTK/SVTK_NonIsometricDlg.h @@ -29,7 +29,7 @@ #ifndef SVTK_NONISOMETRICDLG_H #define SVTK_NONISOMETRICDLG_H -#include +#include "SVTK_DialogBase.h" class SVTK_MainWindow; @@ -39,14 +39,14 @@ class QtxAction; class QPushButton; -class SVTK_NonIsometricDlg : public QDialog +class SVTK_NonIsometricDlg : public SVTK_DialogBase { Q_OBJECT; public: - SVTK_NonIsometricDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction); + SVTK_NonIsometricDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName); ~SVTK_NonIsometricDlg(); @@ -54,7 +54,6 @@ public: protected: SVTK_MainWindow *m_MainWindow; - QtxAction* m_Action; QtxDblSpinBox* m_sbXcoeff; QtxDblSpinBox* m_sbYcoeff; @@ -66,8 +65,6 @@ protected slots: void onClickReset(); void onClickOk(); void onClickClose(); - - virtual void done( int ); }; #endif // SVTK_NONISOMETRICDLG_H diff --git a/src/SVTK/SVTK_Prs.cxx b/src/SVTK/SVTK_Prs.cxx index 9db710484..620202f40 100644 --- a/src/SVTK/SVTK_Prs.cxx +++ b/src/SVTK/SVTK_Prs.cxx @@ -29,55 +29,40 @@ #include "SVTK_Prs.h" using namespace std; -//========================================================== /*! - * SVTK_Prs::SVTK_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ SVTK_Prs::SVTK_Prs() : myObjects( 0 ) { } -//========================================================== /*! - * SVTK_Prs::SVTK_Prs - * tandard constructora - */ -//========================================================== + Standard constructor +*/ SVTK_Prs::SVTK_Prs( const vtkActor* obj ) { AddObject( obj ); } -//========================================================== /*! - * SVTK_Prs::~SVTK_Prs - * Destructor - */ -//========================================================== + Destructor +*/ SVTK_Prs:: ~SVTK_Prs() { if ( myObjects ) myObjects->Delete(); } -//========================================================== /*! - * SVTK_Prs::GetObjects - * Get actors list - */ -//========================================================== + \return actors list +*/ vtkActorCollection* SVTK_Prs::GetObjects() const { return myObjects; } -//========================================================== /*! - * SVTK_Prs::AddObject - * Add actor - */ -//========================================================== + Add actor +*/ void SVTK_Prs::AddObject( const vtkActor* obj ) { if ( !myObjects) @@ -85,13 +70,9 @@ void SVTK_Prs::AddObject( const vtkActor* obj ) myObjects->AddItem( (vtkActor*)obj ); } -//========================================================== /*! - * SVTK_Prs::IsNull - * Return 0 if list of the actors is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the actors is empty [ Reimplemented from SALOME_Prs ] +*/ bool SVTK_Prs::IsNull() const { return !myObjects || myObjects->GetNumberOfItems() <= 0; diff --git a/src/SVTK/SVTK_RectPicker.cxx b/src/SVTK/SVTK_RectPicker.cxx index 775782e80..88f085419 100644 --- a/src/SVTK/SVTK_RectPicker.cxx +++ b/src/SVTK/SVTK_RectPicker.cxx @@ -47,12 +47,11 @@ #include #include -//---------------------------------------------------------------------------- namespace { //---------------------------------------------------------------------------- inline - float + vtkFloatingPointType GetZ(float* theZPtr, int theSelection[4], int theDX, @@ -67,13 +66,13 @@ namespace int Check(float* theZPtr, int theSelection[4], - float theTolerance, - float theDZ, + vtkFloatingPointType theTolerance, + vtkFloatingPointType theDZ, int theDX, int theDY) { int aRet = 0; - float aZ = -1.0; + vtkFloatingPointType aZ = -1.0; if(theDX >= theSelection[0] && theDX <= theSelection[2] && theDY >= theSelection[1] && theDY <= theSelection[3]) { @@ -98,7 +97,7 @@ namespace vtkDataSet *theInput, SVTK_RectPicker::TVectorIds& theVisibleIds, SVTK_RectPicker::TVectorIds& theInVisibleIds, - float theTolerance) + vtkFloatingPointType theTolerance) { theVisibleIds.clear(); theInVisibleIds.clear(); @@ -134,10 +133,10 @@ namespace */ for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){ // perform conversion - float aX[4] = {1.0, 1.0, 1.0, 1.0}; + vtkFloatingPointType aX[4] = {1.0, 1.0, 1.0, 1.0}; theInput->GetPoint(aPntId,aX); - float aView[4]; + vtkFloatingPointType aView[4]; aMatrix->MultiplyPoint(aX,aView); if(aView[3] == 0.0) continue; @@ -146,7 +145,7 @@ namespace aView[2]/aView[3]); theRenderer->ViewToDisplay(); - float aDX[3]; + vtkFloatingPointType aDX[3]; theRenderer->GetDisplayPoint(aDX); // check whether visible and in selection window @@ -212,8 +211,8 @@ namespace //---------------------------------------------------------------------------- inline void - GetCenter(const float theBounds[6], - float theCenter[3]) + GetCenter(const vtkFloatingPointType theBounds[6], + vtkFloatingPointType theCenter[3]) { theCenter[0] = (theBounds[1] + theBounds[0]) / 2.0; theCenter[1] = (theBounds[3] + theBounds[2]) / 2.0; @@ -225,7 +224,7 @@ namespace vtkRenderer *theRenderer, vtkDataSet *theInput, SVTK_RectPicker::TVectorIds& theVectorIds, - float theTolerance) + vtkFloatingPointType theTolerance) { theVectorIds.clear(); @@ -260,14 +259,14 @@ namespace for(vtkIdType aCellId = 0; aCellId < aNumCells; aCellId++){ vtkCell* aCell = theInput->GetCell(aCellId); - float aBounds[6]; + vtkFloatingPointType aBounds[6]; aCell->GetBounds(aBounds); - float aCenter[3]; + vtkFloatingPointType aCenter[3]; GetCenter(aBounds,aCenter); - float aView[4]; - float aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0}; + vtkFloatingPointType aView[4]; + vtkFloatingPointType aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0}; aMatrix->MultiplyPoint(aX,aView); if(aView[3] == 0.0) @@ -278,7 +277,7 @@ namespace aView[2]/aView[3]); theRenderer->ViewToDisplay(); - float aDX[3]; + vtkFloatingPointType aDX[3]; theRenderer->GetDisplayPoint(aDX); // check whether visible and in selection window @@ -306,16 +305,16 @@ namespace //---------------------------------------------------------------------------- void CalculatePickPosition(vtkRenderer *theRenderer, - float theSelectionX, - float theSelectionY, - float theSelectionZ, - float thePickPosition[3]) + vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType thePickPosition[3]) { // Convert the selection point into world coordinates. // theRenderer->SetDisplayPoint(theSelectionX, theSelectionY, theSelectionZ); theRenderer->DisplayToWorld(); - float* aWorldCoords = theRenderer->GetWorldPoint(); + vtkFloatingPointType* aWorldCoords = theRenderer->GetWorldPoint(); if ( aWorldCoords[3] != 0.0 ) { for (int i=0; i < 3; i++) { thePickPosition[i] = aWorldCoords[i] / aWorldCoords[3]; @@ -324,10 +323,8 @@ namespace } } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_RectPicker); -//---------------------------------------------------------------------------- SVTK_RectPicker ::SVTK_RectPicker() { @@ -341,26 +338,33 @@ SVTK_RectPicker int SVTK_RectPicker -::Pick(float, float, float, vtkRenderer*) +::Pick(vtkFloatingPointType, + vtkFloatingPointType, + vtkFloatingPointType, + vtkRenderer*) { return 0; } -//---------------------------------------------------------------------------- int SVTK_RectPicker -::Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer) +::Pick(vtkFloatingPointType theSelection[3], + vtkFloatingPointType theSelection2[3], + vtkRenderer *theRenderer) { return Pick(theSelection[0], theSelection[1], theSelection[2], theSelection2[0], theSelection2[1], theSelection2[2], theRenderer); } -//---------------------------------------------------------------------------- int SVTK_RectPicker -::Pick(float theSelectionX, float theSelectionY, float theSelectionZ, - float theSelectionX2, float theSelectionY2, float theSelectionZ2, +::Pick(vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType theSelectionX2, + vtkFloatingPointType theSelectionY2, + vtkFloatingPointType theSelectionZ2, vtkRenderer *theRenderer) { // Initialize picking process @@ -374,14 +378,14 @@ SVTK_RectPicker // vtkCamera* aCamera = theRenderer->GetActiveCamera(); - float aCameraFP[4]; + vtkFloatingPointType aCameraFP[4]; aCamera->GetFocalPoint(aCameraFP); aCameraFP[3] = 1.0; theRenderer->SetWorldPoint(aCameraFP); theRenderer->WorldToDisplay(); - float* aDisplayCoords = theRenderer->GetDisplayPoint(); - float aSelectionZ = aDisplayCoords[2]; + vtkFloatingPointType* aDisplayCoords = theRenderer->GetDisplayPoint(); + vtkFloatingPointType aSelectionZ = aDisplayCoords[2]; this->SelectionPoint[0] = theSelectionX; this->SelectionPoint[1] = theSelectionY; @@ -472,7 +476,6 @@ SVTK_RectPicker } -//---------------------------------------------------------------------------- const SVTK_RectPicker::TVectorIdsMap& SVTK_RectPicker ::GetPointIdsMap() const diff --git a/src/SVTK/SVTK_RectPicker.h b/src/SVTK/SVTK_RectPicker.h index a9837c2d9..77c9a3b16 100644 --- a/src/SVTK/SVTK_RectPicker.h +++ b/src/SVTK/SVTK_RectPicker.h @@ -29,6 +29,7 @@ #define __SVTK_RectPicker_h #include "SVTK.h" +#include "VTKViewer.h" #include #include @@ -40,7 +41,7 @@ class vtkRenderer; /*! \class vtkAbstractPropPicker * \brief For more information see VTK documentation */ -/*! \class VTKViewer_RectPicker +/*! \class SVTK_RectPicker * \brief Rectangular picker class. */ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker @@ -56,8 +57,8 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker as fraction of rendering window size. (Rendering window size is measured across diagonal.) */ - vtkSetMacro(Tolerance,float); - vtkGetMacro(Tolerance,float); + vtkSetMacro(Tolerance,vtkFloatingPointType); + vtkGetMacro(Tolerance,vtkFloatingPointType); //! Use these methods to pick points or points and cells vtkSetMacro(PickPoints,int); @@ -66,12 +67,18 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker virtual int - Pick(float theSelectionX, float theSelectionY, float theSelectionZ, - float theSelectionX2, float theSelectionY2, float theSelectionZ2, + Pick(vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType theSelectionX2, + vtkFloatingPointType theSelectionY2, + vtkFloatingPointType theSelectionZ2, vtkRenderer *theRenderer); int - Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer); + Pick(vtkFloatingPointType theSelection[3], + vtkFloatingPointType theSelection2[3], + vtkRenderer *theRenderer); typedef std::vector TVectorIds; typedef std::map TVectorIdsMap; @@ -87,16 +94,16 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker ~SVTK_RectPicker(); //! tolerance for computation (% of window) - float Tolerance; + vtkFloatingPointType Tolerance; //! use the following to control picking mode int PickPoints; //! second rectangle selection point in window (pixel) coordinates - float SelectionPoint2[3]; + vtkFloatingPointType SelectionPoint2[3]; //! second rectangle selection point in world coordinates - float PickPosition2[3]; + vtkFloatingPointType PickPosition2[3]; TVectorIdsMap myPointIdsMap; TVectorIdsMap myCellIdsMap; @@ -104,7 +111,10 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker private: virtual int - Pick(float, float, float, vtkRenderer*); + Pick(vtkFloatingPointType, + vtkFloatingPointType, + vtkFloatingPointType, + vtkRenderer*); }; #endif diff --git a/src/SVTK/SVTK_RenderWindowInteractor.cxx b/src/SVTK/SVTK_RenderWindowInteractor.cxx index 0d4142995..4921f63f9 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_RenderWindowInteractor.cxx @@ -61,7 +61,9 @@ static bool GENERATE_SUIT_EVENTS = false; static bool FOCUS_UNDER_MOUSE = false; -//---------------------------------------------------------------------------- +/*! + Constructor +*/ QVTK_RenderWindowInteractor ::QVTK_RenderWindowInteractor(QWidget* theParent, const char* theName): @@ -79,7 +81,9 @@ QVTK_RenderWindowInteractor myRenderWindow->SetWindowId((void*)winId()); } - +/*! + To initialize by vtkGenericRenderWindowInteractor instance +*/ void QVTK_RenderWindowInteractor ::Initialize(vtkGenericRenderWindowInteractor* theDevice) @@ -93,7 +97,9 @@ QVTK_RenderWindowInteractor theDevice->SetRenderWindow(getRenderWindow()); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ QVTK_RenderWindowInteractor ::~QVTK_RenderWindowInteractor() { @@ -103,7 +109,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + \return corresponding render window interactor +*/ vtkGenericRenderWindowInteractor* QVTK_RenderWindowInteractor ::GetDevice() @@ -111,7 +119,9 @@ QVTK_RenderWindowInteractor return myDevice.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + \return corresponding render window +*/ vtkRenderWindow* QVTK_RenderWindowInteractor ::getRenderWindow() @@ -119,7 +129,9 @@ QVTK_RenderWindowInteractor return myRenderWindow.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + Just to simplify usage of its device (vtkGenericRenderWindowInteractor) +*/ void QVTK_RenderWindowInteractor ::InvokeEvent(unsigned long theEvent, void* theCallData) @@ -127,7 +139,9 @@ QVTK_RenderWindowInteractor GetDevice()->InvokeEvent(theEvent,theCallData); } -//---------------------------------------------------------------------------- +/*! + Need for initial contents display on Win32 +*/ void QVTK_RenderWindowInteractor ::show() @@ -136,7 +150,9 @@ QVTK_RenderWindowInteractor update(); // needed for initial contents display on Win32 } -//---------------------------------------------------------------------------- +/*! + To implement final initialization, just before the widget is displayed +*/ void QVTK_RenderWindowInteractor ::polish() @@ -149,7 +165,9 @@ QVTK_RenderWindowInteractor } } -//---------------------------------------------------------------------------- +/*! + To adjust widget and vtkRenderWindow size +*/ void QVTK_RenderWindowInteractor ::resize(int w, int h) @@ -157,7 +175,9 @@ QVTK_RenderWindowInteractor GetDevice()->UpdateSize(w,h); } -//---------------------------------------------------------------------------- +/*! + Custom paint event handler +*/ void QVTK_RenderWindowInteractor ::paintEvent( QPaintEvent* theEvent ) @@ -166,7 +186,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom resize event handler +*/ void QVTK_RenderWindowInteractor ::resizeEvent( QResizeEvent* theEvent ) @@ -198,14 +220,18 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- + +/*! + Custom context menu event handler +*/ void QVTK_RenderWindowInteractor ::contextMenuEvent( QContextMenuEvent* event ) {} - -//---------------------------------------------------------------------------- +/*! + Custom mouse move event handler +*/ void QVTK_RenderWindowInteractor ::mouseMoveEvent( QMouseEvent* event ) @@ -218,7 +244,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void QVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -236,7 +264,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void QVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -255,14 +285,18 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse double click event handler +*/ void QVTK_RenderWindowInteractor ::mouseDoubleClickEvent( QMouseEvent* event ) {} -//---------------------------------------------------------------------------- +/*! + Custom mouse wheel event handler +*/ void QVTK_RenderWindowInteractor ::wheelEvent( QWheelEvent* event ) @@ -272,7 +306,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void QVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -284,7 +320,9 @@ QVTK_RenderWindowInteractor GetDevice()->CharEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void QVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -296,7 +334,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom enter event handler +*/ void QVTK_RenderWindowInteractor ::enterEvent( QEvent* event ) @@ -308,7 +348,9 @@ QVTK_RenderWindowInteractor GetDevice()->EnterEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom leave event handler +*/ void QVTK_RenderWindowInteractor ::leaveEvent( QEvent * ) @@ -316,8 +358,10 @@ QVTK_RenderWindowInteractor GetDevice()->LeaveEvent(); } - -//---------------------------------------------------------------------------- +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ void QVTK_RenderWindowInteractor ::focusInEvent( QFocusEvent* event ) @@ -334,7 +378,10 @@ QVTK_RenderWindowInteractor } } -//---------------------------------------------------------------------------- +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ void QVTK_RenderWindowInteractor ::focusOutEvent ( QFocusEvent* event ) @@ -349,7 +396,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + To handle native X11 events (from such devices as SpaceMouse) +*/ bool QVTK_RenderWindowInteractor ::x11Event( XEvent *xEvent ) @@ -376,8 +425,9 @@ QVTK_RenderWindowInteractor return QWidget::x11Event( xEvent ); } - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_RenderWindowInteractor ::SVTK_RenderWindowInteractor(QWidget* theParent, const char* theName): @@ -392,6 +442,9 @@ SVTK_RenderWindowInteractor myEventCallbackCommand->SetCallback(SVTK_RenderWindowInteractor::ProcessEvents); } +/*! + To initialize properly the class +*/ void SVTK_RenderWindowInteractor ::Initialize(vtkGenericRenderWindowInteractor* theDevice, @@ -403,7 +456,9 @@ SVTK_RenderWindowInteractor SetSelector(theSelector); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_RenderWindowInteractor ::~SVTK_RenderWindowInteractor() { @@ -421,7 +476,9 @@ SVTK_RenderWindowInteractor GetDevice()->SetRenderWindow(NULL); } -//---------------------------------------------------------------------------- +/*! + To get corresponding SVTK_Renderer instance +*/ SVTK_Renderer* SVTK_RenderWindowInteractor ::GetRenderer() @@ -429,6 +486,9 @@ SVTK_RenderWindowInteractor return myRenderer.GetPointer(); } +/*! + To get corresponding SVTK_Renderer device (just to simplify collobaration with SVTK_Renderer) +*/ vtkRenderer* SVTK_RenderWindowInteractor ::getRenderer() @@ -436,6 +496,10 @@ SVTK_RenderWindowInteractor return GetRenderer()->GetDevice(); } +/*! + Changes renderer + \param theRenderer - new renderer +*/ void SVTK_RenderWindowInteractor ::SetRenderer(SVTK_Renderer* theRenderer) @@ -453,7 +517,10 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Changes interactor style + \param theStyle - new interactor style +*/ void SVTK_RenderWindowInteractor ::InitInteractorStyle(vtkInteractorStyle* theStyle) @@ -461,8 +528,9 @@ SVTK_RenderWindowInteractor GetDevice()->SetInteractorStyle(theStyle); } - -//---------------------------------------------------------------------------- +/*! + To change current interactor style by pushing the new one into the container +*/ void SVTK_RenderWindowInteractor ::PushInteractorStyle(vtkInteractorStyle* theStyle) @@ -471,8 +539,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(theStyle); } - -//---------------------------------------------------------------------------- +/*! + To restore previous interactor style +*/ void SVTK_RenderWindowInteractor ::PopInteractorStyle() @@ -484,8 +553,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(GetInteractorStyle()); } - -//---------------------------------------------------------------------------- +/*! + To get current interactor style +*/ vtkInteractorStyle* SVTK_RenderWindowInteractor ::GetInteractorStyle() @@ -494,7 +564,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + To get current selector +*/ SVTK_Selector* SVTK_RenderWindowInteractor ::GetSelector() @@ -503,6 +575,10 @@ SVTK_RenderWindowInteractor } +/*! + Changes selector + \param theSelector - new selector +*/ void SVTK_RenderWindowInteractor ::SetSelector(SVTK_Selector* theSelector) @@ -518,8 +594,9 @@ SVTK_RenderWindowInteractor myPriority); } - -//---------------------------------------------------------------------------- +/*! + Main process VTK event method +*/ void SVTK_RenderWindowInteractor ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -536,8 +613,9 @@ SVTK_RenderWindowInteractor } } - -//---------------------------------------------------------------- +/*! + To change selection mode (just to simplify collobaration with SVTK_Selector) +*/ void SVTK_RenderWindowInteractor ::SetSelectionMode(Selection_Mode theMode) @@ -545,8 +623,9 @@ SVTK_RenderWindowInteractor mySelector->SetSelectionMode(theMode); } - -//---------------------------------------------------------------- +/*! + To get current selection mode (just to simplify collobaration with SVTK_Selector) +*/ Selection_Mode SVTK_RenderWindowInteractor ::SelectionMode() const @@ -555,7 +634,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------- +/*! + Emits signal selectionChanged() +*/ void SVTK_RenderWindowInteractor ::onEmitSelectionChanged() @@ -564,7 +645,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse move event handler +*/ void SVTK_RenderWindowInteractor ::mouseMoveEvent( QMouseEvent* event ) @@ -576,7 +659,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void SVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -588,7 +673,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void SVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -600,7 +687,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse double click event handler +*/ void SVTK_RenderWindowInteractor ::mouseDoubleClickEvent( QMouseEvent* event ) @@ -612,7 +701,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse wheel event handler +*/ void SVTK_RenderWindowInteractor ::wheelEvent( QWheelEvent* event ) @@ -628,8 +719,9 @@ SVTK_RenderWindowInteractor emit WheelMoved( event ); } - -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void SVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -640,7 +732,9 @@ SVTK_RenderWindowInteractor emit KeyPressed( event ); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void SVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -651,7 +745,9 @@ SVTK_RenderWindowInteractor emit KeyReleased( event ); } -//---------------------------------------------------------------------------- +/*! + Custom context menu event handler +*/ void SVTK_RenderWindowInteractor ::contextMenuEvent( QContextMenuEvent* event ) diff --git a/src/SVTK/SVTK_RenderWindowInteractor.h b/src/SVTK/SVTK_RenderWindowInteractor.h index bc0020ddf..c67f86313 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.h +++ b/src/SVTK/SVTK_RenderWindowInteractor.h @@ -52,9 +52,9 @@ class vtkObject; class SVTK_Selector; class SVTK_Renderer; -//============================================================================ -//! Implemements Qt based vtkRenderWindowInteractor. /*! + \class QVTK_RenderWindowInteractor + Implements Qt based vtkRenderWindowInteractor. The class inherits #QWidget class in order to be possible process Qt events. It invokes corresponding VTK events through usage of its device - a #vtkGenericRenderWindowInteractor. Also, it creates, initialize and holds vtkRenderWindow instance. @@ -124,9 +124,9 @@ class SVTK_EXPORT QVTK_RenderWindowInteractor: public QWidget }; -//============================================================================ //! Extends QVTK_RenderWindowInteractor functionality. /*! + \class SVTK_RenderWindowInteractor Implements such features as support of selection, run-time interactor style management, diff --git a/src/SVTK/SVTK_Renderer.cxx b/src/SVTK/SVTK_Renderer.cxx index 8302903a3..853ad34ca 100644 --- a/src/SVTK/SVTK_Renderer.cxx +++ b/src/SVTK/SVTK_Renderer.cxx @@ -55,10 +55,11 @@ #undef max -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_Renderer); -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_Renderer ::SVTK_Renderer(): myDevice(vtkRenderer::New()), @@ -152,6 +153,9 @@ SVTK_Renderer myPriority); } +/*! + Destructor +*/ SVTK_Renderer ::~SVTK_Renderer() { @@ -176,6 +180,9 @@ SVTK_Renderer } +/*! + Main process event method +*/ void SVTK_Renderer ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -198,7 +205,9 @@ SVTK_Renderer } } -//---------------------------------------------------------------------------- +/*! + \return renderer's device +*/ vtkRenderer* SVTK_Renderer ::GetDevice() @@ -206,6 +215,9 @@ SVTK_Renderer return myDevice.GetPointer(); } +/*! + Initialize renderer +*/ void SVTK_Renderer ::Initialize(vtkRenderWindowInteractor* theInteractor, @@ -215,7 +227,9 @@ SVTK_Renderer mySelector = theSelector; } -//---------------------------------------------------------------------------- +/*! + Publishes pointed actor into the renderer +*/ void SVTK_Renderer ::AddActor(VTKViewer_Actor* theActor) @@ -239,6 +253,9 @@ SVTK_Renderer } } +/*! + Removes pointed actor from the renderer +*/ void SVTK_Renderer ::RemoveActor(VTKViewer_Actor* theActor) @@ -264,6 +281,9 @@ SVTK_Renderer } } +/*! + Get special container that keeps scaling of the scene +*/ VTKViewer_Transform* SVTK_Renderer ::GetTransform() @@ -271,6 +291,9 @@ SVTK_Renderer return myTransform.GetPointer(); } +/*! + Allows to get a scale that is applied on the whole scene +*/ void SVTK_Renderer ::GetScale( double theScale[3] ) @@ -278,6 +301,9 @@ SVTK_Renderer myTransform->GetMatrixScale( theScale ); } +/*! + Allows to apply a scale on the whole scene +*/ void SVTK_Renderer ::SetScale( double theScale[3] ) @@ -286,8 +312,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + Applies color and size (PointSize and LineWidth) of primitives in selection mode +*/ void SVTK_Renderer ::SetSelectionProp(const double& theRed, @@ -300,7 +327,9 @@ SVTK_Renderer myHighlightProperty->SetPointSize( theWidth ); } -//---------------------------------------------------------------------------- +/*! + Applies color and size (PointSize and LineWidth) of primitives in preselection mode +*/ void SVTK_Renderer ::SetPreselectionProp(const double& theRed, @@ -313,7 +342,9 @@ SVTK_Renderer myPreHighlightProperty->SetPointSize( theWidth ); } -//---------------------------------------------------------------------------- +/*! + Setup requested tolerance for the picking +*/ void SVTK_Renderer ::SetSelectionTolerance(const double& theTolNodes, @@ -327,14 +358,13 @@ SVTK_Renderer } -//---------------------------------------------------------------------------- /*! If parameter theIsForcedUpdate is true, recalculate parameters for * trihedron and cube axes, even if trihedron and cube axes is invisible. */ inline bool -CheckBndBox(const float theBounds[6]) +CheckBndBox(const vtkFloatingPointType theBounds[6]) { if(theBounds[0] > -VTK_LARGE_FLOAT && theBounds[1] < VTK_LARGE_FLOAT && theBounds[2] > -VTK_LARGE_FLOAT && theBounds[3] < VTK_LARGE_FLOAT && @@ -343,6 +373,9 @@ CheckBndBox(const float theBounds[6]) return false; } +/*! + Adjusts size of actors +*/ bool SVTK_Renderer ::OnAdjustActors() @@ -350,7 +383,7 @@ SVTK_Renderer bool aTDisplayed = IsTrihedronDisplayed(); bool aCDisplayed = IsCubeAxesDisplayed(); - float aNewBndBox[6]; + vtkFloatingPointType aNewBndBox[6]; aNewBndBox[ 0 ] = aNewBndBox[ 2 ] = aNewBndBox[ 4 ] = VTK_LARGE_FLOAT; aNewBndBox[ 1 ] = aNewBndBox[ 3 ] = aNewBndBox[ 5 ] = -VTK_LARGE_FLOAT; @@ -363,7 +396,7 @@ SVTK_Renderer myCubeAxes->VisibilityOff(); // if the new trihedron size have sufficient difference, then apply the value - double aSize = myTrihedron->GetSize(); + vtkFloatingPointType aSize = myTrihedron->GetSize(); if ( IsTrihedronRelative() ) { ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize); @@ -380,7 +413,7 @@ SVTK_Renderer if(anActor->IsResizable()) anActor->SetSize(0.5*aSize); if(anActor->GetVisibility() && !anActor->IsInfinitive()){ - float *aBounds = anActor->GetBounds(); + vtkFloatingPointType *aBounds = anActor->GetBounds(); if(CheckBndBox(aBounds)) for(int i = 0; i < 5; i = i + 2){ if(aBounds[i] < aNewBndBox[i]) @@ -414,6 +447,9 @@ SVTK_Renderer return false; } +/*! + Adjusts size of actors +*/ void SVTK_Renderer ::AdjustActors() @@ -422,6 +458,12 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } +/*! + Set size of the trihedron + \param theSize - new size + \param theRelative - if it is true, then size is mesured in percents from bounding box of the scene, + otherwise - in viewer units +*/ void SVTK_Renderer ::SetTrihedronSize(int theSize, const bool theRelative) @@ -433,6 +475,9 @@ SVTK_Renderer } } +/*! + \return size of the trihedron in percents from bounding box of the scene +*/ int SVTK_Renderer ::GetTrihedronSize() const @@ -440,6 +485,9 @@ SVTK_Renderer return myTrihedronSize; } +/*! + \return true if the size of the trihedron is relative +*/ bool SVTK_Renderer ::IsTrihedronRelative() const @@ -447,7 +495,9 @@ SVTK_Renderer return myIsTrihedronRelative; } -//---------------------------------------------------------------------------- +/*! + \return trihedron control +*/ VTKViewer_Trihedron* SVTK_Renderer ::GetTrihedron() @@ -455,6 +505,9 @@ SVTK_Renderer return myTrihedron.GetPointer(); } +/*! + \return true if trihedron is displayed +*/ bool SVTK_Renderer ::IsTrihedronDisplayed() @@ -462,6 +515,9 @@ SVTK_Renderer return myTrihedron->GetVisibility() == VTKViewer_Trihedron::eOn; } +/*! + Toggle trihedron visibility +*/ void SVTK_Renderer ::OnViewTrihedron() @@ -472,6 +528,9 @@ SVTK_Renderer myTrihedron->VisibilityOn(); } +/*! + Adjust size of the trihedron to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustTrihedron() @@ -479,8 +538,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + \return graduated rules control +*/ SVTK_CubeAxesActor2D* SVTK_Renderer ::GetCubeAxes() @@ -488,6 +548,9 @@ SVTK_Renderer return myCubeAxes.GetPointer(); } +/*! + \return true if graduated rules displayed +*/ bool SVTK_Renderer ::IsCubeAxesDisplayed() @@ -495,6 +558,9 @@ SVTK_Renderer return myCubeAxes->GetVisibility() == 1; } +/*! + Toggle graduated rules visibility +*/ void SVTK_Renderer ::OnViewCubeAxes() @@ -505,6 +571,9 @@ SVTK_Renderer myCubeAxes->VisibilityOn(); } +/*! + Adjust size of the graduated rules to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustCubeAxes() @@ -512,8 +581,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + Sets camera into predefined state +*/ void SVTK_Renderer ::OnResetView() @@ -540,12 +610,13 @@ SVTK_Renderer else myCubeAxes->VisibilityOff(); - static float aCoeff = 3.0; + static vtkFloatingPointType aCoeff = 3.0; aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale()); } - -//---------------------------------------------------------------------------- +/*! + Fit all presentation in the scene into the window +*/ void SVTK_Renderer ::OnFitAll() @@ -584,8 +655,9 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } - -//---------------------------------------------------------------------------- +/*! + Reset camera clipping range to adjust the range to the bounding box of the scene +*/ void SVTK_Renderer ::OnResetClippingRange() @@ -594,8 +666,9 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } - -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to front view +*/ void SVTK_Renderer ::OnFrontView() @@ -607,7 +680,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to back view +*/ void SVTK_Renderer ::OnBackView() @@ -619,7 +694,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to top view +*/ void SVTK_Renderer ::OnTopView() @@ -631,7 +708,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to bottom view +*/ void SVTK_Renderer ::OnBottomView() @@ -643,7 +722,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to left view +*/ void SVTK_Renderer ::OnLeftView() @@ -655,7 +736,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to right view +*/ void SVTK_Renderer ::OnRightView() diff --git a/src/SVTK/SVTK_Renderer.h b/src/SVTK/SVTK_Renderer.h index 5532ea852..6012689ec 100644 --- a/src/SVTK/SVTK_Renderer.h +++ b/src/SVTK/SVTK_Renderer.h @@ -30,6 +30,7 @@ #define SVTK_Renderer_h #include "SVTK.h" +#include "VTKViewer.h" #include #include @@ -52,13 +53,13 @@ class VTKViewer_Actor; class SVTK_Selector; -//! The class is a container for #vtkRenderer instance. -/*! +/*! + \class SVTK_Renderer + The class is a container for #vtkRenderer instance. Main goal of the class is to apply common behaviour to all #SALOME_Actor, like selection and preselection colors. Also, the class is responsible for management of internal actors like trihedron an so on. */ -//============================================================================ class SVTK_EXPORT SVTK_Renderer : public vtkObject { public: @@ -77,12 +78,12 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject SVTK_Selector* theSelector); //---------------------------------------------------------------------------- - //! This method publishes pointed actor into the renderer + //! Publishes pointed actor into the renderer virtual void AddActor(VTKViewer_Actor* theActor); - //! This method removes pointed actor from the renderer + //! Removes pointed actor from the renderer virtual void RemoveActor(VTKViewer_Actor* theActor); @@ -91,12 +92,12 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject VTKViewer_Transform* GetTransform(); - //! This method allow to apply a scale on the whole scene + //! Allows to apply a scale on the whole scene virtual void SetScale( double theScale[3] ); - //! This method allow to get a scale that is applied on the whole scene + //! Allows to get a scale that is applied on the whole scene void GetScale( double theScale[3] ); @@ -115,7 +116,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject const double& theBlue = 1, const int& theWidth = 5); - //! Setup requested tollerance for the picking + //! Setup requested tolerance for the picking void SetSelectionTolerance(const double& theTolNodes = 0.025, const double& theTolCell = 0.001); @@ -209,7 +210,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject //---------------------------------------------------------------------------- // Priority at which events are processed - float myPriority; + vtkFloatingPointType myPriority; // Used to process events vtkSmartPointer myEventCallbackCommand; @@ -244,7 +245,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject vtkSmartPointer myTrihedron; int myTrihedronSize; bool myIsTrihedronRelative; - float myBndBox[6]; + vtkFloatingPointType myBndBox[6]; }; #endif diff --git a/src/SVTK/SVTK_Selector.cxx b/src/SVTK/SVTK_Selector.cxx index bc6dad148..b2813a41c 100644 --- a/src/SVTK/SVTK_Selector.cxx +++ b/src/SVTK/SVTK_Selector.cxx @@ -36,6 +36,9 @@ #include +/*! + \return new SVTK_Selector +*/ SVTK_Selector* SVTK_Selector ::New() @@ -43,19 +46,26 @@ SVTK_Selector return new SVTK_SelectorDef(); } -//---------------------------------------------------------------------------- +/*! + Default constructor +*/ SVTK_SelectorDef ::SVTK_SelectorDef() { mySelectionMode = ActorSelection; } +/*! + Destructor +*/ SVTK_SelectorDef ::~SVTK_SelectorDef() { } -//---------------------------------------------------------------------------- +/*! + To invoke selectionChanged signals +*/ void SVTK_SelectorDef ::StartPickCallback() @@ -63,7 +73,9 @@ SVTK_SelectorDef this->InvokeEvent(vtkCommand::StartPickEvent,NULL); } -//---------------------------------------------------------------------------- +/*! + To invoke selectionChanged signals +*/ void SVTK_SelectorDef ::EndPickCallback() @@ -71,7 +83,9 @@ SVTK_SelectorDef this->InvokeEvent(vtkCommand::EndPickEvent,NULL); } -//---------------------------------------------------------------------------- +/*! + To change current Selection_Mode (as outside effect, it invokes selectionChange signal) +*/ void SVTK_SelectorDef ::SetSelectionMode(Selection_Mode theMode) @@ -83,6 +97,9 @@ SVTK_SelectorDef } } +/*! + Clear selection +*/ void SVTK_SelectorDef ::ClearIObjects() @@ -92,7 +109,9 @@ SVTK_SelectorDef myMapIOSubIndex.clear(); } -//---------------------------------------------------------------------------- +/*! + \return true if the SALOME_InteractiveObject presents into selection +*/ bool SVTK_SelectorDef ::IsSelected(const Handle(SALOME_InteractiveObject)& theIO) const @@ -100,6 +119,9 @@ SVTK_SelectorDef return !theIO.IsNull() && (myIObjects.find(theIO) != myIObjects.end()); } +/*! + \return true if the SALOME_Actor presents into selection +*/ bool SVTK_SelectorDef ::IsSelected(SALOME_Actor* theActor) const @@ -108,6 +130,10 @@ SVTK_SelectorDef return IsSelected(anIO) && myIO2Actors.find(anIO) != myIO2Actors.end(); } +/*! + \return corresponding SALOME_Actor for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject +*/ SALOME_Actor* SVTK_SelectorDef ::GetActor(const Handle(SALOME_InteractiveObject)& theIO) const @@ -118,7 +144,10 @@ SVTK_SelectorDef return NULL; } -//---------------------------------------------------------------------------- +/*! + Adds SALOME_InteractiveObject into selection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::AddIObject(const Handle(SALOME_InteractiveObject)& theIO) @@ -130,6 +159,10 @@ SVTK_SelectorDef return false; } +/*! + Adds SALOME_Actor into selection + \param theActor - SALOME_Actor +*/ bool SVTK_SelectorDef ::AddIObject(SALOME_Actor* theActor) @@ -147,7 +180,10 @@ SVTK_SelectorDef return !anIsIOBound || !anIsActorBound; } -//---------------------------------------------------------------------------- +/*! + Removes SALOME_InteractiveObject from selection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::RemoveIObject(const Handle(SALOME_InteractiveObject)& theIO) @@ -161,6 +197,10 @@ SVTK_SelectorDef return anIsIOBound; } +/*! + Removes SALOME_Actor from selection + \param theActor - SALOME_Actor +*/ bool SVTK_SelectorDef ::RemoveIObject(SALOME_Actor* theActor) @@ -174,7 +214,9 @@ SVTK_SelectorDef return RemoveIObject(anIO) || anIsActorBound; } -//---------------------------------------------------------------------------- +/*! + \return list of all SALOME_InteractiveObject presenting in selection +*/ const SALOME_ListIO& SVTK_SelectorDef ::StoredIObjects() const @@ -188,6 +230,9 @@ SVTK_SelectorDef return myIObjectList; } +/*! + \return number of selected objects +*/ int SVTK_SelectorDef ::IObjectCount() const @@ -195,6 +240,10 @@ SVTK_SelectorDef return myIObjects.size(); } +/*! + \return true if the SALOME_InteractiveObject has a subselection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::HasIndex( const Handle(SALOME_InteractiveObject)& theIO) const @@ -202,6 +251,10 @@ SVTK_SelectorDef return myMapIOSubIndex.find(theIO) != myMapIOSubIndex.end(); } +/*! + Gets indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject +*/ void SVTK_SelectorDef ::GetIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -214,6 +267,11 @@ SVTK_SelectorDef theIndex.Clear(); } +/*! + \return true if the index presents in subselection + \param theIO - SALOME_InteractiveObject + \param theIndex - index +*/ bool SVTK_SelectorDef ::IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, @@ -253,7 +311,12 @@ removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, return anId; } - +/*! + Changes indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndices - indices + \param theIsModeShift - if it is false, then map will be cleared before indices are added +*/ bool SVTK_SelectorDef ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -283,6 +346,12 @@ SVTK_SelectorDef } +/*! + Changes indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndices - indices + \param theIsModeShift - if it is false, then map will be cleared before indices are added +*/ bool SVTK_SelectorDef ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -313,6 +382,12 @@ SVTK_SelectorDef } +/*! + Changes indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndex - index + \param theIsModeShift - if it is false, then map will be cleared before indices are added +*/ bool SVTK_SelectorDef ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -344,6 +419,11 @@ SVTK_SelectorDef } +/*! + Removes index of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndex - index +*/ void SVTK_SelectorDef ::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -356,6 +436,9 @@ SVTK_SelectorDef } } +/*! + Clears all indices of subselection +*/ void SVTK_SelectorDef ::ClearIndex() @@ -363,7 +446,10 @@ SVTK_SelectorDef myMapIOSubIndex.clear(); } -//---------------------------------------------------------------------------- +/*! + To apply a filter on the selection + \param theFilter - new filter +*/ void SVTK_SelectorDef ::SetFilter(const Handle(VTKViewer_Filter)& theFilter) @@ -371,7 +457,10 @@ SVTK_SelectorDef myFilters.insert(TFilters::value_type(theFilter->GetId(),theFilter)); } -//---------------------------------------------------------------------------- +/*! + \return true if filter with given number is applyed + \param theId - filter id +*/ bool SVTK_SelectorDef ::IsFilterPresent(const TFilterID theId) const @@ -379,7 +468,10 @@ SVTK_SelectorDef return myFilters.find(theId) != myFilters.end(); } -//---------------------------------------------------------------------------- +/*! + To remove a filter from the selection + \param theId - filter id +*/ void SVTK_SelectorDef ::RemoveFilter(const TFilterID theId) @@ -388,7 +480,12 @@ SVTK_SelectorDef myFilters.erase(theId); } -//---------------------------------------------------------------------------- +/*! + \return true if the index satisfy installed filters + \param theActor - actor + \param theId - filter id + \param theIsNode - whether it is node +*/ bool SVTK_SelectorDef ::IsValid(SALOME_Actor* theActor, @@ -405,7 +502,10 @@ SVTK_SelectorDef return true; } -//---------------------------------------------------------------------------- +/*! + \return filter by it's id + \param theId - filter id +*/ Handle(VTKViewer_Filter) SVTK_SelectorDef ::GetFilter(const TFilterID theId) const diff --git a/src/SVTK/SVTK_Selector.h b/src/SVTK/SVTK_Selector.h index 37ec0acb1..f476ae786 100644 --- a/src/SVTK/SVTK_Selector.h +++ b/src/SVTK/SVTK_Selector.h @@ -127,7 +127,7 @@ public: GetIndex( const Handle(SALOME_InteractiveObject)& theIO, TColStd_IndexedMapOfInteger& theIndex ) = 0; - //! Change indexes of subslection for given #SALOME_InteractiveObject + //! Change indices of subselection for given #SALOME_InteractiveObject virtual bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -154,7 +154,7 @@ public: RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, int theIndex) = 0; - //! Check, if the given index is present in subslection + //! Check, if the given index is present in subselection virtual bool IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, diff --git a/src/SVTK/SVTK_SpaceMouse.cxx b/src/SVTK/SVTK_SpaceMouse.cxx index 620e97ec0..bc73352fa 100644 --- a/src/SVTK/SVTK_SpaceMouse.cxx +++ b/src/SVTK/SVTK_SpaceMouse.cxx @@ -38,10 +38,11 @@ #include "SVTK_SpaceMouse.h" -//--------------------------------------------- SVTK_SpaceMouse* SVTK_SpaceMouse::myInstance = 0; -//--------------------------------------------- +/*! + \return shared instance of object (creates if there is no one) +*/ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance() { if ( !myInstance ) @@ -49,14 +50,18 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance() return myInstance; } -//--------------------------------------------- +/*! + Constructor +*/ SVTK_SpaceMouse::SVTK_SpaceMouse() { win = InputFocus; spaceMouseOn = 0; } -//--------------------------------------------- +/*! + Initialization +*/ int SVTK_SpaceMouse::initialize( Display *display, Window window ) { XMotionEvent = XInternAtom( display, "MotionEvent", 1 ); @@ -78,7 +83,6 @@ int SVTK_SpaceMouse::initialize( Display *display, Window window ) return spaceMouseOn; } -//--------------------------------------------- static int errorCallback( Display *display, XErrorEvent *Error ) { char msg[ 128 ]; @@ -89,7 +93,9 @@ static int errorCallback( Display *display, XErrorEvent *Error ) return 0; } -//--------------------------------------------- +/*! + Initialize by window +*/ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) { XTextProperty winName; @@ -146,7 +152,9 @@ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) return result; } -//--------------------------------------------- +/*! + Close +*/ int SVTK_SpaceMouse::close(Display *display) { initialize( display, (Window)InputFocus ); @@ -155,7 +163,9 @@ int SVTK_SpaceMouse::close(Display *display) return 1; } -//--------------------------------------------- +/*! + Custom event handler +*/ int SVTK_SpaceMouse::translateEvent( Display* display, XEvent* xEvent, MoveEvent* spaceMouseEvent, double scale, double rScale ) { diff --git a/src/SVTK/SVTK_Trihedron.cxx b/src/SVTK/SVTK_Trihedron.cxx index ea8783a07..4e6d78c99 100644 --- a/src/SVTK/SVTK_Trihedron.cxx +++ b/src/SVTK/SVTK_Trihedron.cxx @@ -23,16 +23,20 @@ #include #include -//**************************************************************** vtkStandardNewMacro(SVTK_Trihedron); -//**************************************************************** +/*! + Constructor +*/ SVTK_Trihedron ::SVTK_Trihedron() { } -//**************************************************************** +/*! + \return count of visible actors + \param theRenderer - renderer to be checked +*/ int SVTK_Trihedron ::GetVisibleActorCount(vtkRenderer* theRenderer) diff --git a/src/SVTK/SVTK_UpdateRateDlg.cxx b/src/SVTK/SVTK_UpdateRateDlg.cxx new file mode 100644 index 000000000..b9f487488 --- /dev/null +++ b/src/SVTK/SVTK_UpdateRateDlg.cxx @@ -0,0 +1,380 @@ +// SALOME VTKViewer : build VTK viewer into Salome desktop +// +// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : +// Author : +// Module : SALOME +// $Header$ + +#include "SVTK_UpdateRateDlg.h" + +#include "SVTK_MainWindow.h" +#include "SVTK_RenderWindowInteractor.h" +#include "VTKViewer_Algorithm.h" +#include "SALOME_Actor.h" + +#include "QtxDblSpinBox.h" +#include "QtxAction.h" + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +static vtkFloatingPointType OFF_UPDATE_RATE = 0.00001; +static vtkFloatingPointType FLOAT_TOLERANCE = 1.0 / VTK_LARGE_FLOAT; + +using namespace std; + +namespace +{ + //---------------------------------------------------------------------------- + inline + QString + GetUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor) + { + if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ + vtkFloatingPointType aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds(); + if(aLastRenderTimeInSeconds > FLOAT_TOLERANCE){ + std::ostringstream aStr; + vtkFloatingPointType aFPS = 1.0 / aLastRenderTimeInSeconds; + aStr<GetVisibility()){ + myVTKMultiplier += theActor->GetAllocatedRenderTime(); + if(dynamic_cast(theActor)) + mySALOMEMultiplier += theActor->GetAllocatedRenderTime(); + } + } + }; + + + //---------------------------------------------------------------------------- + inline + vtkFloatingPointType + AdjustUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor, + vtkFloatingPointType theUpdateRate) + { + if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ + if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){ + TRenderTimeMultiplier aMultiplier; + using namespace VTK; + aMultiplier = ForEach(anActorCollection, + aMultiplier); + if(aMultiplier.mySALOMEMultiplier > FLOAT_TOLERANCE) + theUpdateRate *= aMultiplier.mySALOMEMultiplier / aMultiplier.myVTKMultiplier; + } + } + return theUpdateRate; + } + + + //---------------------------------------------------------------------------- + struct TCellsCounter + { + vtkIdType myCounter; + TCellsCounter(): + myCounter(0) + {} + + void + operator()(SALOME_Actor* theActor) + { + if(theActor->GetVisibility()){ + if(vtkMapper *aMapper = theActor->GetMapper()){ + if(vtkDataSet *aDataSet = aMapper->GetInput()){ + myCounter += aDataSet->GetNumberOfCells(); + } + } + } + } + }; + + + //---------------------------------------------------------------------------- + inline + QString + GetNumberOfCells(SVTK_RenderWindowInteractor* theRWInteractor) + { + if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ + if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){ + TCellsCounter aCounter; + using namespace VTK; + aCounter = ForEach(anActorCollection, + aCounter); + return QString::number(aCounter.myCounter); + } + } + + return QString::number(0); + } +} + +/*! + Constructor +*/ +SVTK_UpdateRateDlg +::SVTK_UpdateRateDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName): + SVTK_DialogBase(theAction, + theParent, + theName), + myPriority(0.0), + myEventCallbackCommand(vtkCallbackCommand::New()), + myRWInteractor(theParent->GetInteractor()), + myAction(theAction) +{ + vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice(); + bool anIsEnabledUpdateRate = false; + + setCaption(tr("DLG_TITLE")); + QVBoxLayout* aVBoxLayout = new QVBoxLayout(this, 5, 5); + { + QGroupBox* aGroupBox = new QGroupBox(tr("INPUT_FRAME_TITLE"), this); + aGroupBox->setColumnLayout(0, Qt::Vertical ); + aGroupBox->layout()->setSpacing( 6 ); + aGroupBox->layout()->setMargin( 11 ); + + aGroupBox->setCheckable(true); + aGroupBox->setChecked(anIsEnabledUpdateRate); + myIsEnableUpdateRateGroupBox = aGroupBox; + + QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout()); + { + QLabel* aLabel = new QLabel(tr("DESIRED"), aGroupBox); + aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + aGridLayout->addWidget(aLabel, 0, 0); + + QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); + aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + aGridLayout->addWidget(aDblSpinBox, 0, 1); + + aDblSpinBox->setValue(aRWI->GetDesiredUpdateRate()); + aDblSpinBox->setEnabled(anIsEnabledUpdateRate); + connect(aGroupBox, SIGNAL(toggled(bool)), aDblSpinBox, SLOT(setEnabled(bool))); + myDesiredUpdateRateSblSpinBox = aDblSpinBox; + } + { + QLabel* aLabel = new QLabel(tr("STILL"), aGroupBox); + aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + aGridLayout->addWidget(aLabel, 1, 0); + + QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); + aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + aGridLayout->addWidget(aDblSpinBox, 1, 1); + + aDblSpinBox->setValue(aRWI->GetStillUpdateRate()); + aDblSpinBox->setEnabled(anIsEnabledUpdateRate); + connect(aGroupBox, SIGNAL(toggled(bool)), aDblSpinBox, SLOT(setEnabled(bool))); + myStillUpdateRateSblSpinBox = aDblSpinBox; + } + aVBoxLayout->addWidget(aGroupBox); + } + { + QGroupBox* aGroupBox = new QGroupBox(tr("INFORMATION_FRAME_TITLE"), this); + aGroupBox->setColumnLayout(0, Qt::Vertical ); + aGroupBox->layout()->setSpacing( 6 ); + aGroupBox->layout()->setMargin( 11 ); + + QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout()); + { + QLabel* aLabel = new QLabel(tr("CURRENT_FPS"), aGroupBox); + aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + aGridLayout->addWidget(aLabel, 0, 0); + + QLineEdit* aLineEdit = new QLineEdit( aGroupBox ); + aLineEdit->setReadOnly( TRUE ); + aGridLayout->addWidget(aLineEdit, 0, 1); + + myCurrentUpdateRateLineEdit = aLineEdit; + myCurrentUpdateRateLineEdit->setText( GetUpdateRate(myRWInteractor) ); + } + { + QLabel* aLabel = new QLabel(tr("NUMBER_CELLS"), aGroupBox); + aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + aGridLayout->addWidget(aLabel, 1, 0); + + QLineEdit* aLineEdit = new QLineEdit( aGroupBox ); + aLineEdit->setReadOnly( TRUE ); + aGridLayout->addWidget(aLineEdit, 1, 1); + + myNumberOfCellsLineEdit = aLineEdit; + myNumberOfCellsLineEdit->setText( GetNumberOfCells(myRWInteractor) ); + } + aVBoxLayout->addWidget(aGroupBox); + } + { + QGroupBox* aGroupBox = new QGroupBox(this); + QHBoxLayout* aHBoxLayout = new QHBoxLayout(aGroupBox); + aHBoxLayout->setMargin(11); + aHBoxLayout->setSpacing(6); + { + QPushButton* aPushButton = new QPushButton(tr("OK"), aGroupBox); + aPushButton->setDefault(TRUE); + aPushButton->setAutoDefault(TRUE); + aHBoxLayout->addWidget(aPushButton); + connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickOk())); + } + { + QPushButton* aPushButton = new QPushButton(tr("Apply"), aGroupBox); + aPushButton->setDefault(TRUE); + aPushButton->setAutoDefault(TRUE); + aHBoxLayout->addWidget(aPushButton); + connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickApply())); + } + aHBoxLayout->addStretch(); + { + QPushButton* aPushButton = new QPushButton(tr("Close"), aGroupBox); + aPushButton->setDefault(TRUE); + aPushButton->setAutoDefault(TRUE); + aHBoxLayout->addWidget(aPushButton); + connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickClose())); + } + aVBoxLayout->addWidget(aGroupBox); + } + + if(!anIsEnabledUpdateRate){ + aRWI->SetDesiredUpdateRate(OFF_UPDATE_RATE); + aRWI->SetStillUpdateRate(OFF_UPDATE_RATE); + } + + myEventCallbackCommand->Delete(); + myEventCallbackCommand->SetClientData(this); + myEventCallbackCommand->SetCallback(SVTK_UpdateRateDlg::ProcessEvents); + vtkRenderer *aRenderer = myRWInteractor->getRenderer(); + aRenderer->AddObserver(vtkCommand::EndEvent, + myEventCallbackCommand.GetPointer(), + myPriority); +} + +/*! + Destroys the object and frees any allocated resources + */ +SVTK_UpdateRateDlg +::~SVTK_UpdateRateDlg() +{ + // no need to delete child widgets, Qt does it all for us +} + +/*! + Processes events +*/ +void +SVTK_UpdateRateDlg +::ProcessEvents(vtkObject* vtkNotUsed(theObject), + unsigned long theEvent, + void* theClientData, + void* vtkNotUsed(theCallData)) +{ + SVTK_UpdateRateDlg* self = reinterpret_cast(theClientData); + + if(theEvent == vtkCommand::EndEvent){ + self->myCurrentUpdateRateLineEdit->setText( GetUpdateRate(self->myRWInteractor) ); + self->myNumberOfCellsLineEdit->setText( GetNumberOfCells(self->myRWInteractor) ); + } +} + +/*! + Update +*/ +void +SVTK_UpdateRateDlg +::Update() +{ + vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice(); + + vtkFloatingPointType anUpdateRate; + if(myIsEnableUpdateRateGroupBox->isChecked()){ + anUpdateRate = AdjustUpdateRate(myRWInteractor,myDesiredUpdateRateSblSpinBox->value()); + aRWI->SetDesiredUpdateRate(anUpdateRate); + anUpdateRate = AdjustUpdateRate(myRWInteractor,myStillUpdateRateSblSpinBox->value()); + aRWI->SetStillUpdateRate(anUpdateRate); + }else{ + aRWI->SetDesiredUpdateRate(OFF_UPDATE_RATE); + aRWI->SetStillUpdateRate(OFF_UPDATE_RATE); + } + + myRWInteractor->getRenderWindow()->Render(); +} + +/*! + SLOT on OK clicked +*/ +void +SVTK_UpdateRateDlg +::onClickOk() +{ + Update(); + onClickClose(); +} + +/*! + SLOT on Apply clicked +*/ +void +SVTK_UpdateRateDlg +::onClickApply() +{ + Update(); +} + +/*! + SLOT on Close clicked +*/ +void +SVTK_UpdateRateDlg +::onClickClose() +{ + reject(); +} diff --git a/src/SVTK/SVTK_UpdateRateDlg.h b/src/SVTK/SVTK_UpdateRateDlg.h new file mode 100644 index 000000000..7b32674cc --- /dev/null +++ b/src/SVTK/SVTK_UpdateRateDlg.h @@ -0,0 +1,93 @@ +// SALOME VTKViewer : build VTK viewer into Salome desktop +// +// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : +// Author : +// Module : SALOME +// $Header$ + +#ifndef SVTK_UPDATERATEDLG_H +#define SVTK_UPDATERATEDLG_H + +#include "SVTK_DialogBase.h" + +#include + +class SVTK_MainWindow; +class SVTK_RenderWindowInteractor; + +class QtxDblSpinBox; +class QtxAction; + +class QGroupBox; +class QLineEdit; + +class vtkCallbackCommand; +class vtkObject; + + +class SVTK_UpdateRateDlg : public SVTK_DialogBase +{ + Q_OBJECT; + +public: + SVTK_UpdateRateDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName); + + ~SVTK_UpdateRateDlg(); + + void Update(); + +protected: + SVTK_RenderWindowInteractor* myRWInteractor; + QtxDblSpinBox* myDesiredUpdateRateSblSpinBox; + QtxDblSpinBox* myStillUpdateRateSblSpinBox; + QGroupBox* myIsEnableUpdateRateGroupBox; + + QLineEdit* myCurrentUpdateRateLineEdit; + QLineEdit* myNumberOfCellsLineEdit; + + QtxAction* myAction; + + //---------------------------------------------------------------------------- + // Priority at which events are processed + vtkFloatingPointType myPriority; + + // Used to process events + vtkSmartPointer myEventCallbackCommand; + + // Description: + // Main process event method + static void ProcessEvents(vtkObject* object, + unsigned long event, + void* clientdata, + void* calldata); + +protected slots: + void onClickOk(); + void onClickApply(); + void onClickClose(); +}; + +#endif // SVTK_UPDATERATEDLG_H diff --git a/src/SVTK/SVTK_View.cxx b/src/SVTK/SVTK_View.cxx index 966ff2340..34e8b82b8 100644 --- a/src/SVTK/SVTK_View.cxx +++ b/src/SVTK/SVTK_View.cxx @@ -40,8 +40,9 @@ #include #include - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_SignalHandler ::SVTK_SignalHandler(SVTK_MainWindow* theMainWindow): QObject(theMainWindow), @@ -67,11 +68,17 @@ SVTK_SignalHandler this,SIGNAL(selectionChanged())); } +/*! + Destructor +*/ SVTK_SignalHandler ::~SVTK_SignalHandler() { } +/*! + \return corresponding svtk main window +*/ SVTK_MainWindow* SVTK_SignalHandler ::GetMainWindow() @@ -80,7 +87,9 @@ SVTK_SignalHandler } -//---------------------------------------------------------------- +/*! + Redirect the request to #SVTK_MainWindow::Repaint (just for flexibility) +*/ void SVTK_SignalHandler ::Repaint(bool theUpdateTrihedron) @@ -88,7 +97,9 @@ SVTK_SignalHandler myMainWindow->Repaint(theUpdateTrihedron); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_MainWindow::GetRenderer (just for flexibility) +*/ SVTK_Renderer* SVTK_SignalHandler ::GetRenderer() @@ -96,6 +107,9 @@ SVTK_SignalHandler return myMainWindow->GetRenderer(); } +/*! + Redirect the request to #SVTK_MainWindow::getRenderer (just for flexibility) +*/ vtkRenderer* SVTK_SignalHandler ::getRenderer() @@ -103,7 +117,6 @@ SVTK_SignalHandler return myMainWindow->getRenderer(); } -//---------------------------------------------------------------- namespace SVTK { struct THighlightAction @@ -123,6 +136,9 @@ namespace SVTK }; } +/*! + SLOT: called on selection change +*/ void SVTK_SignalHandler ::onSelectionChanged() @@ -144,21 +160,26 @@ SVTK_SignalHandler myMainWindow->Repaint(false); } - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_View ::SVTK_View(SVTK_MainWindow* theMainWindow) : SVTK_SignalHandler(theMainWindow) { } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_View ::~SVTK_View() { } -//---------------------------------------------------------------- +/*! + Unhilights all objects in viewer +*/ void SVTK_View ::unHighlightAll() @@ -169,7 +190,12 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------- +/*! + Hilights/unhilights object in viewer + \param theIO - object to be updated + \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param theIsUpdate - update current viewer +*/ void SVTK_View ::highlight( const Handle(SALOME_InteractiveObject)& theIO, @@ -183,7 +209,27 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- +/*! + Display object + \param theEntry - entry that corresponds to intractive objects +*/ +Handle(SALOME_InteractiveObject) +SVTK_View +::FindIObject(const char* theEntry) +{ + using namespace SVTK; + SALOME_Actor* anActor = + Find(getRenderer()->GetActors(), + TIsSameEntry(theEntry)); + if(anActor != NULL) + return anActor->getIO(); + + return NULL; +} + +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetSelectionProp(const double& theRed, @@ -194,7 +240,9 @@ SVTK_View GetRenderer()->SetSelectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetPreselectionProp(const double& theRed, @@ -205,7 +253,9 @@ SVTK_View GetRenderer()->SetPreselectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetSelectionTolerance(const double& theTolNodes, @@ -214,7 +264,10 @@ SVTK_View GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell); } -//---------------------------------------------------------------------------- +/*! + \return true if object is in viewer or in collector + \param theIO - object to be checked +*/ bool SVTK_View ::isInViewer(const Handle(SALOME_InteractiveObject)& theIObject) @@ -226,7 +279,10 @@ SVTK_View return anActor != NULL; } -//---------------------------------------------------------------------------- +/*! + \return true if object is displayed in viewer + \param theIO - object to be checked +*/ bool SVTK_View ::isVisible(const Handle(SALOME_InteractiveObject)& theIObject) @@ -238,7 +294,11 @@ SVTK_View return anActor != NULL && anActor->GetVisibility(); } -//---------------------------------------------------------------------------- +/*! + Changes name of object + \param theIObject - object to be renamed + \param theName - new name +*/ void SVTK_View ::rename(const Handle(SALOME_InteractiveObject)& theIObject, @@ -251,7 +311,9 @@ SVTK_View (&SALOME_Actor::setName,theName.latin1())); } -//---------------------------------------------------------------------------- +/*! + \return current display mode (obsolete) +*/ int SVTK_View ::GetDisplayMode() @@ -259,6 +321,10 @@ SVTK_View return myDisplayMode; } +/*! + Set current display mode + \param theMode - new display mode +*/ void SVTK_View ::SetDisplayMode(int theMode) @@ -270,6 +336,11 @@ SVTK_View myDisplayMode = theMode; } +/*! + Set current display mode + \param theIObject - object + \param theMode - new display mode +*/ void SVTK_View ::SetDisplayMode(const Handle(SALOME_InteractiveObject)& theIObject, @@ -282,7 +353,9 @@ SVTK_View (&SALOME_Actor::setDisplayMode,theMode)); } -//---------------------------------------------------------------------------- +/*! + Change all actors to wireframe +*/ void SVTK_View ::ChangeRepresentationToWireframe() @@ -290,6 +363,9 @@ SVTK_View ChangeRepresentationToWireframe(getRenderer()->GetActors()); } +/*! + Change all actors to shading +*/ void SVTK_View ::ChangeRepresentationToSurface() @@ -297,7 +373,10 @@ SVTK_View ChangeRepresentationToSurface(getRenderer()->GetActors()); } - +/*! + Change to wireframe a list of vtkactor + theCollection - list of vtkactor +*/ void SVTK_View ::ChangeRepresentationToWireframe(vtkActorCollection* theCollection) @@ -309,6 +388,10 @@ SVTK_View Repaint(); } +/*! + Change to shading a list of vtkactor + theCollection - list of vtkactor +*/ void SVTK_View ::ChangeRepresentationToSurface(vtkActorCollection* theCollection) @@ -320,7 +403,6 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- namespace SVTK { struct TErase @@ -342,6 +424,9 @@ namespace SVTK }; } +/*! + To erase all existing VTK presentations +*/ void SVTK_View ::EraseAll() @@ -352,6 +437,9 @@ SVTK_View Repaint(); } +/*! + To display all existing VTK presentations +*/ void SVTK_View ::DisplayAll() @@ -362,7 +450,11 @@ SVTK_View Repaint(); } - +/*! + To erase VTK presentation + \param theActor - actor + \param theIsUpdate - updates current viewer +*/ void SVTK_View ::Erase(SALOME_Actor* theActor, @@ -375,6 +467,11 @@ SVTK_View } +/*! + To erase VTK presentation + \param theIObject - object + \param theIsUpdate - updates current viewer +*/ void SVTK_View ::Erase(const Handle(SALOME_InteractiveObject)& theIObject, @@ -388,7 +485,9 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- +/*! + To display the VTK presentation +*/ void SVTK_View ::Display(SALOME_Actor* theActor, @@ -401,6 +500,9 @@ SVTK_View Repaint(); } +/*! + To display the VTK presentation +*/ void SVTK_View ::Display(const Handle(SALOME_InteractiveObject)& theIObject, @@ -415,6 +517,9 @@ SVTK_View Repaint(); } +/*! + To display VTK presentation with defined #SALOME_InteractiveObject and erase all others +*/ void SVTK_View ::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIObject) @@ -424,7 +529,6 @@ SVTK_View } -//---------------------------------------------------------------------------- namespace SVTK { struct TRemoveAction @@ -441,6 +545,9 @@ namespace SVTK }; } +/*! + To remove the VTK presentation +*/ void SVTK_View ::Remove(const Handle(SALOME_InteractiveObject)& theIObject, @@ -454,6 +561,9 @@ SVTK_View Repaint(); } +/*! + To remove the VTK presentation +*/ void SVTK_View ::Remove(SALOME_Actor* theActor, @@ -464,6 +574,9 @@ SVTK_View Repaint(); } +/*! + To remove all VTK presentations +*/ void SVTK_View ::RemoveAll(bool theIsUpdate) @@ -483,7 +596,10 @@ SVTK_View } } -//---------------------------------------------------------------------------- +/*! + \return current transparency + \param theIObject - object +*/ float SVTK_View ::GetTransparency(const Handle(SALOME_InteractiveObject)& theIObject) @@ -498,35 +614,48 @@ SVTK_View } +/*! + Sets current transparency + \param theIObject - object + \param theTrans - new transparency +*/ void SVTK_View ::SetTransparency(const Handle(SALOME_InteractiveObject)& theIObject, float theTrans) { - float anOpacity = 1.0 - theTrans; + vtkFloatingPointType anOpacity = 1.0 - theTrans; using namespace SVTK; ForEachIf(getRenderer()->GetActors(), TIsSameIObject(theIObject), - TSetFunction + TSetFunction (&SALOME_Actor::SetOpacity,anOpacity)); } -//---------------------------------------------------------------------------- +/*! + Change color + \param theIObject - object + \param theColor - new color +*/ void SVTK_View ::SetColor(const Handle(SALOME_InteractiveObject)& theIObject, const QColor& theColor) { - float aColor[3] = {theColor.red()/255., theColor.green()/255., theColor.blue()/255.}; + vtkFloatingPointType aColor[3] = {theColor.red()/255., theColor.green()/255., theColor.blue()/255.}; using namespace SVTK; ForEachIf(getRenderer()->GetActors(), TIsSameIObject(theIObject), - TSetFunction + TSetFunction (&SALOME_Actor::SetColor,aColor)); } +/*! + \return object color + \param theIObject - object +*/ QColor SVTK_View ::GetColor(const Handle(SALOME_InteractiveObject)& theIObject) @@ -536,7 +665,7 @@ SVTK_View Find(getRenderer()->GetActors(), TIsSameIObject(theIObject)); if(anActor){ - float r,g,b; + vtkFloatingPointType r,g,b; anActor->GetColor(r,g,b); return QColor(int(r*255),int(g*255),int(b*255)); } diff --git a/src/SVTK/SVTK_View.h b/src/SVTK/SVTK_View.h index 2512c3497..2a8fe4c8b 100644 --- a/src/SVTK/SVTK_View.h +++ b/src/SVTK/SVTK_View.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_VIEW_H #define SVTK_VIEW_H @@ -18,7 +36,6 @@ class SVTK_Renderer; class SALOME_Actor; -//---------------------------------------------------------------------------- //! Main purpose of the class is to provide a way to customize #SVTK_MainWindow. /*! This class is initialized by #SVTK_MainWindow and just pass Qt signals from @@ -78,7 +95,6 @@ public: }; -//---------------------------------------------------------------------------- //! This class is introduced just for compatibility with old code. /*! This class contains frequantly used functionality in old code. @@ -106,7 +122,7 @@ public: void unHighlightAll(); - /* Selection Management */ + //! Try to find a SALOME_InteractiveObject in the view that corresponds to the entry Handle(SALOME_InteractiveObject) FindIObject(const char* Entry); diff --git a/src/SVTK/SVTK_ViewManager.cxx b/src/SVTK/SVTK_ViewManager.cxx index 4822bf639..44c4e72be 100644 --- a/src/SVTK/SVTK_ViewManager.cxx +++ b/src/SVTK/SVTK_ViewManager.cxx @@ -21,7 +21,9 @@ int SVTK_ViewManager::_SVTKViewMgr_Id = 0; -//*************************************************************** +/*! + Constructor +*/ SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop ) : SUIT_ViewManager( study, theDesktop ) @@ -30,12 +32,24 @@ SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, setViewModel( new SVTK_Viewer() ); } -//*************************************************************** +/*! + Destructor +*/ SVTK_ViewManager::~SVTK_ViewManager() { } -//*************************************************************** +/*! + \return corresponding main window +*/ +SUIT_Desktop* SVTK_ViewManager::getDesktop() +{ + return myDesktop; +} + +/*! + Sets default name of view +*/ void SVTK_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); diff --git a/src/SVTK/SVTK_ViewManager.h b/src/SVTK/SVTK_ViewManager.h index b200ccc5b..977a286ff 100644 --- a/src/SVTK/SVTK_ViewManager.h +++ b/src/SVTK/SVTK_ViewManager.h @@ -36,6 +36,8 @@ public: //! Destroy the view manager virtual ~SVTK_ViewManager(); + SUIT_Desktop* getDesktop(); + protected: void setViewName( SUIT_ViewWindow* theView ); diff --git a/src/SVTK/SVTK_ViewModel.cxx b/src/SVTK/SVTK_ViewModel.cxx index 03b8ca4a1..c1354eeab 100644 --- a/src/SVTK/SVTK_ViewModel.cxx +++ b/src/SVTK/SVTK_ViewModel.cxx @@ -59,18 +59,25 @@ // return aMgr->GetStudyByID( id ); //} -//========================================================== +/*! + Constructor +*/ SVTK_Viewer::SVTK_Viewer() { myTrihedronSize = 105; myTrihedronRelative = true; } -//========================================================== +/*! + Destructor +*/ SVTK_Viewer::~SVTK_Viewer() { } +/*! + \return background color +*/ QColor SVTK_Viewer ::backgroundColor() const @@ -78,6 +85,10 @@ SVTK_Viewer return myBgColor; } +/*! + Changes background color + \param theColor - new background color +*/ void SVTK_Viewer ::setBackgroundColor( const QColor& theColor ) @@ -97,7 +108,9 @@ SVTK_Viewer myBgColor = theColor; } -//========================================================== +/*!Create new instance of view window on desktop \a theDesktop. + *\retval SUIT_ViewWindow* - created view window pointer. + */ SUIT_ViewWindow* SVTK_Viewer:: createView( SUIT_Desktop* theDesktop ) @@ -111,16 +124,27 @@ createView( SUIT_Desktop* theDesktop ) return aViewWindow; } +/*! + \return trihedron size +*/ int SVTK_Viewer::trihedronSize() const { return myTrihedronSize; } +/*! + \return true if thihedron changes size in accordance with bounding box +*/ bool SVTK_Viewer::trihedronRelative() const { return myTrihedronRelative; } +/*! + Sets trihedron size and relativeness( whether thihedron changes size in accordance with bounding box) + \param theSize - new size + \param theRelative - new relativeness +*/ void SVTK_Viewer::setTrihedronSize( const int theSize, const bool theRelative ) { myTrihedronSize = theSize; @@ -136,7 +160,10 @@ void SVTK_Viewer::setTrihedronSize( const int theSize, const bool theRelative ) } } -//========================================================== +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -154,7 +181,9 @@ void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager) this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*))); } -//========================================================== +/*! + Builds popup for vtk viewer +*/ void SVTK_Viewer ::contextMenuPopup( QPopupMenu* thePopup ) @@ -171,25 +200,34 @@ SVTK_Viewer } } -//========================================================== +/*! + SLOT: called on mouse button press, empty implementation +*/ void SVTK_Viewer ::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event) {} -//========================================================== +/*! + SLOT: called on mouse move, empty implementation +*/ void SVTK_Viewer ::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event) {} -//========================================================== +/*! + SLOT: called on mouse button release, empty implementation +*/ void SVTK_Viewer ::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event) {} -//========================================================== +/*! + Enables/disables selection + \param isEnabled - new state +*/ void SVTK_Viewer ::enableSelection(bool isEnabled) @@ -198,7 +236,10 @@ SVTK_Viewer //!! To be done for view windows } -//========================================================== +/*! + Enables/disables selection of many object + \param isEnabled - new state +*/ void SVTK_Viewer ::enableMultiselection(bool isEnable) @@ -207,6 +248,9 @@ SVTK_Viewer //!! To be done for view windows } +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void SVTK_Viewer ::onDumpView() @@ -215,7 +259,9 @@ SVTK_Viewer aView->onDumpView(); } -//========================================================== +/*! + SLOT: called if background color is to be changed changed, passes new color to view port +*/ void SVTK_Viewer ::onChangeBgColor() @@ -226,7 +272,9 @@ SVTK_Viewer } } -//========================================================== +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ void SVTK_Viewer ::onShowToolbar() @@ -239,7 +287,10 @@ SVTK_Viewer } } -//========================================================== +/*! + Display presentation + \param prs - presentation +*/ void SVTK_Viewer ::Display( const SALOME_VTKPrs* prs ) @@ -284,7 +335,11 @@ SVTK_Viewer } } -//========================================================== +/*! + Erase presentation + \param prs - presentation + \param forced - removes object from view +*/ void SVTK_Viewer ::Erase( const SALOME_VTKPrs* prs, const bool forced ) @@ -324,8 +379,11 @@ SVTK_Viewer } } } - -//========================================================== + +/*! + Erase all presentations + \param forced - removes all objects from view +*/ void SVTK_Viewer ::EraseAll( const bool forced ) @@ -370,7 +428,10 @@ SVTK_Viewer Repaint(); } -//========================================================== +/*! + Create presentation corresponding to the entry + \param entry - entry +*/ SALOME_Prs* SVTK_Viewer ::CreatePrs( const char* entry ) @@ -394,7 +455,9 @@ SVTK_Viewer return prs; } -//========================================================== +/*! + Auxiliary method called before displaying of objects +*/ void SVTK_Viewer ::BeforeDisplay( SALOME_Displayer* d ) @@ -402,14 +465,19 @@ SVTK_Viewer d->BeforeDisplay( this, SALOME_VTKViewType() ); } -//========================================================== +/*! + Auxiliary method called after displaying of objects +*/ void SVTK_Viewer::AfterDisplay( SALOME_Displayer* d ) { d->AfterDisplay( this, SALOME_VTKViewType() ); } -//========================================================== +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool SVTK_Viewer ::isVisible( const Handle(SALOME_InteractiveObject)& io ) @@ -425,7 +493,9 @@ SVTK_Viewer return true; } -//========================================================== +/*! + Updates current viewer +*/ void SVTK_Viewer ::Repaint() diff --git a/src/SVTK/SVTK_ViewModelBase.h b/src/SVTK/SVTK_ViewModelBase.h index d58827229..f45ed5e2f 100644 --- a/src/SVTK/SVTK_ViewModelBase.h +++ b/src/SVTK/SVTK_ViewModelBase.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_SELECTIONCHANGED_H #define SVTK_SELECTIONCHANGED_H diff --git a/src/SVTK/SVTK_ViewWindow.cxx b/src/SVTK/SVTK_ViewWindow.cxx index 69e5eae4a..af284a64b 100755 --- a/src/SVTK/SVTK_ViewWindow.cxx +++ b/src/SVTK/SVTK_ViewWindow.cxx @@ -28,6 +28,7 @@ #include #include #include +#include #include "QtxAction.h" @@ -53,13 +54,16 @@ #include "SVTK_InteractorStyle.h" #include "SVTK_RenderWindowInteractor.h" #include "SVTK_GenericRenderWindowInteractor.h" +#include "SVTK_CubeAxesActor2D.h" #include "SALOME_ListIteratorOfListIO.hxx" #include "VTKViewer_Algorithm.h" #include "SVTK_Functor.h" -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_ViewWindow ::SVTK_ViewWindow(SUIT_Desktop* theDesktop): SUIT_ViewWindow(theDesktop), @@ -67,6 +71,9 @@ SVTK_ViewWindow myView(NULL) {} +/*! + To initialize #SVTK_ViewWindow instance +*/ void SVTK_ViewWindow ::Initialize(SVTK_ViewModelBase* theModel) @@ -106,6 +113,9 @@ SVTK_ViewWindow } } +/*! + To initialize #SVTK_ViewWindow instance +*/ void SVTK_ViewWindow ::Initialize(SVTK_View* theView, @@ -129,12 +139,17 @@ SVTK_ViewWindow theModel,SLOT(onSelectionChanged())); } +/*! + Destructor +*/ SVTK_ViewWindow ::~SVTK_ViewWindow() {} -//---------------------------------------------------------------------------- +/*! + \return corresponding view +*/ SVTK_View* SVTK_ViewWindow ::getView() @@ -142,6 +157,9 @@ SVTK_ViewWindow return myView; } +/*! + \return corresponding vtk main window +*/ SVTK_MainWindow* SVTK_ViewWindow ::getMainWindow() @@ -149,6 +167,9 @@ SVTK_ViewWindow return myMainWindow; } +/*! + \return corresponding vtk render window +*/ vtkRenderWindow* SVTK_ViewWindow ::getRenderWindow() @@ -156,6 +177,9 @@ SVTK_ViewWindow return getMainWindow()->getRenderWindow(); } +/*! + \return corresponding vtk render window interactor +*/ vtkRenderWindowInteractor* SVTK_ViewWindow ::getInteractor() @@ -163,6 +187,9 @@ SVTK_ViewWindow return getMainWindow()->getInteractor(); } +/*! + \return corresponding vtk renderer +*/ vtkRenderer* SVTK_ViewWindow ::getRenderer() @@ -170,6 +197,9 @@ SVTK_ViewWindow return myMainWindow->getRenderer(); } +/*! + \return corresponding vtk selector +*/ SVTK_Selector* SVTK_ViewWindow ::GetSelector() @@ -177,8 +207,9 @@ SVTK_ViewWindow return myMainWindow->GetSelector(); } - -//---------------------------------------------------------------------------- +/*! + Processes transformation "front view" +*/ void SVTK_ViewWindow ::onFrontView() @@ -186,7 +217,9 @@ SVTK_ViewWindow myMainWindow->onFrontView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "back view" +*/ void SVTK_ViewWindow ::onBackView() @@ -194,7 +227,9 @@ SVTK_ViewWindow myMainWindow->onBackView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "top view" +*/ void SVTK_ViewWindow ::onTopView() @@ -202,7 +237,9 @@ SVTK_ViewWindow myMainWindow->onTopView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "bottom view" +*/ void SVTK_ViewWindow ::onBottomView() @@ -210,7 +247,9 @@ SVTK_ViewWindow myMainWindow->onBottomView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "left view" +*/ void SVTK_ViewWindow ::onLeftView() @@ -218,7 +257,9 @@ SVTK_ViewWindow myMainWindow->onLeftView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "right view" +*/ void SVTK_ViewWindow ::onRightView() @@ -226,7 +267,9 @@ SVTK_ViewWindow myMainWindow->onRightView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void SVTK_ViewWindow ::onResetView() @@ -234,7 +277,9 @@ SVTK_ViewWindow myMainWindow->onResetView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "fit all" +*/ void SVTK_ViewWindow ::onFitAll() @@ -242,7 +287,9 @@ SVTK_ViewWindow myMainWindow->onFitAll(); } -//---------------------------------------------------------------- +/*! + SLOT: called if selection is changed +*/ void SVTK_ViewWindow ::onSelectionChanged() @@ -250,7 +297,10 @@ SVTK_ViewWindow myView->onSelectionChanged(); } -//---------------------------------------------------------------- +/*! + Change selection mode + \param theMode - new selection mode +*/ void SVTK_ViewWindow ::SetSelectionMode(Selection_Mode theMode) @@ -258,7 +308,9 @@ SVTK_ViewWindow myMainWindow->SetSelectionMode( theMode ); } -//---------------------------------------------------------------- +/*! + \return selection mode +*/ Selection_Mode SVTK_ViewWindow ::SelectionMode() const @@ -266,7 +318,9 @@ SVTK_ViewWindow return myMainWindow->SelectionMode(); } -//---------------------------------------------------------------- +/*! + Unhilights all objects in viewer +*/ void SVTK_ViewWindow ::unHighlightAll() @@ -274,7 +328,12 @@ SVTK_ViewWindow myView->unHighlightAll(); } -//---------------------------------------------------------------- +/*! + Hilights/unhilights object in viewer + \param theIO - object to be updated + \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param theIsUpdate - update current viewer +*/ void SVTK_ViewWindow ::highlight(const Handle(SALOME_InteractiveObject)& theIO, @@ -284,7 +343,10 @@ SVTK_ViewWindow myView->highlight( theIO, theIsHighlight, theIsUpdate ); } -//---------------------------------------------------------------- +/*! + \return true if object is in viewer or in collector + \param theIO - object to be checked +*/ bool SVTK_ViewWindow ::isInViewer( const Handle(SALOME_InteractiveObject)& theIO ) @@ -292,7 +354,10 @@ SVTK_ViewWindow return myView->isInViewer( theIO ); } -//---------------------------------------------------------------- +/*! + \return true if object is displayed in viewer + \param theIO - object to be checked +*/ bool SVTK_ViewWindow ::isVisible( const Handle(SALOME_InteractiveObject)& theIO ) @@ -300,7 +365,22 @@ SVTK_ViewWindow return myView->isVisible( theIO ); } -//---------------------------------------------------------------- +/*! + Display object + \param theEntry - entry that corresponds to intractive objects +*/ +Handle(SALOME_InteractiveObject) +SVTK_ViewWindow +::FindIObject(const char* theEntry) +{ + return myView->FindIObject(theEntry); +} + +/*! + Display object + \param theIO - object + \param theImmediatly - update viewer +*/ void SVTK_ViewWindow ::Display(const Handle(SALOME_InteractiveObject)& theIO, @@ -309,6 +389,11 @@ SVTK_ViewWindow myView->Display(theIO,theImmediatly); } +/*! + Erase object + \param theIO - object + \param theImmediatly - update viewer +*/ void SVTK_ViewWindow ::Erase(const Handle(SALOME_InteractiveObject)& theIO, @@ -317,6 +402,10 @@ SVTK_ViewWindow myView->Erase(theIO,theImmediatly); } +/*! + Display only passed object + \param theIO - object +*/ void SVTK_ViewWindow ::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIO) @@ -324,6 +413,9 @@ SVTK_ViewWindow myView->DisplayOnly(theIO); } +/*! + Display all objects in view +*/ void SVTK_ViewWindow ::DisplayAll() @@ -331,6 +423,9 @@ SVTK_ViewWindow myView->DisplayAll(); } +/*! + Erase all objects in view +*/ void SVTK_ViewWindow ::EraseAll() @@ -338,7 +433,10 @@ SVTK_ViewWindow myView->EraseAll(); } -//---------------------------------------------------------------------------- +/*! + Sets background color + \param color - new background color +*/ void SVTK_ViewWindow ::setBackgroundColor( const QColor& color ) @@ -346,7 +444,9 @@ SVTK_ViewWindow myMainWindow->SetBackgroundColor( color ); } -//---------------------------------------------------------------------------- +/*! + \return background color of viewer +*/ QColor SVTK_ViewWindow ::backgroundColor() const @@ -354,7 +454,9 @@ SVTK_ViewWindow return myMainWindow->BackgroundColor(); } -//---------------------------------------------------------------------------- +/*! + Updates current viewer +*/ void SVTK_ViewWindow ::Repaint(bool theUpdateTrihedron) @@ -362,7 +464,9 @@ SVTK_ViewWindow myMainWindow->Repaint( theUpdateTrihedron ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::GetScale +*/ void SVTK_ViewWindow ::GetScale( double theScale[3] ) @@ -370,7 +474,9 @@ SVTK_ViewWindow myMainWindow->GetScale( theScale ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetScale +*/ void SVTK_ViewWindow ::SetScale( double theScale[3] ) @@ -378,7 +484,9 @@ SVTK_ViewWindow myMainWindow->SetScale( theScale ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::IsTrihedronDisplayed +*/ bool SVTK_ViewWindow ::isTrihedronDisplayed() @@ -386,6 +494,9 @@ SVTK_ViewWindow return myMainWindow->IsTrihedronDisplayed(); } +/*! + Redirect the request to #SVTK_Renderer::IsCubeAxesDisplayed +*/ bool SVTK_ViewWindow ::isCubeAxesDisplayed() @@ -393,7 +504,9 @@ SVTK_ViewWindow return myMainWindow->IsCubeAxesDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::OnViewTrihedron +*/ void SVTK_ViewWindow ::onViewTrihedron() @@ -401,6 +514,9 @@ SVTK_ViewWindow myMainWindow->onViewTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::OnViewCubeAxes +*/ void SVTK_ViewWindow ::onViewCubeAxes() @@ -408,7 +524,9 @@ SVTK_ViewWindow myMainWindow->onViewCubeAxes(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::GetTrihedron +*/ VTKViewer_Trihedron* SVTK_ViewWindow:: GetTrihedron() @@ -416,6 +534,9 @@ GetTrihedron() return myMainWindow->GetTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::GetCubeAxes +*/ SVTK_CubeAxesActor2D* SVTK_ViewWindow ::GetCubeAxes() @@ -423,6 +544,9 @@ SVTK_ViewWindow return myMainWindow->GetCubeAxes(); } +/*! + \return trihedron size +*/ int SVTK_ViewWindow ::GetTrihedronSize() const @@ -430,6 +554,11 @@ SVTK_ViewWindow return myMainWindow->GetTrihedronSize(); } +/*! + Sets trihedron size + \param theSize - new trihedron size + \param theRelative - trihedron relativeness +*/ void SVTK_ViewWindow ::SetTrihedronSize(const int theSize, const bool theRelative) @@ -447,7 +576,9 @@ SVTK_ViewWindow myMainWindow->AdjustActors(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::OnAdjustTrihedron +*/ void SVTK_ViewWindow ::onAdjustTrihedron() @@ -455,6 +586,9 @@ SVTK_ViewWindow myMainWindow->onAdjustTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::OnAdjustCubeAxes +*/ void SVTK_ViewWindow ::onAdjustCubeAxes() @@ -462,7 +596,9 @@ SVTK_ViewWindow myMainWindow->onAdjustCubeAxes(); } -//======================================================================= +/*! + Emits key pressed +*/ void SVTK_ViewWindow ::onKeyPressed(QKeyEvent* event) @@ -470,7 +606,9 @@ SVTK_ViewWindow emit keyPressed( this, event ); } -//======================================================================= +/*! + Emits key released +*/ void SVTK_ViewWindow ::onKeyReleased(QKeyEvent* event) @@ -478,7 +616,9 @@ SVTK_ViewWindow emit keyReleased( this, event ); } -//======================================================================= +/*! + Emits mouse pressed +*/ void SVTK_ViewWindow ::onMousePressed(QMouseEvent* event) @@ -486,7 +626,9 @@ SVTK_ViewWindow emit mousePressed(this, event); } -//======================================================================= +/*! + Emits mouse released +*/ void SVTK_ViewWindow ::onMouseReleased(QMouseEvent* event) @@ -494,7 +636,9 @@ SVTK_ViewWindow emit mouseReleased( this, event ); } -//======================================================================= +/*! + Emits mouse moving +*/ void SVTK_ViewWindow ::onMouseMoving(QMouseEvent* event) @@ -502,7 +646,9 @@ SVTK_ViewWindow emit mouseMoving( this, event ); } -//======================================================================= +/*! + Emits mouse double clicked +*/ void SVTK_ViewWindow ::onMouseDoubleClicked( QMouseEvent* event ) @@ -510,7 +656,9 @@ SVTK_ViewWindow emit mouseDoubleClicked( this, event ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::AddActor +*/ void SVTK_ViewWindow ::AddActor( VTKViewer_Actor* theActor, @@ -519,7 +667,9 @@ SVTK_ViewWindow myMainWindow->AddActor( theActor, theUpdate ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::RemoveActor +*/ void SVTK_ViewWindow ::RemoveActor( VTKViewer_Actor* theActor, @@ -528,7 +678,9 @@ SVTK_ViewWindow myMainWindow->RemoveActor( theActor, theUpdate ); } -//---------------------------------------------------------------------------- +/*! + \return QImage, containing all scene rendering in window +*/ QImage SVTK_ViewWindow ::dumpView() @@ -536,7 +688,9 @@ SVTK_ViewWindow return myMainWindow->dumpView(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionProp +*/ void SVTK_ViewWindow ::SetSelectionProp(const double& theRed, @@ -547,7 +701,9 @@ SVTK_ViewWindow myView->SetSelectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionProp +*/ void SVTK_ViewWindow ::SetPreselectionProp(const double& theRed, @@ -558,7 +714,9 @@ SVTK_ViewWindow myView->SetPreselectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionTolerance +*/ void SVTK_ViewWindow ::SetSelectionTolerance(const double& theTolNodes, @@ -567,7 +725,6 @@ SVTK_ViewWindow myView->SetSelectionTolerance(theTolNodes,theTolItems); } -//---------------------------------------------------------------------------- int convertAction( const int accelAction ) { switch ( accelAction ) { @@ -585,17 +742,155 @@ int convertAction( const int accelAction ) return accelAction; } -//---------------------------------------------------------------------------- -void +/*! + Performs action + \param accelAction - action +*/ +bool SVTK_ViewWindow ::action( const int accelAction ) { + if ( !myMainWindow->hasFocus() ) + return false; if ( accelAction == SUIT_Accel::ZoomFit ) onFitAll(); else { int anEvent = convertAction( accelAction ); myMainWindow->InvokeEvent( anEvent, 0 ); } + return true; +} + +// old visual parameters had 13 values. New format added additional +// 76 values for graduated axes, so both numbers are processed. +const int nNormalParams = 13; // number of view windows parameters excluding graduated axes params +const int nGradAxisParams = 25; // number of parameters of ONE graduated axis (X, Y, or Z) +const int nAllParams = nNormalParams + 3*nGradAxisParams + 1; // number of all visual parameters + +/*! The method returns visual parameters of a graduated axis actor (x,y,z axis of graduated axes) + */ +QString getGradAxisVisualParams( vtkAxisActor2D* actor ) +{ + QString params; + if ( !actor ) + return params; + + // Name + bool isVisible = actor->GetTitleVisibility(); + QString title ( actor->GetTitle() ); + vtkFloatingPointType color[ 3 ]; + int font = VTK_ARIAL; + int bold = 0; + int italic = 0; + int shadow = 0; + + vtkTextProperty* txtProp = actor->GetTitleTextProperty(); + if ( txtProp ) + { + txtProp->GetColor( color ); + font = txtProp->GetFontFamily(); + bold = txtProp->GetBold(); + italic = txtProp->GetItalic(); + shadow = txtProp->GetShadow(); + } + params.sprintf( "* Graduated Axis: * Name *%u*%s*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible, + title.latin1(), color[0], color[1], color[2], font, bold, italic, shadow ); + + // Labels + isVisible = actor->GetLabelVisibility(); + int labels = actor->GetNumberOfLabels(); + int offset = actor->GetTickOffset(); + font = VTK_ARIAL; + bold = false; + italic = false; + shadow = false; + + txtProp = actor->GetLabelTextProperty(); + if ( txtProp ) + { + txtProp->GetColor( color ); + font = txtProp->GetFontFamily(); + bold = txtProp->GetBold(); + italic = txtProp->GetItalic(); + shadow = txtProp->GetShadow(); + } + params += QString().sprintf( "* Labels *%u*%u*%u*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible, labels, offset, + color[0], color[1], color[2], font, bold, italic, shadow ); + + // Tick marks + isVisible = actor->GetTickVisibility(); + int length = actor->GetTickLength(); + + params += QString().sprintf( "* Tick marks *%u*%u", isVisible, length ); + + return params; +} + +/*! The method restores visual parameters of a graduated axis actor (x,y,z axis) + */ +void setGradAxisVisualParams( vtkAxisActor2D* actor, const QString& params ) +{ + if ( !actor ) + return; + + QStringList paramsLst = QStringList::split( '*', params, true ); + + if ( paramsLst.size() == nGradAxisParams ) { // altogether name, lable, ticks parameters make up 25 values + + // retrieve and set name parameters + bool isVisible = paramsLst[2].toUShort(); + QString title = paramsLst[3]; + vtkFloatingPointType color[3]; + color[0] = paramsLst[4].toDouble(); + color[1] = paramsLst[5].toDouble(); + color[2] = paramsLst[6].toDouble(); + int font = paramsLst[7].toInt(); + int bold = paramsLst[8].toInt(); + int italic = paramsLst[9].toInt(); + int shadow = paramsLst[10].toInt(); + + actor->SetTitleVisibility( isVisible ); + actor->SetTitle( title.latin1() ); + vtkTextProperty* txtProp = actor->GetTitleTextProperty(); + if ( txtProp ) { + txtProp->SetColor( color ); + txtProp->SetFontFamily( font ); + txtProp->SetBold( bold ); + txtProp->SetItalic( italic ); + txtProp->SetShadow( shadow ); + } + + // retrieve and set lable parameters + isVisible = paramsLst[12].toUShort(); + int labels = paramsLst[13].toInt(); + int offset = paramsLst[14].toInt(); + color[0] = paramsLst[15].toDouble(); + color[1] = paramsLst[16].toDouble(); + color[2] = paramsLst[17].toDouble(); + font = paramsLst[18].toInt(); + bold = paramsLst[19].toInt(); + italic = paramsLst[20].toInt(); + shadow = paramsLst[21].toInt(); + + actor->SetLabelVisibility( isVisible ); + actor->SetNumberOfLabels( labels ); + actor->SetTickOffset( offset ); + txtProp = actor->GetLabelTextProperty(); + if ( txtProp ) { + txtProp->SetColor( color ); + txtProp->SetFontFamily( font ); + txtProp->SetBold( bold ); + txtProp->SetItalic( italic ); + txtProp->SetShadow( shadow ); + } + + // retrieve and set tick marks properties + isVisible = paramsLst[23].toUShort(); + int length = paramsLst[24].toInt(); + + actor->SetTickVisibility( isVisible ); + actor->SetTickLength( length ); + } } /*! The method returns the visual parameters of this view as a formated string @@ -605,7 +900,8 @@ SVTK_ViewWindow ::getVisualParameters() { double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; - + + // save position, focal point, viewUp, scale vtkCamera* camera = getRenderer()->GetActiveCamera(); camera->GetPosition( pos ); camera->GetFocalPoint( focalPnt ); @@ -613,15 +909,28 @@ SVTK_ViewWindow parScale = camera->GetParallelScale(); GetScale( scale ); + // Parameters are given in the following format:view position (3 digits), focal point position (3 digits) + // view up values (3 digits), parallel scale (1 digit), scale (3 digits, + // Graduated axes parameters (X, Y, Z axes parameters) QString retStr; retStr.sprintf( "%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e", - pos[0], pos[1], pos[2], focalPnt[0], focalPnt[1], focalPnt[2], viewUp[0], viewUp[1], - viewUp[2], parScale, scale[0], scale[1], scale[2] ); + pos[0], pos[1], pos[2], focalPnt[0], focalPnt[1], focalPnt[2], + viewUp[0], viewUp[1], viewUp[2], parScale, scale[0], scale[1], scale[2] ); + + // save graduated axes parameters + if ( SVTK_CubeAxesActor2D* gradAxesActor = GetCubeAxes() ) { + retStr += QString( "*%1" ).arg( getMainWindow()->IsCubeAxesDisplayed() ); + retStr += ::getGradAxisVisualParams( gradAxesActor->GetXAxisActor2D() ); + retStr += ::getGradAxisVisualParams( gradAxesActor->GetYAxisActor2D() ); + retStr += ::getGradAxisVisualParams( gradAxesActor->GetZAxisActor2D() ); + } + return retStr; } -/* The method restores visual parameters of this view or postpones it untill the view is shown - */ +/*! + The method restores visual parameters of this view or postpones it untill the view is shown +*/ void SVTK_ViewWindow ::setVisualParameters( const QString& parameters ) @@ -636,14 +945,15 @@ SVTK_ViewWindow } } -/* The method restores visual parameters of this view from a formated string - */ +/*! + The method restores visual parameters of this view from a formated string +*/ void SVTK_ViewWindow ::doSetVisualParameters( const QString& parameters ) { QStringList paramsLst = QStringList::split( '*', parameters, true ); - if ( paramsLst.size() == 13 ) { + if ( paramsLst.size() >= nNormalParams ) { // 'reading' list of parameters double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; pos[0] = paramsLst[0].toDouble(); @@ -668,20 +978,29 @@ SVTK_ViewWindow camera->SetParallelScale( parScale ); SetScale( scale ); - // resize( size() ); - - // getRenderer()->ResetCameraClippingRange(); - // Repaint(); - // getMainWindow()->GetRenderer()->GetTransform()->SetMatrixScale( scale[0], scale[1], scale[2] ); + // apply graduated axes parameters + SVTK_CubeAxesActor2D* gradAxesActor = GetCubeAxes(); + if ( gradAxesActor && paramsLst.size() == nAllParams ) { + + int i = nNormalParams+1, j = i + nGradAxisParams - 1; + ::setGradAxisVisualParams( gradAxesActor->GetXAxisActor2D(), parameters.section( '*', i, j ) ); + i = j + 1; j += nGradAxisParams; + ::setGradAxisVisualParams( gradAxesActor->GetYAxisActor2D(), parameters.section( '*', i, j ) ); + i = j + 1; j += nGradAxisParams; + ::setGradAxisVisualParams( gradAxesActor->GetZAxisActor2D(), parameters.section( '*', i, j ) ); + + if ( paramsLst[13].toUShort() ) + gradAxesActor->VisibilityOn(); + else + gradAxesActor->VisibilityOff(); + } } } -//================================================================ -// Function : eventFilter -/*! Purpose : delayed setVisualParameters +/*! + Delayed setVisualParameters */ -//================================================================ bool SVTK_ViewWindow::eventFilter( QObject* theWatched, QEvent* theEvent ) { if ( theEvent->type() == QEvent::Show && theWatched->inherits( "SVTK_RenderWindowInteractor" ) ) { diff --git a/src/SVTK/SVTK_ViewWindow.h b/src/SVTK/SVTK_ViewWindow.h index 51e50ac45..7e9c83972 100755 --- a/src/SVTK/SVTK_ViewWindow.h +++ b/src/SVTK/SVTK_ViewWindow.h @@ -136,7 +136,7 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow bool isVisible(const Handle(SALOME_InteractiveObject)& theIObject); - /* selection */ + //! Redirect the request to #SVTK_View::FindIObject (to support old code) //---------------------------------------------------------------------------- Handle(SALOME_InteractiveObject) FindIObject(const char* theEntry); @@ -343,7 +343,7 @@ protected: doSetVisualParameters( const QString& ); QImage dumpView(); - virtual void action( const int ); + virtual bool action( const int ); SVTK_View* myView; SVTK_MainWindow* myMainWindow; diff --git a/src/VTKViewer/resources/VTKViewerM_images.po b/src/SVTK/resources/SVTK_images.po similarity index 96% rename from src/VTKViewer/resources/VTKViewerM_images.po rename to src/SVTK/resources/SVTK_images.po index ce2c6c728..4790e54ee 100644 --- a/src/VTKViewer/resources/VTKViewerM_images.po +++ b/src/SVTK/resources/SVTK_images.po @@ -38,3 +38,6 @@ msgstr "view_scaling.png" msgid "ICON_GRADUATED_AXES" msgstr "view_graduated_axes.png" + +msgid "ICON_UPDATE_RATE" +msgstr "view_update_rate.png" diff --git a/src/SVTK/resources/SVTK_msg_en.po b/src/SVTK/resources/SVTK_msg_en.po index eb7db7c20..b7059b2f1 100755 --- a/src/SVTK/resources/SVTK_msg_en.po +++ b/src/SVTK/resources/SVTK_msg_en.po @@ -131,9 +131,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "SVTK_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." @@ -151,3 +148,130 @@ msgstr "Show/Hide trihedron" msgid "DSC_SHOW_TRIHEDRON" msgstr "Show/Hide trihedron in the current view" + +msgid "SVTK_NonIsometricDlg::MEN_SCALING" +msgstr "Scaling" + +msgid "SVTK_NonIsometricDlg::O&K" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Apply" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Cancel" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Reset" +msgstr "" + +msgid "SVTK_NonIsometricDlg::DLG_TITLE" +msgstr "Scaling" + +msgid "SVTK_NonIsometricDlg::LBL_X" +msgstr "X :" + +msgid "SVTK_NonIsometricDlg::LBL_Y" +msgstr "Y :" + +msgid "SVTK_NonIsometricDlg::LBL_Z" +msgstr "Z :" + +msgid "SVTK_MainWindow::MNU_SVTK_SCALING" +msgstr "Scaling" + +msgid "SVTK_MainWindow::DSC_SVTK_SCALING" +msgstr "Scaling" + +msgid "SVTK_FontWidget::ARIAL" +msgstr "Arial" + +msgid "SVTK_FontWidget::COURIER" +msgstr "Courier" + +msgid "SVTK_FontWidget::TIMES" +msgstr "Times" + +msgid "SVTK_FontWidget::BOLD" +msgstr "Bold" + +msgid "SVTK_FontWidget::ITALIC" +msgstr "Italic" + +msgid "SVTK_FontWidget::SHADOW" +msgstr "Shadow" + +msgid "SVTK_CubeAxesDlg::CAPTION" +msgstr "Graduated axes" + +msgid "SVTK_CubeAxesDlg::X_AXIS" +msgstr "X axis" + +msgid "SVTK_CubeAxesDlg::Y_AXIS" +msgstr "Y axis" + +msgid "SVTK_CubeAxesDlg::Z_AXIS" +msgstr "Z axis" + +msgid "SVTK_CubeAxesDlg::IS_VISIBLE" +msgstr "Is visible" + +msgid "SVTK_AxisWidget::AXIS_NAME" +msgstr "Axis name" + +msgid "SVTK_AxisWidget::IS_VISIBLE" +msgstr "Is visible" + +msgid "SVTK_AxisWidget::NAME" +msgstr "Name" + +msgid "SVTK_AxisWidget::FONT" +msgstr "Font" + +msgid "SVTK_AxisWidget::LABELS" +msgstr "Labels" + +msgid "SVTK_AxisWidget::NUMBER" +msgstr "Number" + +msgid "SVTK_AxisWidget::OFFSET" +msgstr "Offset" + +msgid "SVTK_AxisWidget::TICK_MARKS" +msgstr "Tick marks" + +msgid "SVTK_AxisWidget::LENGTH" +msgstr "Length" + +msgid "SVTK_MainWindow::MNU_SVTK_GRADUATED_AXES" +msgstr "Graduated axes" + +msgid "SVTK_MainWindow::DSC_SVTK_GRADUATED_AXES" +msgstr "Graduated axes" + +msgid "SVTK_MainWindow::MNU_SVTK_UPDATE_RATE" +msgstr "Update rate" + +msgid "SVTK_MainWindow::DSC_SVTK_UPDATE_RATE" +msgstr "Update rate" + +msgid "SVTK_UpdateRateDlg::DLG_TITLE" +msgstr "Update Rate" + +msgid "SVTK_UpdateRateDlg::INPUT_FRAME_TITLE" +msgstr "Enable" + +msgid "SVTK_UpdateRateDlg::DESIRED" +msgstr "Desired Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::STILL" +msgstr "Still Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::INFORMATION_FRAME_TITLE" +msgstr "Rendering Metrics" + +msgid "SVTK_UpdateRateDlg::CURRENT_FPS" +msgstr "Current Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::NUMBER_CELLS" +msgstr "Number of Cells, -" + diff --git a/src/SalomeApp/Makefile.in b/src/SalomeApp/Makefile.in index 8913a2b44..dc92a6e5b 100755 --- a/src/SalomeApp/Makefile.in +++ b/src/SalomeApp/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : SalomeApp @@ -67,10 +85,10 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ RESOURCES_FILES = SalomeApp.ini \ SalomeApp.xml -CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS) -LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lSalomePrs -L$(KERNEL_ROOT_DIR)/lib/salome -lOpUtil -lSALOMELocalTrace -lSalomeDSClient $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI +LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lSalomePrs $(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSalomeDSClient $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI @CONCLUDE@ diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index 9d17c32e6..12dfcd782 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -52,9 +52,8 @@ #include #include -#include "SALOMEDS_StudyManager.hxx" -#include "SALOMEDS_SObject.hxx" -#include "SALOMEDS_IParameters.hxx" +#include "SALOMEDSClient_ClientFactory.hxx" +#include "SALOMEDSClient_IParameters.hxx" #include "SALOME_ListIteratorOfListIO.hxx" #include "SALOME_ListIO.hxx" @@ -70,11 +69,6 @@ extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication() return new SalomeApp_Application(); } -/* - Class : SalomeApp_Application - Description : Application containing SalomeApp module or LightApp module -*/ - /*!Constructor.*/ SalomeApp_Application::SalomeApp_Application() : LightApp_Application() @@ -106,10 +100,11 @@ void SalomeApp_Application::createActions() SUIT_Desktop* desk = desktop(); //! Save GUI state - createAction( SaveGUIStateId, tr( "TOT_DESK_FILE_SAVE_GUI_STATE" ), QIconSet(), - tr( "MEN_DESK_FILE_SAVE_GUI_STATE" ), tr( "PRP_DESK_FILE_SAVE_GUI_STATE" ), - 0, desk, false, this, SLOT( onSaveGUIState() ) ); - + // "Save GUI State" command is moved to VISU module + // createAction( SaveGUIStateId, tr( "TOT_DESK_FILE_SAVE_GUI_STATE" ), QIconSet(), + // tr( "MEN_DESK_FILE_SAVE_GUI_STATE" ), tr( "PRP_DESK_FILE_SAVE_GUI_STATE" ), + // 0, desk, false, this, SLOT( onSaveGUIState() ) ); + //! Dump study createAction( DumpStudyId, tr( "TOT_DESK_FILE_DUMP_STUDY" ), QIconSet(), tr( "MEN_DESK_FILE_DUMP_STUDY" ), tr( "PRP_DESK_FILE_DUMP_STUDY" ), @@ -137,7 +132,10 @@ void SalomeApp_Application::createActions() int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 ); - createMenu( SaveGUIStateId, fileMenu, 10, -1 ); + // "Save GUI State" command is renamed to "Save VISU State" and + // creation of menu item is moved to VISU + // createMenu( SaveGUIStateId, fileMenu, 10, -1 ); + createMenu( DumpStudyId, fileMenu, 10, -1 ); createMenu( separator(), fileMenu, -1, 15, -1 ); createMenu( LoadScriptId, fileMenu, 10, -1 ); @@ -339,6 +337,14 @@ void SalomeApp_Application::onPaste() _PTR(Study) stdDS = study->studyDS(); if(!stdDS) return; + if ( stdDS->GetProperties()->IsLocked() ) { + SUIT_MessageBox::warn1 ( desktop(), + QObject::tr("WRN_WARNING"), + QObject::tr("WRN_STUDY_LOCKED"), + QObject::tr("BUT_OK") ); + return; + } + SALOME_ListIteratorOfListIO it( list ); if(it.More()) { @@ -374,12 +380,8 @@ void SalomeApp_Application::onSelectionChanged() _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry()); if ( so ) { - SALOMEDS_SObject* aSO = dynamic_cast(so.get()); - - if ( aSO ) { canCopy = studyMgr()->CanCopy(so); canPaste = studyMgr()->CanPaste(so); - } } } } @@ -436,10 +438,9 @@ void SalomeApp_Application::onOpenWith() QApplication::restoreOverrideCursor(); } -//======================================================================= -// name : createNewStudy -/*! Purpose : Create new study*/ -//======================================================================= +/*! + Creates new study +*/ SUIT_Study* SalomeApp_Application::createNewStudy() { SalomeApp_Study* aStudy = new SalomeApp_Study( this ); @@ -453,10 +454,9 @@ SUIT_Study* SalomeApp_Application::createNewStudy() return aStudy; } -//======================================================================= -// name : updateCommandsStatus -/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/ -//======================================================================= +/*! + Enable/Disable menu items and toolbar buttons. Rebuild menu +*/ void SalomeApp_Application::updateCommandsStatus() { LightApp_Application::updateCommandsStatus(); @@ -485,10 +485,10 @@ void SalomeApp_Application::updateCommandsStatus() onSelectionChanged(); } -/* - Class : DumpStudyFileDlg - Description : Private class used in Dump Study operation. Consists 2 check boxes: - "Publish in study" and "Save GUI parameters" +/*! + \class DumpStudyFileDlg + Private class used in Dump Study operation. Consists 2 check boxes: + "Publish in study" and "Save GUI parameters" */ class DumpStudyFileDlg : public SUIT_FileDlg { @@ -530,11 +530,12 @@ void SalomeApp_Application::onDumpStudy( ) if ( !aFileName.isEmpty() ) { QFileInfo aFileInfo(aFileName); int savePoint; + _PTR(AttributeParameter) ap; + _PTR(IParameters) ip = ClientFactory::getIParameters(ap); + if(ip->isDumpPython(appStudy->studyDS())) ip->setDumpPython(appStudy->studyDS()); //Unset DumpPython flag. if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method - SALOMEDS_IParameters::setDumpPython(appStudy->studyDS()); - savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point - //prefix = SALOMEDS_IParameters::getStudyScript(appStudy->studyDS(), appStudy->getVisualComponentName(), savePoint); - + ip->setDumpPython(appStudy->studyDS()); + savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point } bool res = aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish); if ( toSaveGUI ) @@ -588,6 +589,7 @@ void SalomeApp_Application::onSaveGUIState() updateSavePointDataObjects( study ); objectBrowser()->updateTree( study->root() ); } + updateActions(); } /*!Gets file filter. @@ -845,16 +847,13 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels ) //SalomeApp_DataModel::BuildTree( aComponent, study->root(), study, /*skipExisitng=*/true ); } } - // create data objects that correspond to GUI state save points - updateSavePointDataObjects( study ); } + // create data objects that correspond to GUI state save points + if ( study ) updateSavePointDataObjects( study ); + // update existing data models (already loaded SComponents) LightApp_Application::updateObjectBrowser( updateModels ); - - // -- debug -- - // if ( study && study->root() ) - // study->root()->dump(); } /*!Display Catalog Genenerator dialog */ @@ -917,6 +916,10 @@ void SalomeApp_Application::onDblClick( QListViewItem* it ) } } +/*! + Creates new view manager + \param type - type of view manager +*/ SUIT_ViewManager* SalomeApp_Application::newViewManager(const QString& type) { return createViewManager(type); @@ -961,6 +964,7 @@ void SalomeApp_Application::onRenameGUIState() if ( !newName.isNull() && !newName.isEmpty() ) { study->setNameOfSavePoint( savePoint, newName ); updateSavePointDataObjects( study ); + objectBrowser()->updateTree( study->root() ); } } @@ -1052,11 +1056,10 @@ void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study ) // case 4: everything already exists.. here may be a problem: we want "GUI states" root object // to be always the last one in the tree. Here we check - if it is not the last one - remove and // re-create it. - bool isOpen( false ); if ( guiRootObj->nextBrother() ) { - isOpen = isListViewItemOpen( ob->listView(), guiRootObj ); - delete guiRootObj; - guiRootObj = new SalomeApp_SavePointRootObject( study->root() ); + study->root()->removeChild(guiRootObj); + study->root()->appendChild(guiRootObj); + //study->root()->dump(); } // store data objects in a map id-to-DataObject @@ -1074,15 +1077,11 @@ void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study ) for ( int i = 0; i < savePoints.size(); i++ ) if ( !mapDO.contains( savePoints[i] ) ) new SalomeApp_SavePointObject( guiRootObj, savePoints[i], study ); - else { - ob->updateTree( mapDO[ savePoints[i] ] ); + else mapDO.remove( savePoints[i] ); - } + // delete DataObjects that are still in the map -- their IDs were not found in data model for ( QMap::Iterator it = mapDO.begin(); it != mapDO.end(); ++it ) delete it.data(); - - if ( isOpen ) // set open if we recreated guiRootObj and it was previously open.. - guiRootObj->setOpen( true ); } diff --git a/src/SalomeApp/SalomeApp_Application.h b/src/SalomeApp/SalomeApp_Application.h index e8ba1d4b4..083cd6a90 100644 --- a/src/SalomeApp/SalomeApp_Application.h +++ b/src/SalomeApp/SalomeApp_Application.h @@ -38,7 +38,8 @@ class QListViewItem; #endif /*! - Description : Application containing SalomeApp module or LightApp module + \class SalomeApp_Application + \brief Application containing SalomeApp module or LightApp module */ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application @@ -77,6 +78,7 @@ public slots: virtual bool onLoadDoc( const QString& ); virtual void onCopy(); virtual void onPaste(); + void onSaveGUIState();// called from VISU protected slots: void onStudySaved( SUIT_Study* ); @@ -99,14 +101,14 @@ private slots: void onProperties(); void onDumpStudy(); void onLoadScript(); - void onSaveGUIState(); + void onDeleteGUIState(); + void onRestoreGUIState(); + void onRenameGUIState(); void onCatalogGen(); void onRegDisplay(); void onOpenWith(); - void onRestoreGUIState(); - void onRenameGUIState(); }; #ifdef WIN32 diff --git a/src/SalomeApp/SalomeApp_DataModel.cxx b/src/SalomeApp/SalomeApp_DataModel.cxx index 79e75ca10..21c0b4aba 100644 --- a/src/SalomeApp/SalomeApp_DataModel.cxx +++ b/src/SalomeApp/SalomeApp_DataModel.cxx @@ -25,14 +25,13 @@ #include #include CORBA_SERVER_HEADER(SALOME_Exception) -//======================================================================= -// name : SalomeApp_DataModelSync -/*!Purpose : Auxiliary class for synchronizing tree of kernel objects and SUIT_DataObjects */ -//======================================================================= - typedef _PTR(SObject) kerPtr; typedef SUIT_DataObject* suitPtr; +/*! + \class SalomeApp_DataModelSync + Auxiliary class for synchronizing tree of kernel objects and SUIT_DataObjects +*/ class SalomeApp_DataModelSync { public: @@ -54,13 +53,18 @@ private: SUIT_DataObject* myRoot; }; - +/*! + Constructor +*/ SalomeApp_DataModelSync::SalomeApp_DataModelSync( _PTR( Study ) aStudy, SUIT_DataObject* aRoot ) : myStudy( aStudy ), myRoot( aRoot ) { } +/*! + \return true if kernel object is correct (has non empty name or is reference) +*/ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const { kerPtr refObj; @@ -69,6 +73,13 @@ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const return res; } +/*! + Creates SUIT object by KERNEL object + \param so - corresponding KERNEL object + \param parent - parent for SUIT object + \param after - previous sibling for SUIT object + \param prepend - SUIT object must be added to start of children list +*/ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so, const suitPtr& parent, const suitPtr& after, @@ -100,6 +111,10 @@ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so, return nitem; } +/*! + Deletes object with all children + \param p - SUIT object +*/ void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const { if( !p ) @@ -113,22 +128,43 @@ void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const delete p; } +/*! + \return true if objects correspond each other at all + \param p - kernel object + \param q - suit object +*/ bool SalomeApp_DataModelSync::isEqual( const kerPtr& p, const suitPtr& q ) const { - LightApp_DataObject* obj = dynamic_cast( q ); - return ( !p && !q ) || ( obj && isCorrect( p ) && p->GetID().c_str()==obj->entry() ); + LightApp_ModuleObject* lobj = dynamic_cast( q ); + SalomeApp_DataObject* sobj = dynamic_cast( q ); + _PTR( SComponent ) aComp( p ); + bool res = ( !p && !q ) || + ( lobj && !sobj && aComp ) || + ( sobj && isCorrect( p ) && p->GetID().c_str()==sobj->entry() ); + return res; } +/*! + \return null kernel object +*/ kerPtr SalomeApp_DataModelSync::nullSrc() const { return kerPtr(); } +/*! + \return null suit object +*/ suitPtr SalomeApp_DataModelSync::nullTrg() const { return suitPtr( 0 ); } +/*! + Fills list with children of kernel object + \param obj - kernel object + \param ch - list to be filled +*/ void SalomeApp_DataModelSync::children( const kerPtr& obj, QValueList& ch ) const { ch.clear(); @@ -137,6 +173,11 @@ void SalomeApp_DataModelSync::children( const kerPtr& obj, QValueList& c ch.append( it->Value() ); } +/*! + Fills list with children of SUIT object + \param p - SUIT object + \param ch - list to be filled +*/ void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList& ch ) const { DataObjectList l; @@ -149,15 +190,26 @@ void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList& c } } +/*! + \return parent of SUIT object + \param p - SUIT object +*/ suitPtr SalomeApp_DataModelSync::parent( const suitPtr& p ) const { return p ? p->parent(): 0; } +/*! + Updates SUIT object + \param p - SUIT object +*/ void SalomeApp_DataModelSync::updateItem( const suitPtr& ) const { } +/*! + Auxiliary function, shows SUIT tree +*/ void showTree( SUIT_DataObject* root ) { qDebug( root ? "" : "" ); @@ -173,27 +225,24 @@ void showTree( SUIT_DataObject* root ) } } -//======================================================================= -// name : SalomeApp_DataModel::SalomeApp_DataModel -/*!Purpose : Constructor*/ -//======================================================================= +/*! + Constructor +*/ SalomeApp_DataModel::SalomeApp_DataModel( CAM_Module* theModule ) : LightApp_DataModel( theModule ) { } -//======================================================================= -// name : SalomeApp_DataModel::~SalomeApp_DataModel -/*! Purpose : Destructor*/ -//======================================================================= +/*! + Destructor +*/ SalomeApp_DataModel::~SalomeApp_DataModel() { } -//================================================================ -// Function : open -/*! Purpose : Open data model*/ -//================================================================ +/*! + Opens data model +*/ bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringList ) { SalomeApp_Study* aDoc = dynamic_cast( study ); @@ -214,20 +263,18 @@ bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringLi return true; } -//================================================================ -// Function : create -/*! Purpose : Create data model*/ -//================================================================ +/*! + Creates data model +*/ bool SalomeApp_DataModel::create( CAM_Study* theStudy ) { update(NULL, (LightApp_Study*)theStudy); return true; } -//================================================================ -// Function : update -/*! Purpose : Update application.*/ -//================================================================ +/*! + Updates application. +*/ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study ) { SalomeApp_Study* aSStudy = dynamic_cast(study); @@ -261,10 +308,9 @@ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study ) updateTree( sobj, aSStudy ); } -//================================================================ -// Function : synchronize -/*! Purpose : synchronizes kernel tree and suit data tree starting from component 'sobj' */ -//================================================================ +/*! + Synchronizes kernel tree and suit data tree starting from component 'sobj' +*/ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sobj, SalomeApp_Study* study ) { if( !study || !study->root() || !sobj ) @@ -272,11 +318,11 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob DataObjectList ch; study->root()->children( ch ); DataObjectList::const_iterator anIt = ch.begin(), aLast = ch.end(); - SalomeApp_DataObject* suitObj = 0; + SUIT_DataObject* suitObj = 0; for( ; anIt!=aLast; anIt++ ) { - SalomeApp_DataObject* dobj = dynamic_cast( *anIt ); - if( dobj && dobj->name()==sobj->GetName().c_str() ) + LightApp_DataObject* dobj = dynamic_cast( *anIt ); + if( dobj && dobj->name() == sobj->GetName().c_str() ) { suitObj = dobj; break; @@ -285,13 +331,15 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob SalomeApp_DataModelSync sync( study->studyDS(), study->root() ); - return ::synchronize( sobj, suitObj, sync ); + if( !suitObj || dynamic_cast( suitObj ) ) + return ::synchronize( sobj, suitObj, sync ); + else + return 0; } -//================================================================ -// Function : updateTree -/*! Purpose : updates tree.*/ -//================================================================ +/*! + Updates tree. +*/ void SalomeApp_DataModel::updateTree( const _PTR( SComponent )& comp, SalomeApp_Study* study ) { SalomeApp_ModuleObject* aNewRoot = dynamic_cast( synchronize( comp, study ) ); @@ -302,20 +350,17 @@ void SalomeApp_DataModel::updateTree( const _PTR( SComponent )& comp, SalomeApp_ } } -//================================================================ -// Function : getModule -/*! Purpose : gets module*/ -//================================================================ - +/*! + \return module +*/ SalomeApp_Module* SalomeApp_DataModel::getModule() const { return dynamic_cast( module() ); } -//================================================================ -// Function : getStudy -/*! Purpose : gets study */ -//================================================================ +/*! + \return study +*/ SalomeApp_Study* SalomeApp_DataModel::getStudy() const { if(!root()) return 0; @@ -328,10 +373,9 @@ SalomeApp_Study* SalomeApp_DataModel::getStudy() const return aStudy; } -//================================================================ -// Function : getRootEntry -/*! Purpose : returns study entry corresponding to this data model*/ -//================================================================ +/*! + \return study entry corresponding to this data model +*/ QString SalomeApp_DataModel::getRootEntry( SalomeApp_Study* study ) const { QString anEntry; diff --git a/src/SalomeApp/SalomeApp_DataObject.cxx b/src/SalomeApp/SalomeApp_DataObject.cxx index 5bb857865..04d9aaf07 100644 --- a/src/SalomeApp/SalomeApp_DataObject.cxx +++ b/src/SalomeApp/SalomeApp_DataObject.cxx @@ -35,10 +35,6 @@ #include #include -/* - Class: SalomeApp_DataObject - Level: Public -*/ /*!Constructor. Initialize by \a parent*/ SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent ) : LightApp_DataObject( parent ), @@ -333,10 +329,9 @@ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const return val; } -/* - Class: SalomeApp_ModuleObject - Level: Public -*/ + + + /*!Constructor.Initialize by \a parent.*/ SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent ) @@ -373,10 +368,8 @@ QString SalomeApp_ModuleObject::name() const return SalomeApp_DataObject::name(); } -/* - Class: SalomeApp_SavePointObject - Level: Public -*/ + + /*!Constructor.Initialize by \a parent.*/ SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* _parent, const int id, SalomeApp_Study* study ) @@ -410,11 +403,13 @@ QString SalomeApp_SavePointObject::name() const return myStudy->getNameOfSavePoint( myId ); } +/*!Gets icon picture of object.*/ QPixmap SalomeApp_SavePointObject::icon() const { return QPixmap(); } +/*!Gets tooltip.*/ QString SalomeApp_SavePointObject::toolTip() const { return QObject::tr( "SAVE_POINT_OBJECT_TOOLTIP" ).arg( name() ); diff --git a/src/SalomeApp/SalomeApp_Displayer.cxx b/src/SalomeApp/SalomeApp_Displayer.cxx index 6e2caeda2..03d1f1f78 100644 --- a/src/SalomeApp/SalomeApp_Displayer.cxx +++ b/src/SalomeApp/SalomeApp_Displayer.cxx @@ -30,14 +30,26 @@ #include +/*! + Default constructor +*/ SalomeApp_Displayer::SalomeApp_Displayer() { } +/*! + Destructor +*/ SalomeApp_Displayer::~SalomeApp_Displayer() { } +/*! + Displays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::Display( const QString& entry, const bool updateViewer, SALOME_View* theViewFrame ) { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -59,6 +71,11 @@ void SalomeApp_Displayer::Display( const QString& entry, const bool updateViewer } } +/*! + Redisplays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer +*/ void SalomeApp_Displayer::Redisplay( const QString& entry, const bool updateViewer ) { // Remove the object permanently ( == true) @@ -89,6 +106,13 @@ void SalomeApp_Displayer::Redisplay( const QString& entry, const bool updateView } } +/*! + Erases object in view + \param entry - object entry + \param forced - deletes object from viewer (otherwise it will be erased, but cached) + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::Erase( const QString& entry, const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) { @@ -105,6 +129,12 @@ void SalomeApp_Displayer::Erase( const QString& entry, const bool forced, } } +/*! + Erases all objects in view + \param forced - deletes objects from viewer + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -116,6 +146,11 @@ void SalomeApp_Displayer::EraseAll( const bool forced, const bool updateViewer, } } +/*! + \return true if object is displayed in viewer + \param entry - object entry + \param theViewFrame - view +*/ bool SalomeApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -129,6 +164,9 @@ bool SalomeApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theVie return false; } +/*! + Updates active view +*/ void SalomeApp_Displayer::UpdateViewer() const { SALOME_View* vf = GetActiveView(); @@ -136,6 +174,12 @@ void SalomeApp_Displayer::UpdateViewer() const vf->Repaint(); } +/*! + \return presentation of object, built with help of CreatePrs method + \param entry - object entry + \param theViewFrame - view + \sa CreatePrs() +*/ SALOME_Prs* SalomeApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) { SALOME_Prs* prs = 0; @@ -148,6 +192,9 @@ SALOME_Prs* SalomeApp_Displayer::buildPresentation( const QString& entry, SALOME return prs; } +/*! + \return active view +*/ SALOME_View* SalomeApp_Displayer::GetActiveView() { SUIT_Session* session = SUIT_Session::session(); diff --git a/src/SalomeApp/SalomeApp_EventFilter.cxx b/src/SalomeApp/SalomeApp_EventFilter.cxx index 0db6f5fe3..e21971eaf 100755 --- a/src/SalomeApp/SalomeApp_EventFilter.cxx +++ b/src/SalomeApp/SalomeApp_EventFilter.cxx @@ -38,6 +38,9 @@ SalomeApp_EventFilter::~SalomeApp_EventFilter() qApp->removeEventFilter( this ); } +/*! + Custom event filter +*/ bool SalomeApp_EventFilter::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == SALOME_EVENT ) diff --git a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx index 16b5004ce..6059ff19b 100644 --- a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx +++ b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx @@ -77,5 +77,17 @@ bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e ) /*!Create new SUIT_ExceptionHandler*/ extern "C" SALOMEAPP_EXPORT SUIT_ExceptionHandler* getExceptionHandler() { - return new SalomeApp_ExceptionHandler( true ); + // MSV 2006-04-26: work around PAL12004 "VTK window => SIGFPE Arithmetic Exception Detected" + // We disable FPE signal as it was in earlier versions of SALOME. It is enabled + // only in debug mode if the environment variable DISABLE_FPE is not set to 1. + bool raiseFPE; +#ifdef _DEBUG_ + raiseFPE = true; + char* envDisableFPE = getenv("DISABLE_FPE"); + if (envDisableFPE && atoi(envDisableFPE)) + raiseFPE = false; +#else + raiseFPE = false; +#endif + return new SalomeApp_ExceptionHandler( raiseFPE ); } diff --git a/src/SalomeApp/SalomeApp_ListView.cxx b/src/SalomeApp/SalomeApp_ListView.cxx index 6f3bd20e1..776c83b1b 100644 --- a/src/SalomeApp/SalomeApp_ListView.cxx +++ b/src/SalomeApp/SalomeApp_ListView.cxx @@ -27,14 +27,9 @@ using namespace std; -////////////////////////////////////////////////////////////////////// -// SalomeApp_ListView class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : computeEditGeometry -/*! Purpose : static function - used for resizing editing widget*/ -//================================================================ +/*! + Used for resizing editing widget +*/ void computeEditGeometry(SalomeApp_ListViewItem* theItem, SalomeApp_EntityEdit* theWidget) { @@ -61,10 +56,9 @@ void computeEditGeometry(SalomeApp_ListViewItem* theItem, theWidget->setGeometry(aX, aY, aW, aH); } -//================================================================ -// Function : SalomeApp_ListView::SalomeApp_ListView -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListView::SalomeApp_ListView( QWidget* parent ) : QtxListView( parent ) { @@ -88,10 +82,9 @@ SalomeApp_ListView::SalomeApp_ListView( QWidget* parent ) this, SLOT(onHeaderSizeChange(int, int, int))); } -//================================================================ -// Function : SalomeApp_ListView::~SalomeApp_ListView -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_ListView::~SalomeApp_ListView() { if (myEdit) { @@ -101,10 +94,9 @@ SalomeApp_ListView::~SalomeApp_ListView() myEditedItem = 0; } -//================================================================ -// Function : SalomeApp_ListView::updateViewer -/*! Purpose : updates all data viewer*/ -//================================================================ +/*! + Updates all data viewer +*/ void SalomeApp_ListView::updateViewer() { // temporary disconnecting selection changed SIGNAL @@ -118,10 +110,9 @@ void SalomeApp_ListView::updateViewer() emit selectionChanged(); } -//================================================================ -// Function : SalomeApp_ListView::updateSelected -/*! Purpose : updates currently selected item(s)*/ -//================================================================ +/*! + Updates currently selected item(s) +*/ void SalomeApp_ListView::updateSelected() { // temporary disconnecting selection changed SIGNAL @@ -135,19 +126,17 @@ void SalomeApp_ListView::updateSelected() emit selectionChanged(); } -//================================================================ -// Function : SalomeApp_ListView::popupClientType -/*! Purpose : returns popup client type*/ -//================================================================ +/*! + Returns popup client type +*/ QString SalomeApp_ListView::popupClientType() const { return "SalomeApp_ListView"; } -//================================================================ -// Function : SalomeApp_ListView::contextMenuPopup -/*! Purpose : fills popup menu with items*/ -//================================================================ +/*! + Fills popup menu with items +*/ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup ) { if (aPopup) { @@ -155,10 +144,9 @@ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup ) } } -//================================================================ -// Function : SalomeApp_ListView::clear -/*! Purpose : clears view*/ -//================================================================ +/*! + Clears view +*/ void SalomeApp_ListView::clear() { if (myEdit) { @@ -169,28 +157,25 @@ void SalomeApp_ListView::clear() QListView::clear(); } -//================================================================ -// Function : SalomeApp_ListView::isMouseEnabled -/*! Purpose : returms true if mouse events are enabled*/ -//================================================================ +/*! + \return true if mouse events are enabled +*/ bool SalomeApp_ListView::isMouseEnabled() { return myMouseEnabled; } -//================================================================ -// Function : SalomeApp_ListView::enableMouse -// Purpose : enabled/disables mouse events (excluding MouseMove) -//================================================================ +/*! + Enables/disables mouse events (excluding MouseMove) +*/ void SalomeApp_ListView::enableMouse(bool enable) { myMouseEnabled = enable; } -//================================================================ -// Function : SalomeApp_ListView::eventFilter -/*! Purpose : event filter*/ -//================================================================ +/*! + Event filter +*/ bool SalomeApp_ListView::eventFilter(QObject* object, QEvent* event) { if (object == viewport() && @@ -203,10 +188,9 @@ bool SalomeApp_ListView::eventFilter(QObject* object, QEvent* event) return QListView::eventFilter(object, event); } -//================================================================ -// Function : SalomeApp_ListView::enableEditing -/*! Purpose : setting editing of items availbale/not available*/ -//================================================================ +/*! + Setting editing of items availbale/not available +*/ void SalomeApp_ListView::enableEditing(bool theFlag) { myEditingEnabled = theFlag; @@ -219,28 +203,25 @@ void SalomeApp_ListView::enableEditing(bool theFlag) } } -//================================================================ -// Function : SalomeApp_ListView::isEnableEditing -/*! Purpose : says if editing is enabled*/ -//================================================================ +/*! + Says if editing is enabled +*/ bool SalomeApp_ListView::isEnableEditing() { return myEditingEnabled; } -//================================================================ -// Function : SalomeApp_ListView::accept -/*! Purpose : calls finishEditing(true)...*/ -//================================================================ +/*! + Calls finishEditing(true)... +*/ void SalomeApp_ListView::accept() { finishEditing(true); } -//================================================================ -// Function : QAD_ListView::onSelectionChanged -/*! Purpose : slot, called when selection changed in List Viewer*/ -//================================================================ +/*! + Slot, called when selection changed in List Viewer +*/ void SalomeApp_ListView::onSelectionChanged() { if (myEdit) { @@ -271,10 +252,9 @@ void SalomeApp_ListView::onSelectionChanged() } } -//================================================================ -// Function : SalomeApp_ListView::resizeEvent -/*! Purpose : called when Data Viewer is resized*/ -//================================================================ +/*! + Called when Data Viewer is resized +*/ void SalomeApp_ListView::resizeEvent( QResizeEvent * e) { QListView::resizeEvent(e); @@ -285,10 +265,9 @@ void SalomeApp_ListView::resizeEvent( QResizeEvent * e) updateContents(); } -//================================================================ -// Function : SalomeApp_ListView::onHeaderSizeChange -/*! Purpose : slot, called when columns sizes are changed*/ -//================================================================ +/*! + Slot, called when columns sizes are changed +*/ void SalomeApp_ListView::onHeaderSizeChange(int, int, int) { int aW = columnWidth(columns()-1); @@ -297,10 +276,9 @@ void SalomeApp_ListView::onHeaderSizeChange(int, int, int) setColumnWidth(columns()-1, width() - frameWidth() * 2 - aX - 1); } -//================================================================ -// Function : SalomeApp_ListView::viewportPaintEvent -/*! Purpose : handler for paint event*/ -//================================================================ +/*! + Handler for paint event +*/ void SalomeApp_ListView::viewportPaintEvent(QPaintEvent* e) { QListView::viewportPaintEvent(e); @@ -309,28 +287,25 @@ void SalomeApp_ListView::viewportPaintEvent(QPaintEvent* e) } } -//================================================================ -// Function : SalomeApp_ListView::onEditOk -/*! Purpose : called when user finishes in editing of item*/ -//================================================================ +/*! + Called when user finishes in editing of item +*/ void SalomeApp_ListView::onEditOk() { finishEditing(true); } -//================================================================ -// Function : SalomeApp_ListView::onEditCancel -/*! Purpose : called when user cancels item editing*/ -//================================================================ +/*! + Called when user cancels item editing +*/ void SalomeApp_ListView::onEditCancel() { finishEditing(false); } -//================================================================ -// Function : SalomeApp_ListView::finishEditing -/*! Purpose : finishes editing of entity*/ -//================================================================ +/*! + Finishes editing of entity +*/ UpdateType SalomeApp_ListView::finishEditing(bool ok) { UpdateType aNeedsUpdate = utCancel; @@ -392,12 +367,10 @@ UpdateType SalomeApp_ListView::finishEditing(bool ok) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListView::tip -/*! Purpose : gets current tooltip for list view - * \retval valid rect in success - */ -//================================================================ +/*! + \return current tooltip for list view + \retval valid rect in success +*/ QRect SalomeApp_ListView::tip(QPoint aPos, QString& aText, QRect& dspRect, @@ -429,24 +402,18 @@ QRect SalomeApp_ListView::tip(QPoint aPos, return result; } -////////////////////////////////////////////////////////////////////// -// SalomeApp_ListViewItem Class Implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent) : QListViewItem( parent ) { init(); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after) : QListViewItem( parent, after ) @@ -454,10 +421,9 @@ QListViewItem( parent, after ) init(); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, const QString& theName, const bool theEditable) : @@ -467,10 +433,9 @@ QListViewItem(parent, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, const QString& theName, const QString& theValue, @@ -481,10 +446,9 @@ QListViewItem(parent, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, const QString& theName, const bool theEditable) : @@ -494,10 +458,9 @@ QListViewItem(parent, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -508,10 +471,9 @@ QListViewItem(parent, after, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -523,10 +485,9 @@ QListViewItem(parent, after, theName) } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, const QString& theName, const QString& theValue, @@ -538,10 +499,9 @@ QListViewItem(parent, theName, theValue) } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -553,10 +513,9 @@ QListViewItem(parent, after, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -568,18 +527,16 @@ QListViewItem(parent, after, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::~SalomeApp_ListViewItem -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_ListViewItem::~SalomeApp_ListViewItem() { } -//================================================================ -// Function : SalomeApp_ListViewItem::init -/*! Purpose : initialization*/ -//================================================================ +/*! + Initialization +*/ void SalomeApp_ListViewItem::init() { myEditable = false; @@ -590,19 +547,17 @@ void SalomeApp_ListViewItem::init() myUserType = -1; } -//================================================================ -// Function : SalomeApp_ListViewItem::getName -/*! Purpose : as default returns text in the first column*/ -//================================================================ +/*! + \return text in the first column +*/ QString SalomeApp_ListViewItem::getName() const { return ( listView()->columns() > 0 ) ? text(0) : QString(""); } -//================================================================ -// Function : SalomeApp_ListViewItem::setName -/*! Purpose : as default sets text in the first column*/ -//================================================================ +/*! + Sets text in the first column +*/ UpdateType SalomeApp_ListViewItem::setName(const QString& theName) { UpdateType aNeedsUpdate = utCancel; @@ -613,19 +568,17 @@ UpdateType SalomeApp_ListViewItem::setName(const QString& theName) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::getValue -/*! Purpose : as default returns text in the second column*/ -//================================================================ +/*! + \return text in the second column +*/ QString SalomeApp_ListViewItem::getValue() const { return ( listView()->columns() > 1 ) ? text(1) : QString(""); } -//================================================================ -// Function : SalomeApp_ListViewItem::setValue -/*! Purpose : as default sets text in the second column*/ -//================================================================ +/*! + Sets text in the second column +*/ UpdateType SalomeApp_ListViewItem::setValue(const QString& theValue) { UpdateType aNeedsUpdate = utCancel; @@ -636,10 +589,9 @@ UpdateType SalomeApp_ListViewItem::setValue(const QString& theValue) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::fullName -/*! Purpose : returns full path to the entity from the root*/ -//================================================================ +/*! + \return full path to the entity from the root +*/ QString SalomeApp_ListViewItem::fullName() { QString aFullName = getName(); @@ -651,10 +603,9 @@ QString SalomeApp_ListViewItem::fullName() return aFullName; } -//================================================================ -// Function : SalomeApp_ListViewItem::openAllLevels -/*! Purpose : expands all entities beginning from this level*/ -//================================================================ +/*! + expands all entities beginning from this level +*/ void SalomeApp_ListViewItem::openAllLevels() { setOpen(true); @@ -665,10 +616,9 @@ void SalomeApp_ListViewItem::openAllLevels() } } -//================================================================ -// Function : SalomeApp_ListViewItem::updateAllLevels -/*! Purpose : update all entites beginning from this level*/ -//================================================================ +/*! + update all entites beginning from this level +*/ void SalomeApp_ListViewItem::updateAllLevels() { SalomeApp_ListViewItem* aChild = (SalomeApp_ListViewItem*)firstChild(); @@ -678,145 +628,121 @@ void SalomeApp_ListViewItem::updateAllLevels() } } -//================================================================ -// Function : SalomeApp_EditBox::isEditable -/*! Purpose : return true if entity is editable*/ -//================================================================ +/*! + \return true if entity is editable +*/ bool SalomeApp_ListViewItem::isEditable() const { return myEditable; } -//================================================================ -// Function : SalomeApp_ListViewItem::setEditable -/*! Purpose : sets editable flag fo the entity*/ -//================================================================ +/*! + Sets editable flag fo the entity +*/ void SalomeApp_ListViewItem::setEditable(bool theEditable) { myEditable = theEditable; } -//================================================================ -// Function : SalomeApp_ListViewItem::isAccepted -/*! Purpose : returns true if entitiy is accepted after editing*/ -//================================================================ +/*! + \return true if entitiy is accepted after editing +*/ bool SalomeApp_ListViewItem::isAccepted() const { return myAccepted; } -//================================================================ -// Function : SalomeApp_ListViewItem::setAccepted -/*! Purpose : set entitiy accepted or not after editing*/ -//================================================================ +/*! + Sets entitiy accepted or not after editing +*/ void SalomeApp_ListViewItem::setAccepted(bool theAccepted) { myAccepted = theAccepted; } -//================================================================ -// Function : SalomeApp_ListViewItem::getEditingType -/*! Purpose : - * \retval type of edit control (default is edit box) - * \li 0 - edit box - * \li 1 - combo box - * \li 2 - editable combo box - */ -//================================================================ +/*! + \retval type of edit control (default is edit box) + \li 0 - edit box + \li 1 - combo box + \li 2 - editable combo box +*/ int SalomeApp_ListViewItem::getEditingType() { return myEditingType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setEditingType -/*! Purpose : - * \retval type of edit control (negative value means none) - * \li 0 - edit box - * \li 1 - combo box - * \li 2 - editable combo box - */ -//================================================================ +/*! + \retval type of edit control (negative value means none) + \li 0 - edit box + \li 1 - combo box + \li 2 - editable combo box +*/ void SalomeApp_ListViewItem::setEditingType(const int type) { myEditingType = type; } -//================================================================ -// Function : SalomeApp_ListViewItem::getEditedColumn -// Purpose : /*! \retval edited column, default is last column - * negative value means there are no editable columns - */ -//================================================================ + negative value means there are no editable columns +*/ int SalomeApp_ListViewItem::getEditedColumn() { return listView()->columns()-1; } -//================================================================ -// Function : SalomeApp_ListViewItem::getValueType -// Purpose : -/*!\retval type of edited value (string, int, double) - * default is string - */ -//================================================================ +/*! + \retval type of edited value (string, int, double) + default is string +*/ int SalomeApp_ListViewItem::getValueType() { return myValueType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setValueType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ void SalomeApp_ListViewItem::setValueType(const int valueType) { myValueType = valueType; } -//================================================================ -// Function : SalomeApp_ListViewItem::getUserType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ int SalomeApp_ListViewItem::getUserType() { return myUserType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setUserType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ void SalomeApp_ListViewItem::setUserType(const int userType) { myUserType = userType; } -//================================================================ -// Function : SalomeApp_ListViewItem::getButtons -/*! Purpose : returns buttons for editing widget (Apply (V), Cancel (X)) - * default is both buttons - */ -//================================================================ +/*! + \return buttons for editing widget (Apply (V), Cancel (X)) + default is both buttons +*/ int SalomeApp_ListViewItem::getButtons() { return myButtons; } -//================================================================ -// Function : SalomeApp_ListViewItem::getButtons -/*! Purpose : sets buttons for editing widget (Apply (V), Cancel (X))*/ -//================================================================ +/*! + Sets buttons for editing widget (Apply (V), Cancel (X)) +*/ void SalomeApp_ListViewItem::setButtons(const int buttons) { myButtons = buttons; } -//================================================================ -// Function : SalomeApp_ListViewItem::startEditing -/*! Purpose : creates control for editing and fills it with values*/ -//================================================================ +/*! + Creates control for editing and fills it with values +*/ SalomeApp_EntityEdit* SalomeApp_ListViewItem::startEditing() { SalomeApp_EntityEdit* aWidget = 0; @@ -842,10 +768,9 @@ SalomeApp_EntityEdit* SalomeApp_ListViewItem::startEditing() return aWidget; } -//================================================================ -// Function : SalomeApp_ListViewItem::fillWidgetWithValues -/*! Purpose : fills widget with initial values (list or single value)*/ -//================================================================ +/*! + Fills widget with initial values (list or single value) +*/ void SalomeApp_ListViewItem::fillWidgetWithValues(SalomeApp_EntityEdit* theWidget) { int anEditColumn = getEditedColumn(); @@ -853,10 +778,9 @@ void SalomeApp_ListViewItem::fillWidgetWithValues(SalomeApp_EntityEdit* theWidge theWidget->insertItem(text(anEditColumn), true); } -//================================================================ -// Function : SalomeApp_ListViewItem::finishEditing -/*! Purpose : finishes editing of entity*/ -//================================================================ +/*! + Finishes editing of entity +*/ UpdateType SalomeApp_ListViewItem::finishEditing(SalomeApp_EntityEdit* theWidget) { UpdateType aNeedsUpdate = utCancel; @@ -881,10 +805,9 @@ UpdateType SalomeApp_ListViewItem::finishEditing(SalomeApp_EntityEdit* theWidget return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::tipRect -/*! Purpose : calculates rectangle which should contain item's tip*/ -//================================================================ +/*! + Calculates rectangle which should contain item's tip +*/ QRect SalomeApp_ListViewItem::tipRect() { QRect aRect = QRect(-1, -1, -1, -1); @@ -906,10 +829,9 @@ QRect SalomeApp_ListViewItem::tipRect() return aRect; } -//================================================================ -// Function : SalomeApp_ListViewItem::tipText -/*! Purpose : returns text for tooltip*/ -//================================================================ +/*! + \return text for tooltip +*/ QString SalomeApp_ListViewItem::tipText() { QString aText = getName(); @@ -918,10 +840,9 @@ QString SalomeApp_ListViewItem::tipText() return aText; } -//================================================================ -// Function : SalomeApp_ListViewItem::textRect -/*! Purpose : calculates rect of item text in viewport coordinates*/ -//================================================================ +/*! + Calculates rect of item text in viewport coordinates +*/ QRect SalomeApp_ListViewItem::textRect(const int column) const { QRect aItemRect = listView()->itemRect( this ); @@ -956,10 +877,9 @@ QRect SalomeApp_ListViewItem::textRect(const int column) const return theResult; } -//================================================================ -// Function : SalomeApp_ListViewItem::itemRect -/*! Purpose : calculates rect of item data in viewport coordinates*/ -//================================================================ +/*! + Calculates rect of item data in viewport coordinates +*/ QRect SalomeApp_ListViewItem::itemRect(const int column) const { QRect aItemRect = listView()->itemRect( this ); @@ -991,23 +911,17 @@ QRect SalomeApp_ListViewItem::itemRect(const int column) const return theResult; } -////////////////////////////////////////////////////////////////////// -// SalomeApp_EditBox class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : SalomeApp_EditBox::SalomeApp_EditBox -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_EditBox::SalomeApp_EditBox(QWidget* parent) : QLineEdit(parent) { } -//================================================================ -// Function : SalomeApp_EditBox::keyPressEvent -/*! Purpose : event filter for key pressing*/ -//================================================================ +/*! + Event filter for key pressing +*/ void SalomeApp_EditBox::keyPressEvent( QKeyEvent *e ) { if ( e->key() == Key_Escape ) @@ -1017,23 +931,18 @@ void SalomeApp_EditBox::keyPressEvent( QKeyEvent *e ) e->accept(); } -////////////////////////////////////////////////////////////////////// -// SalomeApp_ComboBox class implementation -////////////////////////////////////////////////////////////////////// -//================================================================ -// Function : SalomeApp_ComboBox::SalomeApp_ComboBox -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ComboBox::SalomeApp_ComboBox(bool rw, QWidget* parent, const char* name) : QComboBox(rw, parent, name) { } -//================================================================ -// Function : SalomeApp_ComboBox::findItem -/*! Purpose : searches item in list and returns its index*/ -//================================================================ +/*! + Searches item in list and returns its index +*/ int SalomeApp_ComboBox::findItem(const QString& theText) { for (int i = 0; i < count(); i++) @@ -1042,10 +951,9 @@ int SalomeApp_ComboBox::findItem(const QString& theText) return -1; } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const QString& theValue, int theIndex) { @@ -1053,20 +961,18 @@ void SalomeApp_ComboBox::insertItem(const QString& theValue, QComboBox::insertItem(theValue, theIndex); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const QStringList& theList) { for (unsigned i = 0; i < theList.count(); i++) insertItem(theList[i]); } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const int theValue) { int aNum; @@ -1083,20 +989,18 @@ void SalomeApp_ComboBox::insertItem(const int theValue) insertItem(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const TColStd_ListOfInteger& theList) { for (TColStd_ListIteratorOfListOfInteger aIter(theList); aIter.More(); aIter.Next()) insertItem(aIter.Value()); } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const double theValue) { double aNum; @@ -1113,29 +1017,23 @@ void SalomeApp_ComboBox::insertItem(const double theValue) insertItem(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const TColStd_ListOfReal& theList) { for (TColStd_ListIteratorOfListOfReal aIter(theList); aIter.More(); aIter.Next()) insertItem(aIter.Value()); } -////////////////////////////////////////////////////////////////////// -// SalomeApp_EntityEdit class implementation -////////////////////////////////////////////////////////////////////// - #include #define MIN_COMBO_WIDTH 1 #define MIN_EDIT_WIDTH 1 -//================================================================ -// Function : SalomeApp_EntityEdit::SalomeApp_EntityEdit -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_EntityEdit::SalomeApp_EntityEdit(QWidget* parent, int controlType, int valueType, @@ -1224,18 +1122,16 @@ myCancelBtn(0) } } -//================================================================ -// Function : SalomeApp_EntityEdit::~SalomeApp_EntityEdit -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_EntityEdit::~SalomeApp_EntityEdit() { } -//================================================================ -// Function : SalomeApp_EntityEdit::clear -/*! Purpose : clears edit/combo box*/ -//================================================================ +/*! + Clears edit/combo box +*/ void SalomeApp_EntityEdit::clear() { if (myEdit) @@ -1244,10 +1140,9 @@ void SalomeApp_EntityEdit::clear() myCombo->clear(); } -//================================================================ -// Function : SalomeApp_EntityEdit::getText -/*! Purpose : returns current text in edit box or combo box*/ -//================================================================ +/*! + \return current text in edit box or combo box +*/ QString SalomeApp_EntityEdit::getText() { if (myEdit) @@ -1258,10 +1153,9 @@ QString SalomeApp_EntityEdit::getText() return ""; } -//================================================================ -// Function : SalomeApp_EntityEdit::setText -/*! Purpose : sets text*/ -//================================================================ +/*! + Sets text +*/ void SalomeApp_EntityEdit::setText(const QString& theText) { myString = theText; @@ -1276,12 +1170,9 @@ void SalomeApp_EntityEdit::setText(const QString& theText) } } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -/*! Purpose : adds item in combo box, - * sets it current if theSetCurrent is true - */ -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const QString& theValue, bool theSetCurrent, int theOrder) @@ -1302,12 +1193,9 @@ void SalomeApp_EntityEdit::insertItem(const QString& theValue, setText(theValue); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const QStringList& theList, const int theCurrent) { @@ -1317,12 +1205,9 @@ void SalomeApp_EntityEdit::insertList(const QStringList& theList, setText(theList[theCurrent]); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -/*! Purpose : adds item in combo box, - * sets it current if theSetCurrent is true - */ -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const int theValue, bool theSetCurrent) { @@ -1333,12 +1218,9 @@ void SalomeApp_EntityEdit::insertItem(const int theValue, setText(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfInteger& theList, const int theCurrent) { @@ -1354,11 +1236,9 @@ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfInteger& theList, } } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -// Purpose : adds item in combo box, -// sets it current if theSetCurrent is true -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const double theValue, bool theSetCurrent) { @@ -1369,12 +1249,9 @@ void SalomeApp_EntityEdit::insertItem(const double theValue, setText(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfReal& theList, const int theCurrent) { @@ -1390,10 +1267,9 @@ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfReal& theList, } } -//================================================================ -// Function : SalomeApp_EntityEdit::getControl -/*! Purpose : gets actual widget*/ -//================================================================ +/*! + \return actual widget +*/ QWidget* SalomeApp_EntityEdit::getControl() { if (myEdit) @@ -1404,10 +1280,9 @@ QWidget* SalomeApp_EntityEdit::getControl() return 0; } -//================================================================ -// Function : SalomeApp_EntityEdit::setFocus -/*! Purpose : redirect focus to corresponding widget*/ -//================================================================ +/*! + redirect focus to corresponding widget +*/ void SalomeApp_EntityEdit::setFocus() { if (myEdit) { @@ -1420,10 +1295,9 @@ void SalomeApp_EntityEdit::setFocus() } } -//================================================================ -// Function : SalomeApp_EntityEdit::setValidator -/*! Purpose : sets validator for the control*/ -//================================================================ +/*! + Sets validator for the control +*/ void SalomeApp_EntityEdit::setValidator(const QValidator* theValidator) { if (myEdit) @@ -1432,10 +1306,9 @@ void SalomeApp_EntityEdit::setValidator(const QValidator* theValidator) myCombo->setValidator(theValidator); } -//================================================================ -// Function : SalomeApp_EntityEdit::keyPressEvent -/*! Purpose : event filter for KeyPress event*/ -//================================================================ +/*! + Event filter for KeyPress event +*/ void SalomeApp_EntityEdit::keyPressEvent( QKeyEvent * e) { if ( (e->key() == Key_Enter || @@ -1445,19 +1318,17 @@ void SalomeApp_EntityEdit::keyPressEvent( QKeyEvent * e) onCancel(); } -//================================================================ -// Function : SalomeApp_EntityEdit::onComboActivated -/*! Purpose : called when item activated in combo box*/ -//================================================================ +/*! + Called when item activated in combo box +*/ void SalomeApp_EntityEdit::onComboActivated(const QString& theText) { onTextChanged(theText); } -//================================================================ -// Function : SalomeApp_EntityEdit::onTextChanged -/*! Purpose : slot, called when text changed in line edit*/ -//================================================================ +/*! + Slot, called when text changed in line edit +*/ void SalomeApp_EntityEdit::onTextChanged(const QString& theText) { if (myApplyBtn) @@ -1466,10 +1337,9 @@ void SalomeApp_EntityEdit::onTextChanged(const QString& theText) myCancelBtn->setEnabled(!(theText == myString)); } -//================================================================ -// Function : SalomeApp_EntityEdit::onCancel -/*! Purpose : slot, called when user presses Cancel button*/ -//================================================================ +/*! + Slot, called when user presses Cancel button +*/ void SalomeApp_EntityEdit::onCancel() { setText(myString); @@ -1480,10 +1350,9 @@ void SalomeApp_EntityEdit::onCancel() emit escapePressed(); } -//================================================================ -// Function : SalomeApp_EntityEdit::onApply -/*! Purpose : slot, called when user presses Apply button*/ -//================================================================ +/*! + Slot, called when user presses Apply button +*/ void SalomeApp_EntityEdit::onApply() { myString = getText(); @@ -1494,10 +1363,9 @@ void SalomeApp_EntityEdit::onApply() emit returnPressed(); } -//================================================================ -// Function : SalomeApp_EntityEdit::showButtons -/*! Purpose : shows/hides buttons*/ -//================================================================ +/*! + Shows/hides buttons +*/ void SalomeApp_EntityEdit::showButtons(bool show) { if (myApplyBtn) @@ -1506,10 +1374,9 @@ void SalomeApp_EntityEdit::showButtons(bool show) show ? myCancelBtn->show() : myCancelBtn->hide(); } -//================================================================ -// Function : SalomeApp_EntityEdit::setDuplicatesEnabled -/*! Purpose : enables/disables data duplication (for combo box)*/ -//================================================================ +/*! + Enables/disables data duplication (for combo box) +*/ void SalomeApp_EntityEdit::setDuplicatesEnabled(bool enabled) { if (myCombo) diff --git a/src/SalomeApp/SalomeApp_ListView.h b/src/SalomeApp/SalomeApp_ListView.h index e7b7552cf..4e54e423c 100644 --- a/src/SalomeApp/SalomeApp_ListView.h +++ b/src/SalomeApp/SalomeApp_ListView.h @@ -44,10 +44,10 @@ enum UpdateType { class SalomeApp_ListViewItem; class SalomeApp_EntityEdit; -//================================================================ -// Class : SalomeApp_ListView -// Description : parent class for Data Viewer and Properties Viewer -//================================================================ +/*! + \class SalomeApp_ListView + parent class for Data Viewer and Properties Viewer +*/ class SalomeApp_ListView : public QtxListView , public SUIT_PopupClient { Q_OBJECT diff --git a/src/SalomeApp/SalomeApp_Module.cxx b/src/SalomeApp/SalomeApp_Module.cxx index b22992cf4..9afbe27e4 100644 --- a/src/SalomeApp/SalomeApp_Module.cxx +++ b/src/SalomeApp/SalomeApp_Module.cxx @@ -22,8 +22,6 @@ #include //#include -//#include "SALOMEDS_IParameters.hxx" - #include #include @@ -67,6 +65,12 @@ LightApp_Selection* SalomeApp_Module::createSelection() const return LightApp_Module::createSelection(); } +/*! + Converts objects-containers to list of objects, those are contained + Other objects must be added without conversion + \param source - source list of objects + \param dest - list of converted objects +*/ void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_ListIO& dest ) const { SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); diff --git a/src/SalomeApp/SalomeApp_PyInterp.cxx b/src/SalomeApp/SalomeApp_PyInterp.cxx index 19bc57559..88c6b5fa5 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.cxx +++ b/src/SalomeApp/SalomeApp_PyInterp.cxx @@ -108,12 +108,12 @@ bool SalomeApp_PyInterp::initContext() return true; } +/*! + Do nothing + The initialization has been done in main + */ void SalomeApp_PyInterp::init_python() { - /* - * Do nothing - * The initialization has been done in main - */ MESSAGE("PyInterp_base::init_python"); ASSERT(KERNEL_PYTHON::_gtstate); // initialisation in main SCRUTE(KERNEL_PYTHON::_gtstate); diff --git a/src/SalomeApp/SalomeApp_Study.cxx b/src/SalomeApp/SalomeApp_Study.cxx index fa686e4b2..3d693f374 100644 --- a/src/SalomeApp/SalomeApp_Study.cxx +++ b/src/SalomeApp/SalomeApp_Study.cxx @@ -44,7 +44,8 @@ #include "SALOMEDS_Tool.hxx" -#include "SALOMEDS_IParameters.hxx" +#include "SALOMEDSClient_ClientFactory.hxx" +#include "SALOMEDSClient_IParameters.hxx" #include #include CORBA_SERVER_HEADER(SALOME_Exception) @@ -108,10 +109,10 @@ void SalomeApp_Study::createDocument() emit created( this ); } -//======================================================================= -// name : openDocument -/*! Purpose : Open document*/ -//======================================================================= +/*! + Opens document + \param theFileName - name of file +*/ bool SalomeApp_Study::openDocument( const QString& theFileName ) { MESSAGE( "openDocument" ); @@ -151,10 +152,10 @@ bool SalomeApp_Study::openDocument( const QString& theFileName ) return res; } -//======================================================================= -// name : loadDocument -/*! Purpose : Connects GUI study to SALOMEDS one already loaded into StudyManager*/ -//======================================================================= +/*! + Connects GUI study to SALOMEDS one already loaded into StudyManager + \param theStudyName - name of study +*/ bool SalomeApp_Study::loadDocument( const QString& theStudyName ) { MESSAGE( "loadDocument" ); @@ -197,10 +198,10 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName ) return res; } -//======================================================================= -// name : saveDocumentAs -/*! Purpose : Save document*/ -//======================================================================= +/*! + Saves document + \param theFileName - name of file +*/ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) { bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); @@ -223,13 +224,14 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) if( !resMgr ) return false; - bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ), - isAscii = resMgr->booleanValue( "Study", "ascii_file", false ), - res = isAscii ? - SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) : - SalomeApp_Application::studyMgr()->SaveAs ( theFileName.latin1(), studyDS(), isMultiFile ) && - CAM_Study::saveDocumentAs( theFileName ) && //SRN: BugID IPAL9377, removed usage of uninitialized variable - saveStudyData(theFileName); + bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ); + bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false ); + bool res = (isAscii ? + SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) : + SalomeApp_Application::studyMgr()->SaveAs ( theFileName.latin1(), studyDS(), isMultiFile )) + && CAM_Study::saveDocumentAs( theFileName ); + + res = res && saveStudyData(theFileName); if ( res ) emit saved( this ); @@ -237,10 +239,9 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) return res; } -//======================================================================= -// name : saveDocument -/*! Purpose : Save document*/ -//======================================================================= +/*! + Saves previously opened document +*/ bool SalomeApp_Study::saveDocument() { bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); @@ -263,11 +264,11 @@ bool SalomeApp_Study::saveDocument() if( !resMgr ) return false; - bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ), - isAscii = resMgr->booleanValue( "Study", "ascii_file", false ), - res = isAscii ? - SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) : - SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile ) && CAM_Study::saveDocument(); + bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ); + bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false ); + bool res = (isAscii ? + SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) : + SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile )) && CAM_Study::saveDocument(); res = res && saveStudyData(studyName()); if ( res ) @@ -276,10 +277,9 @@ bool SalomeApp_Study::saveDocument() return res; } -//================================================================ -// Function : closeDocument -/*! Purpose : Close document*/ -//================================================================ +/*! + Closes document +*/ void SalomeApp_Study::closeDocument(bool permanently) { LightApp_Study::closeDocument(permanently); @@ -294,10 +294,9 @@ void SalomeApp_Study::closeDocument(bool permanently) } } -//================================================================ -// Function : isModified -// Purpose : -//================================================================ +/*! + \return true, if study is modified in comparison with last open/save +*/ bool SalomeApp_Study::isModified() const { bool isAnyChanged = studyDS() && studyDS()->IsModified(); @@ -307,23 +306,23 @@ bool SalomeApp_Study::isModified() const return isAnyChanged; } -//================================================================ -// Function : isSaved -/*! Purpose : Check: data model is saved?*/ -//================================================================ +/*! + \return if data model is saved +*/ bool SalomeApp_Study::isSaved() const { bool isAllSaved = studyDS() && studyDS()->GetPersistentReference().size(); if (!isAllSaved) - isAllSaved = LightApp_Study::isModified(); + isAllSaved = LightApp_Study::isSaved(); return isAllSaved; } -//======================================================================= -// name : saveModuleData -/*! Purpose : save list file for module 'theModuleName' */ -//======================================================================= +/*! + Saves data of module + \param theModuleName - name of module + \param theListOfFiles - list of files to be saved +*/ void SalomeApp_Study::saveModuleData( QString theModuleName, QStringList theListOfFiles ) { int aNb = theListOfFiles.count(); @@ -341,10 +340,11 @@ void SalomeApp_Study::saveModuleData( QString theModuleName, QStringList theList SetListOfFiles(theModuleName, aListOfFiles); } -//======================================================================= -// name : openModuleData -/*! Purpose : gets list of file for module 'theModuleNam' */ -//======================================================================= +/*! + Loads data of module + \param theModuleName - name of module + \param theListOfFiles - list of files to be loaded +*/ void SalomeApp_Study::openModuleData( QString theModuleName, QStringList& theListOfFiles ) { std::vector aListOfFiles = GetListOfFiles( theModuleName ); @@ -360,10 +360,9 @@ void SalomeApp_Study::openModuleData( QString theModuleName, QStringList& theLis theListOfFiles.append(aListOfFiles[i+1].c_str()); } -//======================================================================= -// name : saveStudyData -/*! Purpose : save data from study */ -//======================================================================= +/*! + Saves data from study +*/ bool SalomeApp_Study::saveStudyData( const QString& theFileName ) { ModelList list; dataModels( list ); @@ -374,10 +373,9 @@ bool SalomeApp_Study::saveStudyData( const QString& theFileName ) return true; } -//======================================================================= -// name : openStudyData -/*! Purpose : open data for study */ -//======================================================================= +/*! + Loads data for study +*/ bool SalomeApp_Study::openStudyData( const QString& theFileName ) { return true; @@ -404,7 +402,7 @@ void SalomeApp_Study::dataModelInserted (const CAM_DataModel* dm) } /*! - Create SComponent for module, using default engine (CORBAless) + Create SComponent for module, using default engine (CORBAless) */ void SalomeApp_Study::addComponent(const CAM_DataModel* dm) { @@ -522,10 +520,10 @@ QString SalomeApp_Study::newStudyName() const return newName; } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + \return list of files used by module: to be used by CORBAless modules + \param theModuleName - name of module +*/ std::vector SalomeApp_Study::GetListOfFiles( const char* theModuleName ) const { SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance(); @@ -536,10 +534,11 @@ std::vector SalomeApp_Study::GetListOfFiles( const char* theModuleN return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + Sets list of files used by module: to be used by CORBAless modules + \param theModuleName - name of module + \param theListOfFiles - list of files +*/ void SalomeApp_Study::SetListOfFiles ( const char* theModuleName, const std::vector theListOfFiles ) { @@ -548,10 +547,9 @@ void SalomeApp_Study::SetListOfFiles ( const char* theModuleName, aDefaultEngine->SetListOfFiles(theListOfFiles, id(), theModuleName); } -//================================================================ -// Function : GetTmpDir -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + \return temporary directory for saving files of modules +*/ std::string SalomeApp_Study::GetTmpDir ( const char* theURL, const bool isMultiFile ) { std::string anURLDir = SALOMEDS_Tool::GetDirFromPath(theURL); @@ -559,10 +557,9 @@ std::string SalomeApp_Study::GetTmpDir ( const char* theURL, const bool isMulti return aTmpDir; } -//================================================================ -// Function : RemoveTemporaryFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + Removes temporary files +*/ void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, const bool isMultiFile ) const { if (isMultiFile) @@ -582,8 +579,10 @@ void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, const bo } } -// END: methods to be used by CORBAless modules - +/*! + Deletes all references to object + \param obj - object +*/ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj ) { _PTR(StudyBuilder) sb = studyDS()->NewBuilder(); @@ -599,10 +598,10 @@ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj ) } } -//================================================================ -// Function : referencedToEntry -/*! Purpose : Return referenced entry from entry*/ -//================================================================ +/*! + \return real entry by entry of reference + \param entry - entry of reference object +*/ QString SalomeApp_Study::referencedToEntry( const QString& entry ) const { _PTR(SObject) obj = studyDS()->FindObjectID( entry.latin1() ); @@ -613,10 +612,9 @@ QString SalomeApp_Study::referencedToEntry( const QString& entry ) const return LightApp_Study::referencedToEntry( entry ); } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return component data type for entry +*/ QString SalomeApp_Study::componentDataType( const QString& entry ) const { _PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) ); @@ -625,20 +623,18 @@ QString SalomeApp_Study::componentDataType( const QString& entry ) const return obj->GetFatherComponent()->ComponentDataType().c_str(); } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return true if entry corresponds to component +*/ bool SalomeApp_Study::isComponent( const QString& entry ) const { _PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) ); return obj && QString( obj->GetID().c_str() ) == obj->GetFatherComponent()->GetID().c_str(); } -//================================================================ -// Function : children -/*! Purpose : Return entries of children of object*/ -//================================================================ +/*! + \return entries of object children +*/ void SalomeApp_Study::children( const QString& entry, QStringList& child_entries ) const { _PTR(SObject) SO = studyDS()->FindObjectID( entry.latin1() ); @@ -652,6 +648,10 @@ void SalomeApp_Study::children( const QString& entry, QStringList& child_entries } } +/*! + Fills list with components names + \param comp - list to be filled +*/ void SalomeApp_Study::components( QStringList& comps ) const { for( _PTR(SComponentIterator) it ( studyDS()->NewComponentIterator() ); it->More(); it->Next() ) @@ -663,11 +663,9 @@ void SalomeApp_Study::components( QStringList& comps ) const } } -//================================================================ -// Function : getSavePoints -/*! Purpose : returns a list of saved points' IDs +/*! + \return a list of saved points' IDs */ -//================================================================ std::vector SalomeApp_Study::getSavePoints() { std::vector v; @@ -687,11 +685,9 @@ std::vector SalomeApp_Study::getSavePoints() return v; } -//================================================================ -// Function :removeSavePoint -/*! Purpose : remove a given save point +/*! + Removes a given save point */ -//================================================================ void SalomeApp_Study::removeSavePoint(int savePoint) { if(savePoint <= 0) return; @@ -701,45 +697,37 @@ void SalomeApp_Study::removeSavePoint(int savePoint) builder->RemoveObjectWithChildren(so); } -//================================================================ -// Function : getNameOfSavePoint -/*! Purpose : returns a name of save point +/*! + \return a name of save point */ -//================================================================ QString SalomeApp_Study::getNameOfSavePoint(int savePoint) { _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint); - SALOMEDS_IParameters ip(AP); - return ip.getProperty("AP_SAVEPOINT_NAME").c_str(); + _PTR(IParameters) ip = ClientFactory::getIParameters(AP); + return ip->getProperty("AP_SAVEPOINT_NAME"); } -//================================================================ -// Function : setNameOfSavePoint -/*! Purpose : sets a name of save point +/*! + Sets a name of save point */ -//================================================================ void SalomeApp_Study::setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint) { _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint); - SALOMEDS_IParameters ip(AP); - ip.setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1()); + _PTR(IParameters) ip = ClientFactory::getIParameters(AP); + ip->setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1()); } -//================================================================ -// Function : getVisualComponentName -/*! Purpose : returns a name of the component where visual - * parameters are stored +/*! + \return a name of the component where visual parameters are stored */ -//================================================================ std::string SalomeApp_Study::getVisualComponentName() { return "Interface Applicative"; } -//================================================================ -// Function : updateModelRoot -/*! Purpose : slot called on change of a root of a data model. redefined from CAM_Study*/ -//================================================================ +/*! + Slot: called on change of a root of a data model. Redefined from CAM_Study +*/ void SalomeApp_Study::updateModelRoot( const CAM_DataModel* dm ) { LightApp_Study::updateModelRoot( dm ); diff --git a/src/SalomeApp/SalomeApp_VisualState.cxx b/src/SalomeApp/SalomeApp_VisualState.cxx index ffb35f74d..88a0b888c 100644 --- a/src/SalomeApp/SalomeApp_VisualState.cxx +++ b/src/SalomeApp/SalomeApp_VisualState.cxx @@ -31,7 +31,8 @@ #include #include -#include +#include +#include #include #include @@ -51,18 +52,16 @@ SalomeApp_VisualState::~SalomeApp_VisualState() { } -//================================================================ -// Function : nameViewWindows -/*! Purpose : set names of all view windows in given list. This is used -// in order to apply the same naming algorithm when saving and restoring -// view windows. Names of view windows must be the same before saving -// workstack (splitters) information, and before its restoring! -// Naming rule: ViewerType_IndexOfViewerOfThisType_IndexOfViewInThisViewer -// VTKViewer_0_0 -// OCCViewer_0_0 OCCViewer_0_1 OCCViewer_0_2 -// VTKViewer_1_0 +/*! + Sets names of all view windows in given list. This is used + in order to apply the same naming algorithm when saving and restoring + view windows. Names of view windows must be the same before saving + workstack (splitters) information, and before its restoring! + Naming rule: ViewerType_IndexOfViewerOfThisType_IndexOfViewInThisViewer + VTKViewer_0_0 + OCCViewer_0_0 OCCViewer_0_1 OCCViewer_0_2 + VTKViewer_1_0 */ -//================================================================ void nameViewWindows( const ViewManagerList& lst ) { QDict viewersCounter; // map viewerType - to - index_of_this_viewer_type @@ -89,11 +88,9 @@ void nameViewWindows( const ViewManagerList& lst ) } } -//================================================================ -// Function : storeState -/*! Purpose : store the visual parameters of the viewers +/*! + Stores the visual parameters of the viewers */ -//================================================================ int SalomeApp_VisualState::storeState() { SalomeApp_Study* study = dynamic_cast( myApp->activeStudy() ); @@ -107,7 +104,7 @@ int SalomeApp_VisualState::storeState() savePoint = savePoints[savePoints.size()-1] + 1; _PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName(), savePoint ); - SALOMEDS_IParameters ip( ap ); + _PTR(IParameters) ip = ClientFactory::getIParameters( ap ); ViewManagerList lst; myApp->viewManagers( lst ); @@ -120,7 +117,7 @@ int SalomeApp_VisualState::storeState() // store active window's name SUIT_ViewWindow* win = myApp->desktop()->activeWindow(); if ( win ) - ip.setProperty("AP_ACTIVE_VIEW", win->name() ); + ip->setProperty("AP_ACTIVE_VIEW", win->name() ); int viewerID = 0; SUIT_ViewManager* vm = 0; @@ -131,12 +128,12 @@ int SalomeApp_VisualState::storeState() continue; //No views is opened in the viewer std::string viewerEntry = QString( "%1_%2" ).arg( vm->getType() ).arg( ++viewerID ).latin1(); - ip.append("AP_VIEWERS_LIST", viewerEntry); + ip->append("AP_VIEWERS_LIST", viewerEntry); QPtrVector views = vm->getViews(); for(int i = 0; icaption().latin1() ); - ip.append( viewerEntry, views[i]->getVisualParameters().latin1() ); + ip->append( viewerEntry, views[i]->caption().latin1() ); + ip->append( viewerEntry, views[i]->getVisualParameters().latin1() ); } } @@ -145,12 +142,12 @@ int SalomeApp_VisualState::storeState() QtxWorkstack* workstack = ((STD_TabDesktop*)myApp->desktop())->workstack(); QString workstackInfo; (*workstack) >> workstackInfo; - ip.setProperty( "AP_WORKSTACK_INFO", workstackInfo.latin1() ); + ip->setProperty( "AP_WORKSTACK_INFO", workstackInfo.latin1() ); } //Save a name of the active module if ( CAM_Module* activeModule = myApp->activeModule() ) - ip.setProperty( "AP_ACTIVE_MODULE", activeModule->moduleName().latin1() ); + ip->setProperty( "AP_ACTIVE_MODULE", activeModule->moduleName().latin1() ); //Store visual parameters of the modules QPtrList mlist; @@ -158,7 +155,7 @@ int SalomeApp_VisualState::storeState() CAM_Module* module = 0; for ( module = mlist.first(); module; module = mlist.next() ) { if ( SalomeApp_Module* sModule = dynamic_cast( module ) ) { - ip.append( "AP_MODULES_LIST", sModule->moduleName().latin1() ); + ip->append( "AP_MODULES_LIST", sModule->moduleName().latin1() ); sModule->storeVisualParameters( savePoint ); } } @@ -169,11 +166,9 @@ int SalomeApp_VisualState::storeState() return savePoint; } -//================================================================ -// Function : restoreState -/*! Purpose : restore the visual parameters of the viewers +/*! + Restores the visual parameters of the viewers */ -//================================================================ void SalomeApp_VisualState::restoreState(int savePoint) { SalomeApp_Study* study = dynamic_cast( myApp->activeStudy() ); @@ -181,28 +176,32 @@ void SalomeApp_VisualState::restoreState(int savePoint) return; _PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName(), savePoint ); - SALOMEDS_IParameters ip(ap); + _PTR(IParameters) ip = ClientFactory::getIParameters(ap); //Remove all already existent veiwers and their views ViewManagerList lst; myApp->viewManagers( lst ); - for ( QPtrListIterator it(lst); it.current(); ++it ) + for ( QPtrListIterator it(lst); it.current(); ++it ) { myApp->removeViewManager( it.current() ); - + qApp->processEvents(); + } //Restore the viewers and view windows - int nbViewers = ip.nbValues( "AP_VIEWERS_LIST" ); + int nbViewers = ip->nbValues( "AP_VIEWERS_LIST" ); SUIT_ViewWindow* viewWin = 0; + // parameters of view windows are stored in a map for restoring after restoring of the workstack + QMap viewersParameters; + for ( int i = 0; i < nbViewers; i++ ) { - std::string viewerEntry = ip.getValue( "AP_VIEWERS_LIST", i ); - std::vector veiewerParams = ip.parseValue(viewerEntry,'_'); + std::string viewerEntry = ip->getValue( "AP_VIEWERS_LIST", i ); + std::vector veiewerParams = ip->parseValue(viewerEntry,'_'); std::string type = veiewerParams[0]; std::string viewerID = veiewerParams[1]; SUIT_ViewManager* vm = myApp->newViewManager( type.c_str() ); if ( !vm ) continue; //Unknown viewer - int nbViews = (ip.nbValues(viewerEntry))/2; + int nbViews = (ip->nbValues(viewerEntry))/2; //Create nbViews-1 view (-1 because 1 view is created by createViewManager) for ( int i = 1; i< nbViews; i++ ) { @@ -227,69 +226,80 @@ void SalomeApp_VisualState::restoreState(int savePoint) while ( !viewWin->isVisible() ) qApp->processEvents(); - viewWin->setCaption(ip.getValue(viewerEntry, j).c_str()); - viewWin->setVisualParameters(ip.getValue(viewerEntry, j+1).c_str()); + viewWin->setCaption(ip->getValue(viewerEntry, j).c_str()); + + // printf ( "VP for viewWin \"%s\": %s\n", viewerEntry.c_str(), ip->getValue(viewerEntry, j+1).c_str() ); + viewersParameters[ viewWin ] = ip->getValue(viewerEntry, j+1).c_str(); + //viewWin->setVisualParameters(ip->getValue(viewerEntry, j+1).c_str()); } } // restore modules' visual parameters - std::vector v = ip.getValues("AP_MODULES_LIST"); + std::vector v = ip->getValues("AP_MODULES_LIST"); for ( int i = 0; i < v.size(); i++ ) { myApp->activateModule( v[i].c_str() ); if ( SalomeApp_Module* module = dynamic_cast( myApp->activeModule() ) ) module->restoreVisualParameters( savePoint ); } + // new view windows may have been created in module->restoreVisualParameters() [GAUSS] + // so here we store their visual parameters for later restoring.. + lst.clear(); + myApp->viewManagers(lst); + QPtrListIterator it( lst ); + for ( ; it.current(); ++it ) { + int view_count = it.current()->getViewsCount(); + QPtrVector views = it.current()->getViews(); + for ( int i = 0; i < view_count; i++ ) { + if ( !viewersParameters.contains( views[i] ) ) { + viewersParameters[ views[i] ] = views[i]->getVisualParameters(); + // printf ( "store VP for viewWin \"%s\": %s\n", views[i]->name(), views[i]->getVisualParameters().latin1() ); + } + } + } + // activate module that was active on save - QString activeModuleName( ip.getProperty("AP_ACTIVE_MODULE" ).c_str() ); + QString activeModuleName( ip->getProperty("AP_ACTIVE_MODULE" ).c_str() ); if ( !activeModuleName.isEmpty() ) myApp->activateModule( activeModuleName ); // setting unique names for view windows in order to restore positions of view windows inside // workstack's structure (see below). During save the same naming algorithm was used, // so the same views will get the same names. - lst.clear(); - myApp->viewManagers(lst); nameViewWindows( lst ); - // work-around to bug of setting visual parameters of views: all view windows now have - // correct visual parameters, bug after restoring the workstack the visual parameters - // are messted, and must be re-set again. So here we store them in a map and set them - // later back again. why we don't store these parameters in a map on views creation? - // because 1) names of view windows are not set at that time 2) some view windows - // are created by modules' restoreVisualParameters (like Gauss Viewers), which is NOT here.. - QMap viewersParameters; - QPtrListIterator it( lst ); - for ( ; it.current(); ++it ) { - int view_count = it.current()->getViewsCount(); - QPtrVector views = it.current()->getViews(); - for ( int i = 0; i < view_count; i++ ) - viewersParameters[ views[i]->name() ] = views[i]->getVisualParameters(); - } - // restore workstack parameters. should be done after module's restoreVisualParameters(), because // some modules can create their own viewers (like VISU creates GaussViewers) if ( myApp->desktop()->inherits( "STD_TabDesktop" ) ) { QtxWorkstack* workstack = ((STD_TabDesktop*)myApp->desktop())->workstack(); - (*workstack) << ip.getProperty( "AP_WORKSTACK_INFO" ).c_str(); + (*workstack) << ip->getProperty( "AP_WORKSTACK_INFO" ).c_str(); } // restore visual parameters of view windows. it must be done AFTER restoring workstack. - for ( it.toFirst(); it.current(); ++it ) { - int view_count = it.current()->getViewsCount(); - QPtrVector views = it.current()->getViews(); - for ( int i = 0; i < view_count; i++ ) - views[i]->setVisualParameters( viewersParameters[ views[i]->name() ] ); + // also set active view + std::string activeViewName = ip->getProperty("AP_ACTIVE_VIEW"); + QMap::Iterator mapIt; + for ( mapIt = viewersParameters.begin(); mapIt != viewersParameters.end(); ++mapIt ) { + mapIt.key()->setVisualParameters( mapIt.data() ); + if ( activeViewName == mapIt.key()->name() ) + mapIt.key()->setFocus(); } + + // for ( it.toFirst(); it.current(); ++it ) { + // int view_count = it.current()->getViewsCount(); + // QPtrVector views = it.current()->getViews(); + // for ( int i = 0; i < view_count; i++ ) + // views[i]->setVisualParameters( viewersParameters[ views[i]->name() ] ); + // } // set focus to previously saved active view window - std::string activeViewName = ip.getProperty("AP_ACTIVE_VIEW"); - for ( it.toFirst(); it.current(); ++it ) { - int view_count = it.current()->getViewsCount(); - QPtrVector views = it.current()->getViews(); - for ( int i = 0; i < view_count; i++ ) { - if ( activeViewName == views[i]->name() ) - views[i]->setFocus(); - } - } + // std::string activeViewName = ip->getProperty("AP_ACTIVE_VIEW"); + // for ( it.toFirst(); it.current(); ++it ) { + // int view_count = it.current()->getViewsCount(); + // QPtrVector views = it.current()->getViews(); + // for ( int i = 0; i < view_count; i++ ) { + // if ( activeViewName == views[i]->name() ) + // views[i]->setFocus(); + // } + // } } diff --git a/src/SalomeApp/Test/Makefile.in b/src/SalomeApp/Test/Makefile.in index 93e6b8dcd..850cc4f5a 100644 --- a/src/SalomeApp/Test/Makefile.in +++ b/src/SalomeApp/Test/Makefile.in @@ -51,8 +51,8 @@ BIN_SRC = BIN_CLIENT_IDL = -CXXFLAGS += $ @CPPUNIT_INCLUDES@ -I${KERNEL_ROOT_DIR}/include/salome -CPPFLAGS += $ @CPPUNIT_INCLUDES@ -I${KERNEL_ROOT_DIR}/include/salome +CXXFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS) +CPPFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS) LIBS= @LIBS@ @CPPUNIT_LIBS@ diff --git a/src/SalomeApp/Test/TestSalomeApp.py b/src/SalomeApp/Test/TestSalomeApp.py index 03daaf27b..eed29fa56 100644 --- a/src/SalomeApp/Test/TestSalomeApp.py +++ b/src/SalomeApp/Test/TestSalomeApp.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# import sys, os,signal,string,commands import runSalome diff --git a/src/SalomeApp/resources/SalomeApp.xml b/src/SalomeApp/resources/SalomeApp.xml index 3fa77b587..c5dd443bc 100644 --- a/src/SalomeApp/resources/SalomeApp.xml +++ b/src/SalomeApp/resources/SalomeApp.xml @@ -1,12 +1,6 @@ -
    - - - - - -
    + @@ -23,10 +17,19 @@
    +
    +
    + + + + + +
    + @@ -40,241 +43,76 @@ - - - - - - - - - - - + - -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - - + +
    - - -
    - - +
    + + + + + +
    - - - - - - + + + + + + + +
    +
    + + +
    - - - - + + + + +
    - - - + + + +
    -
    - -
    - - - - - - - + + + + + + + +
    - - - + + + +
    -
    - - - +
    + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    + + +
    - -
    - - +
    + +
    diff --git a/src/SalomeApp/resources/SalomeApp_msg_en.po b/src/SalomeApp/resources/SalomeApp_msg_en.po index 0e484c4e9..9b177ac89 100644 --- a/src/SalomeApp/resources/SalomeApp_msg_en.po +++ b/src/SalomeApp/resources/SalomeApp_msg_en.po @@ -13,9 +13,6 @@ msgstr "" //======================================================================================= -msgid "BUT_OK" -msgstr "&OK" - msgid "BUT_NEW" msgstr "&New" @@ -25,9 +22,6 @@ msgstr "&Open" msgid "BUT_LOAD" msgstr "&Load" -msgid "BUT_CANCEL" -msgstr "&Cancel" - //======================================================================================= msgid "SalomeApp_Application::PYTHON_CONSOLE" @@ -46,7 +40,7 @@ msgid "SalomeApp_Application::TOT_DESK_FILE_SAVE_GUI_STATE" msgstr "Save GUI state" msgid "SalomeApp_Application::MEN_DESK_FILE_SAVE_GUI_STATE" -msgstr "Save GUI state..." +msgstr "Save GUI state" msgid "SalomeApp_Application::PRP_DESK_FILE_SAVE_GUI_STATE" msgstr "Saves current state of viewers, displayed objects, etc." diff --git a/src/Session/InquireServersQThread.cxx b/src/Session/InquireServersQThread.cxx index 3a4b9ddd6..b022744f7 100755 --- a/src/Session/InquireServersQThread.cxx +++ b/src/Session/InquireServersQThread.cxx @@ -49,6 +49,9 @@ using namespace std; #define MARGIN_SIZE 5 #define SPACING_SIZE 3 +/*! + Constructor +*/ InquireServersGUI::InquireServersGUI() : QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder | WType_TopLevel | WStyle_StaysOnTop | WX11BypassWM ) { @@ -137,6 +140,10 @@ InquireServersGUI::InquireServersGUI() myThread->start(); } +/*! + Sets pixmap of splash screen + \param pix - new pixmap +*/ void InquireServersGUI::setPixmap( QPixmap pix ) { if ( !pix.isNull() ) @@ -148,21 +155,28 @@ void InquireServersGUI::setPixmap( QPixmap pix ) } } +/*! + Destructor +*/ InquireServersGUI::~InquireServersGUI() { delete myThread; } +/*! + Gets parameters from qApp + \param _argc - variable to return number of arguments + \param _argv - variable to return array of arguments +*/ void InquireServersGUI::getArgs( int& _argc, char *** _argv) { _argc = qApp->argc(); *_argv = qApp->argv(); } -//================================================================================= -// function : ClickOnCancel() -// purpose : cancel loading of SALOME -//================================================================================= +/*! + Cancel loading of SALOME +*/ void InquireServersGUI::ClickOnCancel() { myThread->stop(); //it's necessary to stop asking servers @@ -170,6 +184,9 @@ void InquireServersGUI::ClickOnCancel() qApp->exit( 1 ); } +/*! + Custom event filter +*/ void InquireServersGUI::customEvent( QCustomEvent* pe ) { switch( pe->type() ) @@ -204,11 +221,17 @@ void InquireServersGUI::customEvent( QCustomEvent* pe ) } } +/*! + \return status of thread exit +*/ int InquireServersGUI::getExitStatus() { return myThread->getExitStatus(); } +/*! + Constructor +*/ InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) : receiver(r), myExitStatus(0) { @@ -258,6 +281,9 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) } } +/*! + The main loop of this thread +*/ void InquireServersQThread::run() { while ( IsChecking && receiver ) @@ -305,12 +331,18 @@ void InquireServersQThread::run() qApp->exit( myExitStatus ); } +/*! + Stops this thread +*/ void InquireServersQThread::stop() { IsChecking = false; myExitStatus = 1; } +/*! + Destructor +*/ InquireServersQThread::~InquireServersQThread() { } diff --git a/src/Session/InquireServersQThread.h b/src/Session/InquireServersQThread.h index b97bfd012..9aada570c 100755 --- a/src/Session/InquireServersQThread.h +++ b/src/Session/InquireServersQThread.h @@ -17,11 +17,10 @@ #define SALOME_WNT_EXPORT #endif -/********************************************************** -** Class: InquireEvent -** Descr: Contains QCustomEvents for posting to InquireServersQThread -** Level: Private -***********************************************************/ +/*! + \class InquireEvent + Contains QCustomEvents for posting to InquireServersQThread +*/ class SALOME_WNT_EXPORT InquireEvent : public QCustomEvent { public: diff --git a/src/Session/Makefile.in b/src/Session/Makefile.in index 22837fbc8..27974b91f 100755 --- a/src/Session/Makefile.in +++ b/src/Session/Makefile.in @@ -38,6 +38,7 @@ VPATH=.:@srcdir@:@top_srcdir@/idl EXPORT_HEADERS= Session_Session_i.hxx \ Session_ServerLauncher.hxx \ Session_ServerThread.hxx \ + Session_ServerCheck.hxx \ SalomeApp_Engine_i.hxx # Libraries targets @@ -46,10 +47,10 @@ LIB = libSalomeSession.la LIB_SRC=Session_Session_i.cxx \ Session_ServerThread.cxx \ Session_ServerLauncher.cxx \ + Session_ServerCheck.cxx \ SalomeApp_Engine_i.cxx \ - InquireServersQThread.cxx -LIB_MOC = InquireServersQThread.h +LIB_MOC = # Executables targets BIN = SALOME_Session_Server @@ -58,9 +59,9 @@ LIB_SERVER_IDL = SALOME_Session.idl SalomeApp_Engine.idl BIN_SERVER_IDL = BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Registry.idl SALOME_ModuleCatalog.idl SALOME_Exception.idl SALOME_GenericObj.idl -CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(OCC_INCLUDES) +CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -I$(OCC_INCLUDES) CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) -LDFLAGS += $(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lsuit -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lwith_loggerTraceCollector -lEvent -lSalomeCatalog -lSalomeDSClient $(CAS_KERNEL) +LDFLAGS += $(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lsuit -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lwith_loggerTraceCollector -lEvent -lSalomeCatalog -lSalomeDSClient $(CAS_KERNEL) LDFLAGSFORBIN= $(LDFLAGS) $(OMNIORB_LIBS) $(HDF5_LIBS) -lqtx -lSalomeContainer -lSalomeResourcesManager -lTOOLSDS -lSalomeHDFPersist -lSalomeDSImpl -lSalomeGenericObj -lRegistry -lSalomeNotification -lSALOMEBasics diff --git a/src/Session/SALOME_Session_Server.cxx b/src/Session/SALOME_Session_Server.cxx index dbc9e1633..55985e7ee 100755 --- a/src/Session/SALOME_Session_Server.cxx +++ b/src/Session/SALOME_Session_Server.cxx @@ -31,8 +31,6 @@ #include "SALOME_NamingService.hxx" #include "SALOMETraceCollector.hxx" -#include "InquireServersQThread.h" // splash - #include #ifndef WNT #include @@ -42,6 +40,7 @@ #include #include #include +#include #include "Utils_SALOME_Exception.hxx" #include "Utils_CorbaException.hxx" @@ -54,13 +53,15 @@ #include #include "Session_Session_i.hxx" #include "Session_ServerLauncher.hxx" +#include "Session_ServerCheck.hxx" +#include #include "SUIT_Tools.h" #include "SUIT_Session.h" #include "SUIT_Application.h" +#include "SUIT_Desktop.h" #include "SUIT_MessageBox.h" #include "SUIT_ResourceMgr.h" - #include "SUIT_ExceptionHandler.h" /*! - read arguments, define list of server to launch with their arguments. @@ -180,10 +181,39 @@ public: QString version() const { return myExtAppVersion; } protected: - QString userFileName( const QString& appName ) const + QString userFileName( const QString& appName, const bool for_load ) const { if ( version().isNull() ) return ""; - return SUIT_ResourceMgr::userFileName( myExtAppName ); + return SUIT_ResourceMgr::userFileName( myExtAppName, for_load ); + } + + virtual int userFileId( const QString& _fname ) const + { + QRegExp exp( "\\.SalomeApprc\\.([a-zA-Z0-9.]+)$" ); + QRegExp vers_exp( "^([0-9]+)([A-Za-z]?)([0-9]*)$" ); + + QString fname = QFileInfo( _fname ).fileName(); + if( exp.exactMatch( fname ) ) + { + QStringList vers = QStringList::split( ".", exp.cap( 1 ) ); + int major=0, minor=0; + major = vers[0].toInt(); + minor = vers[1].toInt(); + if( vers_exp.search( vers[2] )==-1 ) + return -1; + int release = 0, dev1 = 0, dev2 = 0; + release = vers_exp.cap( 1 ).toInt(); + dev1 = vers_exp.cap( 2 )[ 0 ].latin1(); + dev2 = vers_exp.cap( 3 ).toInt(); + + int dev = dev1*100+dev2, id = major; + id*=100; id+=minor; + id*=100; id+=release; + id*=10000; id+=dev; + return id; + } + + return -1; } public: @@ -231,7 +261,10 @@ private: class GetInterfaceThread : public QThread { public: - GetInterfaceThread( SALOME::Session_var s ) : session ( s ) {} + GetInterfaceThread( SALOME::Session_var s ) : session ( s ) + { + start(); + } protected: virtual void run() { @@ -256,19 +289,87 @@ bool isFound( const char* str, int argc, char** argv ) // ---------------------------- MAIN ----------------------- int main( int argc, char **argv ) { + // Install Qt debug messages handler qInstallMsgHandler( MessageOutput ); - - // QApplication should be create before all other operations - // When uses QApplication::libraryPaths() ( example, QFile::encodeName() ) - // qApp used for detection of the executable dir path. + + // Create Qt application instance; + // this should be done the very first! SALOME_QApplication _qappl( argc, argv ); ASSERT( QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) ) ); + // Add application library path (to search style plugin etc...) QString path = QDir::convertSeparators( SUIT_Tools::addSlash( QString( ::getenv( "GUI_ROOT_DIR" ) ) ) + QString( "bin/salome" ) ); _qappl.addLibraryPath( path ); + // Set SALOME style to the application _qappl.setStyle( "salome" ); + bool isGUI = isFound( "GUI", argc, argv ); + bool isSplash = isFound( "SPLASH", argc, argv ); + // Show splash screen (only if both the "GUI" and "SPLASH" parameters are set) + QtxSplash* splash = 0; + if ( isGUI && isSplash ) { + // ...create resource manager + SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) ); + resMgr.setCurrentFormat( "xml" ); + resMgr.loadLanguage( "LightApp", "en" ); + // ...get splash preferences + QString splashIcon, splashInfo, splashTextColors, splashProgressColors; + resMgr.value( "splash", "image", splashIcon ); + resMgr.value( "splash", "info", splashInfo, false ); + resMgr.value( "splash", "text_colors", splashTextColors ); + resMgr.value( "splash", "progress_colors", splashProgressColors ); + QPixmap px( splashIcon ); + if ( px.isNull() ) // try to get splash pixmap from resources + px = resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) ); + if ( !px.isNull() ) { + // ...set splash pixmap + splash = QtxSplash::splash( px ); + // ...set splash text colors + if ( !splashTextColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashTextColors ); + QColor c1, c2; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + splash->setTextColors( c1, c2 ); + } + else { + splash->setTextColors( Qt::white, Qt::black ); + } + // ...set splash progress colors + if ( !splashProgressColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashProgressColors ); + QColor c1, c2; + int gradType = QtxSplash::Vertical; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + if ( colors.count() > 2 ) gradType = colors[2].toInt(); + splash->setProgressColors( c1, c2, gradType ); + } + // ...set splash text font + QFont f = splash->font(); + f.setBold( true ); + splash->setFont( f ); + // ...show splash initial status + if ( !splashInfo.isEmpty() ) { + splashInfo.replace( QRegExp( "%A" ), QObject::tr( "APP_NAME" ) ); + splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( salomeVersion() ) ); + splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) ); + splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) ); + splashInfo.replace( QRegExp( "\\\\n" ), "\n" ); + splash->message( splashInfo ); + } + // ...set 'hide on click' flag +#ifdef _DEBUG_ + splash->setHideOnClick( true ); +#endif + // ...show splash + splash->show(); + qApp->processEvents(); + } + } + + // Initialization int result = -1; CORBA::ORB_var orb; @@ -280,29 +381,26 @@ int main( int argc, char **argv ) Session_ServerLauncher* myServerLauncher = 0; try { - - // Python initialisation : only once - - int _argc = 1; + // ...initialize Python (only once) + int _argc = 1; char* _argv[] = {""}; KERNEL_PYTHON::init_python( _argc,_argv ); PyEval_RestoreThread( KERNEL_PYTHON::_gtstate ); if ( !KERNEL_PYTHON::salome_shared_modules_module ) // import only once KERNEL_PYTHON::salome_shared_modules_module = PyImport_ImportModule( "salome_shared_modules" ); - if ( !KERNEL_PYTHON::salome_shared_modules_module ) - { + if ( !KERNEL_PYTHON::salome_shared_modules_module ) { INFOS( "salome_shared_modules_module == NULL" ); PyErr_Print(); } PyEval_ReleaseThread( KERNEL_PYTHON::_gtstate ); - // Create ORB, get RootPOA object, NamingService, etc. + // ...create ORB, get RootPOA object, NamingService, etc. ORB_INIT &init = *SINGLETON_::Instance(); ASSERT( SINGLETON_::IsAlreadyExisting() ); int orbArgc = 1; orb = init( orbArgc, argv ); - // Install SALOME thread event handler + // ...install SALOME thread event handler SALOME_Event::GetSessionThread(); CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); @@ -337,70 +435,67 @@ int main( int argc, char **argv ) INFOS( "Caught unknown exception." ); } - // CORBA Servant Launcher - QMutex _GUIMutex; - QWaitCondition _ServerLaunch, _SessionStarted; - - if ( !result ) - { - _GUIMutex.lock(); // to block Launch server thread until wait( mutex ) - - // Activate embedded CORBA servers: Registry, SALOMEDS, etc. - myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionStarted ); - myServerLauncher->start(); - - _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready: + QMutex _GUIMutex, _SessionMutex, _SplashMutex; + QWaitCondition _ServerLaunch, _SessionStarted, _SplashStarted; + + // lock session mutex to ensure that GetInterface is not called + // until all initialization is done + _SessionMutex.lock(); + + if ( !result ) { + // Start embedded servers launcher (Registry, SALOMEDS, etc.) + // ...lock mutex to block embedded servers launching thread until wait( mutex ) + _GUIMutex.lock(); + // ...create launcher + myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionMutex, &_SessionStarted ); + // ...block this thread until launcher is ready + _ServerLaunch.wait( &_GUIMutex ); - // show splash screen if "SPLASH" parameter was passed ( default ) - if ( isFound( "SPLASH", argc, argv ) ) - { - // create temporary resource manager just to load splash icon - SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) ); - resMgr.setCurrentFormat( "xml" ); - resMgr.loadLanguage( "LightApp", "en" ); - - // create splash object: widget ( splash with progress bar ) and "pinging" thread - InquireServersGUI splash; - splash.setPixmap( resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) ) ); - SUIT_Tools::centerWidget( &splash, _qappl.desktop() ); - - _qappl.setMainWidget( &splash ); - QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) ); - splash.show(); // display splash with running progress bar - _qappl.exec(); // wait untill splash closes ( progress runs till end or Cancel is pressed ) - - result = splash.getExitStatus(); // 1 is error + // Start servers check thread (splash) + if ( splash ) { + // ...lock mutex to block splash thread until wait( mutex ) + _SplashMutex.lock(); + // ...create servers checking thread + Session_ServerCheck sc( &_SplashMutex, &_SplashStarted ); + // ...block this thread until servers checking is finished + _SplashStarted.wait( &_SplashMutex ); + // ...unlock mutex 'cause it is no more needed + _SplashMutex.unlock(); + // get servers checking thread status + result = splash->error(); + QString info = splash->message().isEmpty() ? "%1" : QString( "%1\n%2" ).arg( splash->message() ); + splash->setStatus( info.arg( "Activating desktop..." ) ); } - else - _SessionStarted.wait(); - } - // call Session::GetInterface() if "GUI" parameter was passed ( default ) - if ( !result && isFound( "GUI", argc, argv ) ) - { - CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" ); - SALOME::Session_var session = SALOME::Session::_narrow( obj ) ; - ASSERT ( ! CORBA::is_nil( session ) ); - - INFOS( "Session activated, Launch IAPP..." ); - guiThread = new GetInterfaceThread( session ); - guiThread->start(); + // Finalize embedded servers launcher + // ...block this thread until launcher is finished + _ServerLaunch.wait( &_GUIMutex ); + // ...unlock mutex 'cause it is no more needed + _GUIMutex.unlock(); } - if ( !result ) - { + if ( !result ) { + // Launch GUI activator + if ( isGUI ) { + // ...retrieve Session interface reference + CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" ); + SALOME::Session_var session = SALOME::Session::_narrow( obj ) ; + ASSERT ( ! CORBA::is_nil( session ) ); + // ...create GUI launcher + INFOS( "Session activated, Launch IAPP..." ); + guiThread = new GetInterfaceThread( session ); + } // GUI activation // Allow multiple activation/deactivation of GUI - while ( true ) - { + while ( true ) { MESSAGE( "waiting wakeAll()" ); - _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready: + _SessionStarted.wait( &_SessionMutex ); // to be reseased by Launch server thread when ready: // atomic operation lock - unlock on mutex // unlock mutex: serverThread runs, calls _ServerLaunch->wakeAll() // this thread wakes up, and lock mutex - _GUIMutex.unlock(); + _SessionMutex.unlock(); // SUIT_Session creation aGUISession = new SALOME_Session(); @@ -415,7 +510,15 @@ int main( int argc, char **argv ) // aGUISession contains SalomeApp_ExceptionHandler // Run GUI loop MESSAGE( "run(): starting the main event loop" ); + + if ( splash ) + splash->finish( aGUIApp->desktop() ); + result = _qappl.exec(); + + if ( splash ) + delete splash; + splash = 0; if ( result == SUIT_Session::FROM_GUI ) // desktop is closed by user from GUI break; @@ -425,10 +528,13 @@ int main( int argc, char **argv ) aGUISession = 0; // Prepare _GUIMutex for a new GUI activation - _GUIMutex.lock(); + _SessionMutex.lock(); } } + // unlock Session mutex + _SessionMutex.unlock(); + if ( myServerLauncher ) myServerLauncher->KillAll(); // kill embedded servers diff --git a/src/Session/SalomeApp_Engine_i.cxx b/src/Session/SalomeApp_Engine_i.cxx index 27cc1cdd3..d23e815df 100644 --- a/src/Session/SalomeApp_Engine_i.cxx +++ b/src/Session/SalomeApp_Engine_i.cxx @@ -38,11 +38,17 @@ using namespace std; SalomeApp_Engine_i* SalomeApp_Engine_i::myInstance = NULL; +/*! + Constructor +*/ SalomeApp_Engine_i::SalomeApp_Engine_i() { myInstance = this; } +/*! + Destructor +*/ SalomeApp_Engine_i::~SalomeApp_Engine_i() { } @@ -163,6 +169,9 @@ void SalomeApp_Engine_i::SetListOfFiles (const ListOfFiles theListOfFiles, mapOfListOfFiles[componentName] = theListOfFiles; } +/*! + \return shared instance of engine +*/ SalomeApp_Engine_i* SalomeApp_Engine_i::GetInstance() { return myInstance; diff --git a/src/Session/Session_ServerCheck.cxx b/src/Session/Session_ServerCheck.cxx new file mode 100644 index 000000000..ac4c59c1b --- /dev/null +++ b/src/Session/Session_ServerCheck.cxx @@ -0,0 +1,509 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// +// File: Session_ServerCheck.cxx +// Author: Vadim SANDLER + +#include "Session_ServerCheck.hxx" +#include + +#include +#include CORBA_CLIENT_HEADER(SALOME_Session) +#include CORBA_CLIENT_HEADER(SALOME_Registry) +#include CORBA_CLIENT_HEADER(SALOMEDS) +#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog) +#include CORBA_CLIENT_HEADER(SALOME_Component) + +#include "Utils_ORB_INIT.hxx" +#include "Utils_SINGLETON.hxx" +#include "SALOME_NamingService.hxx" +#include "utilities.h" +#include "OpUtil.hxx" + +// Default settings +const int __DEFAULT__ATTEMPTS__ = 300; // number of checks attemtps + // can be overrided by CSF_RepeatServerRequest + // environment variable +const int __DEFAULT__DELAY__ = 100000; // delay between attempts (microseconds) + // can be overrided by CSF_DelayServerRequest + // environment variable + +/*! + Constructor +*/ +Session_ServerCheck::Session_ServerCheck( QMutex* mutex, QWaitCondition* wc ) + : QThread(), + myMutex( mutex ), + myWC( wc ), + myCheckCppContainer( false ), + myCheckPyContainer( false ), + myCheckSVContainer( false ), + myAttempts( __DEFAULT__ATTEMPTS__ ), + myDelay ( __DEFAULT__DELAY__ ) +{ + char* cenv; + // try to get nb of attempts from environment variable + if ( ( cenv = getenv( "CSF_RepeatServerRequest" ) ) && atoi( cenv ) > 0 ) + myAttempts = atoi( cenv ); + // try to get delay between attempts from environment variable + if ( ( cenv = getenv( "CSF_DelayServerRequest" ) ) && atoi( cenv ) > 0 ) + myDelay = atoi( cenv ); + + // check if it is necessary to wait containers + for ( int i = 1; i < qApp->argc(); i++ ) { + if ( !strcmp( qApp->argv()[i], "CPP" ) ) + myCheckCppContainer = true; + if ( !strcmp( qApp->argv()[i], "PY" ) ) + myCheckPyContainer = true; + if ( !strcmp( qApp->argv()[i], "SUPERV" ) ) + myCheckSVContainer = true; + } + + // start thread + start(); +} + +/*! + Destructor +*/ +Session_ServerCheck::~Session_ServerCheck() +{ +} + +/*! + Thread loop. Checnk SALOME servers and shows status message + in the splash screen. +*/ +void Session_ServerCheck::run() +{ + // automatic locker + class Locker + { + public: + QMutex* _m; + QWaitCondition* _wc; + Locker( QMutex* m, QWaitCondition* wc ) : _m( m ), _wc( wc ) + { + _m->lock(); + _m->unlock(); + } + ~Locker() + { + _wc->wakeAll(); + } + }; + + // lock mutex (ensure splash is shown) + Locker locker( myMutex, myWC ); + + // set initial splash status + QtxSplash* splash = QtxSplash::splash(); + + int cnt = 5; // base servers + if ( myCheckCppContainer ) cnt++; // + C++ container + if ( myCheckPyContainer ) cnt++; // + Python container + if ( myCheckSVContainer ) cnt++; // + supervision container + + splash->setProgress( 0, cnt * myAttempts ); + QString initialInfo = splash->message(); + QString info = initialInfo.isEmpty() ? "%1" : QString( "%1\n%2" ).arg( initialInfo ); + + // start check servers + int i; + int current = 0; + bool bOk; + QString error; + int argc = qApp->argc(); + char** argv = qApp->argv(); + + // 1. Check naming service + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for naming service..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + CORBA::Object_var obj = orb->resolve_initial_references( "NameService" ); + CosNaming::NamingContext_var _root_context = CosNaming::NamingContext::_narrow( obj ); + if ( !CORBA::is_nil( _root_context ) ) { + bOk = true; + break; + } + } + catch( CORBA::COMM_FAILURE& ) { + MESSAGE( "CORBA::COMM_FAILURE: unable to contact the naming service" ); + } + catch( ... ) { + MESSAGE( "Unknown Exception: unable to contact the naming service" ); + } + } + if ( !bOk ) { + QtxSplash::error( "Unable to contact the naming service.\n%1" ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for naming service...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + + // 2. Check registry server + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for registry server..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + CORBA::Object_var obj = NS.Resolve( "/Registry" ); + Registry::Components_var registry = Registry::Components::_narrow( obj ); + if ( !CORBA::is_nil( registry ) ) { + MESSAGE( "/Registry is found" ); + registry->ping(); + MESSAGE( "Registry was activated" ); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Registry server is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for registry server...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + + // 3. Check data server + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for study server..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + CORBA::Object_var obj = NS.Resolve( "/myStudyManager" ); + SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow( obj ); + if ( !CORBA::is_nil( studyManager ) ) { + MESSAGE( "/myStudyManager is found" ); + studyManager->ping(); + MESSAGE( "StudyManager was activated" ); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Study server is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for study server...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + + // 4. Check module catalogue server + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for module catalogue server..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + CORBA::Object_var obj = NS.Resolve( "/Kernel/ModulCatalog" ); + SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow( obj ); + if ( !CORBA::is_nil( catalog ) ){ + MESSAGE( "/Kernel/ModulCatalog is found" ); + catalog->ping(); + MESSAGE( "ModuleCatalog was activated" ); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Module catalogue server is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for module catalogue server...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + + // 5. Check data server + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for session server..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + CORBA::Object_var obj = NS.Resolve( "/Kernel/Session" ); + SALOME::Session_var session = SALOME::Session::_narrow( obj ); + if ( !CORBA::is_nil( session ) ) { + MESSAGE( "/Kernel/Session is found" ); + session->ping(); + MESSAGE( "SALOME_Session was activated" ); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Session server is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for session server...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + + // 6. Check C++ container + if ( myCheckCppContainer ) { + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for C++ container..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + QString containerName = QString( "/Containers/%1/FactoryServer" ).arg( GetHostname() ); + CORBA::Object_var obj = NS.Resolve( containerName.latin1() ); + Engines::Container_var FScontainer = Engines::Container::_narrow( obj ); + if ( !CORBA::is_nil( FScontainer ) ) { + MESSAGE( containerName.latin1() << " is found" ); + FScontainer->ping(); + MESSAGE( "FactoryServer container was activated" ); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "C++ container is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for C++ container...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + } + + // 7. Check Python container + if ( myCheckPyContainer ) { + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for Python container..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + QString containerName = QString( "/Containers/%1/FactoryServerPy" ).arg( GetHostname() ); + CORBA::Object_var obj = NS.Resolve( containerName.latin1() ); + Engines::Container_var FSPcontainer = Engines::Container::_narrow( obj ); + if ( !CORBA::is_nil( FSPcontainer ) ) { + MESSAGE( containerName.latin1() << " is found" ); + FSPcontainer->ping(); + MESSAGE("FactoryServerPy container was activated"); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Python container is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for Python container...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + } + + // 8. Check supervision container + if ( myCheckSVContainer ) { + bOk = false; + for ( i = 0; i < myAttempts ; i++ ) { + QtxSplash::setStatus( info.arg( "Waiting for Supervision container..." ), current * myAttempts + i ); + QThread::usleep( i == 0 ? 500000 : myDelay ); + try { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + SALOME_NamingService &NS = *SINGLETON_::Instance(); + ASSERT( SINGLETON_::IsAlreadyExisting() ); + NS.init_orb( orb ); + QString containerName = QString( "/Containers/%1/SuperVisionContainer" ).arg( GetHostname() ); + CORBA::Object_var obj = NS.Resolve( containerName.latin1() ); + Engines::Container_var SVcontainer = Engines::Container::_narrow( obj ); + if ( !CORBA::is_nil( SVcontainer ) ) { + MESSAGE( containerName.latin1() << " is found" ); + SVcontainer->ping(); + MESSAGE("SuperVisionContainer container was activated"); + bOk = true; + break; + } + } + catch ( ServiceUnreachable& ) { + MESSAGE( "Caught exception: Naming Service unreachable." ); + error = "Naming service unreachable"; + } + catch ( CORBA::COMM_FAILURE& ) { + MESSAGE( "Caught CORBA::SystemException CommFailure." ); + error = "Caught CORBA::SystemException CommFailure."; + } + catch ( CORBA::SystemException& ) { + MESSAGE( "Caught CORBA::SystemException." ); + error = "Caught CORBA::SystemException."; + } + catch ( CORBA::Exception& ) { + MESSAGE( "Caught CORBA::Exception." ); + error = "Caught CORBA::Exception."; + } + catch (...) { + MESSAGE( "Caught unknown exception." ); + error = "Caught unknown exception."; + } + } + if ( !bOk ) { + QtxSplash::error( QString( "Supervision container is not found.\n%1" ).arg ( error ) ); + return; + } + QtxSplash::setStatus( info.arg( "Waiting for Supervision container...OK" ), ++current * myAttempts ); + QThread::usleep( 300000 ); + } + // clear splash status + splash->setProgress( 0, 0 ); + splash->setStatus( initialInfo ); +} diff --git a/src/Session/Session_ServerCheck.hxx b/src/Session/Session_ServerCheck.hxx new file mode 100644 index 000000000..e4d7a83d4 --- /dev/null +++ b/src/Session/Session_ServerCheck.hxx @@ -0,0 +1,62 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// +// File: Session_ServerCheck.hxx +// Author: Vadim SANDLER + +#if !defined(SESSION_SERVERCHECK_HXX) +#define SESSION_SERVERCHECK_HXX + +#ifdef WNT +#include +#else +#define SALOME_WNT_EXPORT +#endif + +#include +#include + +class QMutex; +class QWaitCondition; + +/*! + Class Session_ServerCheck : check SALOME servers +*/ +class SALOME_WNT_EXPORT Session_ServerCheck : public QThread +{ +public: + // constructor + Session_ServerCheck( QMutex*, QWaitCondition* ); + // destructor + virtual ~Session_ServerCheck(); + + // thread loop + virtual void run() ; + +private: + QMutex* myMutex; // splash mutex + QWaitCondition* myWC; // splash wait condition + + bool myCheckCppContainer; // flag : check C++ container ? + bool myCheckPyContainer; // flag : check Python container ? + bool myCheckSVContainer; // flag : check supervision container ? + int myAttempts; // number of checks attemtps to get response from server + int myDelay; // delay between two attempts in microseconds +}; + +#endif diff --git a/src/Session/Session_ServerLauncher.cxx b/src/Session/Session_ServerLauncher.cxx index b15f682a5..b73bebeab 100755 --- a/src/Session/Session_ServerLauncher.cxx +++ b/src/Session/Session_ServerLauncher.cxx @@ -31,29 +31,24 @@ #include "Utils_SALOME_Exception.hxx" #include "utilities.h" using namespace std; -//============================================================================= /*! - * default constructor not for use + default constructor not for use */ -//============================================================================= - Session_ServerLauncher::Session_ServerLauncher() { ASSERT(0); // must not be called } -//============================================================================= /*! - * constructor - */ -//============================================================================= - + constructor +*/ Session_ServerLauncher::Session_ServerLauncher(int argc, char ** argv, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, QMutex *GUIMutex, QWaitCondition *ServerLaunch, + QMutex *SessionMutex, QWaitCondition *SessionStarted) { _argc = argc; @@ -62,45 +57,51 @@ Session_ServerLauncher::Session_ServerLauncher(int argc, _root_poa = PortableServer::POA::_duplicate(poa); _GUIMutex = GUIMutex; _ServerLaunch = ServerLaunch; + _SessionMutex = SessionMutex; _SessionStarted = SessionStarted; + + // start thread + start(); } -//============================================================================= /*! - * destructor - */ -//============================================================================= - + destructor +*/ Session_ServerLauncher::~Session_ServerLauncher() { } -//============================================================================= /*! - * Check args and activate servers - */ -//============================================================================= - + Check args and activate servers +*/ void Session_ServerLauncher::run() { - _GUIMutex->lock(); // lock released by calling thread when ready: wait(mutex) - _GUIMutex->unlock(); + // wait until main thread is ready + _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread + // wait condition's wait(mutex) + _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed + + // wake main thread _ServerLaunch->wakeAll(); CheckArgs(); ActivateAll(); - _SessionStarted->wakeAll(); // wake main thread + // wait until main thread is ready + _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread + // wait condition's wait(mutex) + _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed - _orb->run(); // this thread wait, during omniORB process events + // wake main thread + _ServerLaunch->wakeAll(); + + // run ORB + _orb->run(); // this thread waits, during omniORB process events } -//============================================================================= /*! - * controls and dispatchs arguments given with command - */ -//============================================================================= - + controls and dispatchs arguments given with command +*/ void Session_ServerLauncher::CheckArgs() { int argState = 0; @@ -175,12 +176,6 @@ void Session_ServerLauncher::CheckArgs() throw SALOME_Exception(LOCALIZED("Error in command arguments, missing parenthesis ')'")); } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerLauncher::ActivateAll() { list::iterator itServ; @@ -201,7 +196,7 @@ void Session_ServerLauncher::ActivateAll() std::cout << "*** activating [" << argc << "] : " << argv[0] << std::endl; Session_ServerThread* aServerThread - = new Session_ServerThread(argc, argv, _orb,_root_poa,_GUIMutex); + = new Session_ServerThread(argc, argv, _orb,_root_poa); _serverThreads.push_front(aServerThread); aServerThread->Init(); @@ -214,18 +209,15 @@ void Session_ServerLauncher::ActivateAll() char** argv = new char*[argc]; argv[0] = "Session"; Session_SessionThread* aServerThread - = new Session_SessionThread(argc, argv, _orb,_root_poa,_GUIMutex,_ServerLaunch); + = new Session_SessionThread(argc, argv, _orb,_root_poa,_SessionMutex,_SessionStarted); _serverThreads.push_front(aServerThread); aServerThread->Init(); } -//============================================================================= /*! - * Destruction des classes serveur dans l'ordre inverse de creation - */ -//============================================================================= - + Destruction des classes serveur dans l'ordre inverse de creation +*/ void Session_ServerLauncher::KillAll() { MESSAGE("Session_ServerLauncher::KillAll()"); diff --git a/src/Session/Session_ServerLauncher.hxx b/src/Session/Session_ServerLauncher.hxx index 8791b6698..7c97199fe 100755 --- a/src/Session/Session_ServerLauncher.hxx +++ b/src/Session/Session_ServerLauncher.hxx @@ -70,6 +70,7 @@ public: PortableServer::POA_ptr poa, QMutex *GUIMutex, QWaitCondition *ServerLaunch, + QMutex *SessionMutex, QWaitCondition *SessionStarted); virtual ~Session_ServerLauncher(); void run(); @@ -82,13 +83,14 @@ protected: private: int _argc; char ** _argv; - CORBA::ORB_var _orb; - PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; - QWaitCondition *_ServerLaunch; - QWaitCondition *_SessionStarted; - list _argServToLaunch; - vector _argCopy; + CORBA::ORB_var _orb; + PortableServer::POA_var _root_poa; + QMutex* _GUIMutex; + QWaitCondition* _ServerLaunch; + QMutex* _SessionMutex; + QWaitCondition* _SessionStarted; + list _argServToLaunch; + vector _argCopy; list _serverThreads; }; diff --git a/src/Session/Session_ServerThread.cxx b/src/Session/Session_ServerThread.cxx index a0d00d9ea..9538b4de2 100755 --- a/src/Session/Session_ServerThread.cxx +++ b/src/Session/Session_ServerThread.cxx @@ -62,58 +62,44 @@ const char* Session_ServerThread::_serverTypes[NB_SRV_TYP] = {"Container", "SalomeAppEngine", "ContainerManager"}; -//============================================================================= /*! - * default constructor not for use - */ -//============================================================================= - + default constructor not for use +*/ Session_ServerThread::Session_ServerThread() { ASSERT(0); // must not be called } -//============================================================================= /*! - * constructor - */ -//============================================================================= - + constructor +*/ Session_ServerThread::Session_ServerThread(int argc, char ** argv, CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex) + PortableServer::POA_ptr poa) { //MESSAGE("Session_ServerThread Constructor " << argv[0]); _argc = argc; _argv = argv; _orb = CORBA::ORB::_duplicate(orb); _root_poa = PortableServer::POA::_duplicate(poa); - _GUIMutex = GUIMutex; _servType =-1; _NS = new SALOME_NamingService(_orb); // one instance per server to limit // multi thread coherence problems } -//============================================================================= /*! - * destructor - */ -//============================================================================= - + destructor +*/ Session_ServerThread::~Session_ServerThread() { //MESSAGE("~Session_ServerThread "<< _argv[0]); } -//============================================================================= /*! - * run the thread : activate one servant, the servant type is given by - * argument _argv[0] - */ -//============================================================================= - + run the thread : activate one servant, the servant type is given by + argument _argv[0] +*/ void Session_ServerThread::Init() { MESSAGE("Session_ServerThread::Init "<< _argv[0]); @@ -186,12 +172,6 @@ void Session_ServerThread::Init() } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateModuleCatalog(int argc, char ** argv) { @@ -231,12 +211,6 @@ void Session_ServerThread::ActivateModuleCatalog(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateSALOMEDS(int argc, char ** argv) { @@ -270,12 +244,6 @@ void Session_ServerThread::ActivateSALOMEDS(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateRegistry(int argc, char ** argv) { @@ -332,12 +300,6 @@ void Session_ServerThread::ActivateRegistry(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainerManager(int argc, char ** argv) { @@ -370,12 +332,6 @@ void Session_ServerThread::ActivateContainerManager(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainer(int argc, char ** argv) { @@ -460,12 +416,6 @@ void Session_ServerThread::ActivateContainer(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/) { try @@ -493,29 +443,30 @@ void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/) } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateSession(int argc, char ** argv) { MESSAGE("Session_ServerThread::ActivateSession() not implemented!"); } +/*! + constructor +*/ Session_SessionThread::Session_SessionThread(int argc, char** argv, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, QMutex* GUIMutex, QWaitCondition* GUILauncher) -: Session_ServerThread(argc, argv, orb, poa, GUIMutex), +: Session_ServerThread(argc, argv, orb, poa), + _GUIMutex( GUIMutex ), _GUILauncher( GUILauncher ) { } +/*! + destructor +*/ Session_SessionThread::~Session_SessionThread() { } diff --git a/src/Session/Session_ServerThread.hxx b/src/Session/Session_ServerThread.hxx index a10ab0ce6..de87612ed 100755 --- a/src/Session/Session_ServerThread.hxx +++ b/src/Session/Session_ServerThread.hxx @@ -50,8 +50,7 @@ public: Session_ServerThread(int argc, char ** argv, CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex); + PortableServer::POA_ptr poa); virtual ~Session_ServerThread(); void Init(); protected: @@ -68,7 +67,6 @@ protected: int _servType; CORBA::ORB_var _orb; PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; SALOME_NamingService * _NS; }; @@ -88,6 +86,7 @@ public: protected: virtual void ActivateSession ( int argc, char ** argv ); private: + QMutex* _GUIMutex; QWaitCondition* _GUILauncher; }; diff --git a/src/Session/Session_Session_i.cxx b/src/Session/Session_Session_i.cxx index 1a9662eea..1e337b035 100755 --- a/src/Session/Session_Session_i.cxx +++ b/src/Session/Session_Session_i.cxx @@ -45,12 +45,9 @@ using namespace std; -//============================================================================= -/*! SALOME_Session_i - * constructor - */ -//============================================================================= - +/*! + constructor +*/ SALOME_Session_i::SALOME_Session_i(int argc, char ** argv, CORBA::ORB_ptr orb, @@ -69,12 +66,9 @@ SALOME_Session_i::SALOME_Session_i(int argc, //MESSAGE("constructor end"); } -//============================================================================= -/*! GetVisuComponent - * returns Visu component - */ -//============================================================================= - +/*! + returns Visu component +*/ Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName) { typedef Engines::Component_ptr TGetImpl(CORBA::ORB_ptr, @@ -87,24 +81,18 @@ Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName return Engines::Component::_nil(); } -//============================================================================= -/*! ~SALOME_Session_i - * destructor - */ -//============================================================================= - +/*! + destructor +*/ SALOME_Session_i::~SALOME_Session_i() { //MESSAGE("destructor end"); } -//============================================================================= -/*! NSregister - * tries to find the Corba Naming Service and to register the session, - * gives naming service interface to _IAPPThread - */ -//============================================================================= - +/*! + tries to find the Corba Naming Service and to register the session, + gives naming service interface to _IAPPThread +*/ void SALOME_Session_i::NSregister() { SALOME::Session_ptr pSession = SALOME::Session::_narrow(_this()); @@ -125,13 +113,10 @@ void SALOME_Session_i::NSregister() //MESSAGE("Session registered in Naming Service"); } -//============================================================================= -/*! GetInterface - * Launches the GUI if there is none. - * The Corba method is oneway (corba client does'nt wait for GUI completion) - */ -//============================================================================= - +/*! + Launches the GUI if there is none. + The Corba method is oneway (corba client does'nt wait for GUI completion) +*/ void SALOME_Session_i::GetInterface() { _GUIMutex->lock(); @@ -143,11 +128,9 @@ void SALOME_Session_i::GetInterface() } } -//============================================================================= -/*! StopSession - * Kills the session if there are no active studies nore GUI - */ -//============================================================================= +/*! + Kills the session if there are no active studies nore GUI +*/ class CloseEvent : public SALOME_Event { public: @@ -159,18 +142,18 @@ public: } }; +/*! + Processes event to close session +*/ void SALOME_Session_i::StopSession() { ProcessVoidEvent( new CloseEvent() ); } -//============================================================================= -/*! StatSession - * Send a SALOME::StatSession structure (see idl) to the client - * (number of running studies and presence of GUI) - */ -//============================================================================= - +/*! + Send a SALOME::StatSession structure (see idl) to the client + (number of running studies and presence of GUI) +*/ class QtLock { public: @@ -209,7 +192,8 @@ CORBA::Long SALOME_Session_i::GetActiveStudyId() { long aStudyId=-1; if ( SUIT_Session::session() && SUIT_Session::session()->activeApplication() ) { - aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id(); + if ( SUIT_Session::session()->activeApplication()->activeStudy() ) // mkr : IPAL12128 + aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id(); } return aStudyId; } diff --git a/src/Style/Makefile.in b/src/Style/Makefile.in index 1c79d2891..a7ffaf27f 100644 --- a/src/Style/Makefile.in +++ b/src/Style/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : SalomeApp @@ -55,7 +73,7 @@ $(INSTALL_PLUGINDIR): mkdir -p $@ $(INSTALL_COPYLIB): - (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib/salome/%.so, $(filter %.la, $(LIB))) $@) || true + (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.la, $(LIB))) $@) || true @CONCLUDE@ diff --git a/src/Style/SalomeStyle.cxx b/src/Style/SalomeStyle.cxx index 8126eb8ec..a7f0479f5 100644 --- a/src/Style/SalomeStyle.cxx +++ b/src/Style/SalomeStyle.cxx @@ -129,16 +129,25 @@ static const char* const minimize_xpm[] = { Descr: Style for SALOME platform */ +/*! + Constructor +*/ SalomeStyle::SalomeStyle() : myTitleParent( 0 ) { qApp->installEventFilter( this ); } +/*! + Destructor +*/ SalomeStyle::~SalomeStyle() { } +/*! + Delayed initialization of style +*/ void SalomeStyle::polish( QWidget* w ) { if ( !w ) @@ -182,6 +191,9 @@ void SalomeStyle::polish( QWidget* w ) PARENT_STYLE::polish( w ); } +/*! + Custom event filter +*/ bool SalomeStyle::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == QEvent::FocusIn || e->type() == QEvent::FocusOut ) @@ -223,6 +235,12 @@ double linear( double x ) return x; } +/*! + Mixes two colors, part of first is 1-t, part of second is t + \param t - part parameter + \param c1, c2 - colors + \param res - result color +*/ void SalomeStyle::mix( const double t, const QColor& c1, const QColor& c2, QColor& res ) { if( t<0.0 || t>1.0 ) @@ -234,6 +252,11 @@ void SalomeStyle::mix( const double t, const QColor& c1, const QColor& c2, QColo res.setRgb( r, g, b ); } +/*! + Mixes two colors, part of first is 1-t, part of second is t + \param t - part parameter + \param rgb1, rgb2 - colors (result is stored in rgb1) +*/ void SalomeStyle::mix( const double t, QRgb& rgb1, const QRgb& rgb2 ) { if( t<0.0 || t>1.0 ) @@ -247,6 +270,12 @@ void SalomeStyle::mix( const double t, QRgb& rgb1, const QRgb& rgb2 ) rgb1 = qRgba( c[0][0], c[0][1], c[0][2], qAlpha( rgb1 ) ); } +/*! + Mixes colors of pixmap points with other color + \param t - part parameter + \param pix - pixmap to be processed + \param col - other color +*/ void SalomeStyle::mix( const double t, QPixmap& pix, const QColor& col ) { if( t<0.0 || t>1.0 ) @@ -277,6 +306,11 @@ void SalomeStyle::mix( const double t, QPixmap& pix, const QColor& col ) pix = anImage; } +/*! + Converts pixmap to grayscale + \param pix - pixmap to be processed + \param k - factor (gray value after conversion will be multiplied on it and truncated by 255.0) +*/ void SalomeStyle::toGrayscale( QPixmap& pix, double k ) { QImage anImage = pix.convertToImage(); @@ -306,6 +340,14 @@ void SalomeStyle::toGrayscale( QPixmap& pix, double k ) pix = anImage; } +/*! + Draws gradient filling + \param p - painter + \param r - rect + \param c1, c2 - two colors of gradient + \param d - direction of gradient + \param f - gradient function (maps co-ordinate to part parameter) +*/ void SalomeStyle::drawGradient( QPainter* p, const QRect& r, const QColor& c1, const QColor& c2, const Direction d, gradient_func f ) const @@ -338,6 +380,15 @@ void SalomeStyle::drawGradient( QPainter* p, const QRect& r, p->restore(); } +/*! + Draws primitive element + \param pe - type of primitive element + \param p - painter + \param r - rect + \param cg - group of colors + \param flags - is used to control how the PrimitiveElement is drawn + \param opt - can be used to control how various PrimitiveElements are drawn +*/ void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect& r, const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const { @@ -551,6 +602,16 @@ void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect& } } +/*! + Draws control element + \param element - type of control element + \param p - painter + \param widget - widget + \param r - rect + \param cg - group of colors + \param flags - is used to control how the element is drawn + \param opt - can be used to control how various elements are drawn +*/ void SalomeStyle::drawControl( ControlElement element, QPainter* p, const QWidget* widget, const QRect& r, const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const { @@ -1058,6 +1119,11 @@ void SalomeStyle::drawControl( ControlElement element, QPainter* p, const QWidge } } +/*! + \return the sub-area for the widget in logical coordinates + \param subrect - type of sub area + \param w - widget +*/ QRect SalomeStyle::subRect( SubRect subrect, const QWidget* w ) const { QRect r = PARENT_STYLE::subRect( subrect, w ); @@ -1076,6 +1142,16 @@ QRect SalomeStyle::subRect( SubRect subrect, const QWidget* w ) const return r; } +/*! + Draws the ComplexControl + \param control - type of complex control element + \param p - painter + \param widget - widget + \param r - rect + \param cg - group of colors + \param flags, controls, active - is used to control how the element is drawn + \param opt - can be used to control how various elements are drawn +*/ void SalomeStyle::drawComplexControl( ComplexControl control, QPainter* p, const QWidget* widget, const QRect& r, const QColorGroup& cg, SFlags flags, SCFlags controls, SCFlags active, const QStyleOption& opt ) const @@ -1127,6 +1203,12 @@ void SalomeStyle::drawComplexControl( ComplexControl control, QPainter* p, const } } +/*! + \return pixmap by type + \param st - type of pixmap + \param w - widget + \param opt - style option flags +*/ QPixmap SalomeStyle::stylePixmap( StylePixmap st, const QWidget* w, const QStyleOption& opt ) const { switch ( st ) @@ -1145,6 +1227,11 @@ QPixmap SalomeStyle::stylePixmap( StylePixmap st, const QWidget* w, const QStyle } } +/*! + \return the pixel size + \param pm - type of pixel metrics + \param widget - widget +*/ int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const { int ret = 0; @@ -1186,6 +1273,12 @@ int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const return ret; } +/*! + \return corrected title text + \param txt - title text + \param w - possible width + \param fm - font metrics +*/ QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetrics& fm ) const { QString res = txt.stripWhiteSpace(); @@ -1205,22 +1298,31 @@ QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetr /*! Class: SalomeStylePlugin [Internal] - Descr: Plugin for Qt style mechanism + Constructor */ - SalomeStylePlugin::SalomeStylePlugin() { } +/*! + Destructor +*/ SalomeStylePlugin::~SalomeStylePlugin() { } +/*! + \return keys of styles of plugin +*/ QStringList SalomeStylePlugin::keys() const { return QStringList() << "salome"; } +/*! + \return just created style + \param str - style key +*/ QStyle* SalomeStylePlugin::create( const QString& str ) { if ( str == "salome" ) diff --git a/src/TOOLSGUI/Makefile.in b/src/TOOLSGUI/Makefile.in index e8e183e7f..f90f432e3 100755 --- a/src/TOOLSGUI/Makefile.in +++ b/src/TOOLSGUI/Makefile.in @@ -57,10 +57,10 @@ LIB_MOC = ToolsGUI_CatalogGeneratorDlg.h \ LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) +CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil +LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil @CONCLUDE@ diff --git a/src/TOOLSGUI/ToolsGUI.cxx b/src/TOOLSGUI/ToolsGUI.cxx index ac2ca02a7..f83f45111 100755 --- a/src/TOOLSGUI/ToolsGUI.cxx +++ b/src/TOOLSGUI/ToolsGUI.cxx @@ -28,10 +28,9 @@ #include "ToolsGUI.h" -//======================================================================= -// name : GetVisibility -// Purpose : Verify whether object is visible or not -//======================================================================= +/*! + \return true if object is visible +*/ bool ToolsGUI::GetVisibility( _PTR(Study) theStudy, _PTR(SObject) theObj, void* theId ) @@ -46,10 +45,13 @@ bool ToolsGUI::GetVisibility( _PTR(Study) theStudy, return false; } -//======================================================================= -// name : SetVisibility -// Purpose : Set flag visibility of object -//======================================================================= +/*! + Set flag visibility of object + \param theStudy - study + \param theEntry - entry + \param theValue - flag visibility + \param theId - id +*/ bool ToolsGUI::SetVisibility( _PTR(Study) theStudy, const char* theEntry, const bool theValue, @@ -77,8 +79,3 @@ bool ToolsGUI::SetVisibility( _PTR(Study) theStudy, return false; } - - - - - diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx index d06d2e0e3..4c93fa4da 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx @@ -59,10 +59,9 @@ using namespace std; #define MARGIN_SIZE 11 #define MIN_EDIT_SIZE 250 -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg() -// purpose : Constructor -//================================================================================= +/*! + Constructor +*/ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, const char* name ) : QDialog( parent, name, TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) { @@ -202,98 +201,88 @@ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, con updateButtonState(); } -//================================================================================= -// function : ~ToolsGUI_CatalogGeneratorDlg() -// purpose : destructor -//================================================================================= +/*! + destructor +*/ ToolsGUI_CatalogGeneratorDlg::~ToolsGUI_CatalogGeneratorDlg() { } -//================================================================================= -// function : getIdlFile() -// purpose : gets IDL file name entered -//================================================================================= +/*! + \return IDL file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getIdlFile() { return myIdlEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getXmlFile() -// purpose : gets XML file name entered -//================================================================================= +/*! + \return XML file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getXmlFile() { return myXmlEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getPngFile() -// purpose : gets PNG file name entered -//================================================================================= +/*! + \return PNG file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getPngFile() { return myPngEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getAuthor() -// purpose : gets author -//================================================================================= +/*! + \return author +*/ QString ToolsGUI_CatalogGeneratorDlg::getAuthor() { return myAuthorEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getVersion() -// purpose : gets version number -//================================================================================= +/*! + \return version number +*/ QString ToolsGUI_CatalogGeneratorDlg::getVersion() { return myVersionEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompName() -// purpose : gets name of the component -//================================================================================= +/*! + \return name of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompName() { return myCompName->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompUserName() -// purpose : gets username of the component -//================================================================================= +/*! + \return username of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompUserName() { return myCompUserName->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompType() -// purpose : gets type of the component -//================================================================================= +/*! + \return type of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompMultiStd() { return myCompMultiStd->text().stripWhiteSpace(); } -//================================================================================= -// function : getComptype() -// purpose : gets type of the component -//================================================================================= + +/*! + \return type of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompType() { return myCompType->text().stripWhiteSpace(); } -//================================================================================= -// function : getIdlPath() -// purpose : gets IDL path of modules -//================================================================================= +/*! + \return IDL path of modules +*/ QString ToolsGUI_CatalogGeneratorDlg::getIdlPath() { cout << "QAD_Desktop::getCatalogue() is not implemented!!"; @@ -325,10 +314,9 @@ QString ToolsGUI_CatalogGeneratorDlg::getIdlPath() */ } -//================================================================================= -// function : onBrowseBtnClicked() -// purpose : <...> (Browse) buttons slot -//================================================================================= +/*! + SLOT: called on Browse button click +*/ void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked() { QPushButton* send = (QPushButton*)sender(); @@ -356,20 +344,18 @@ void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked() updateButtonState(); } -//================================================================================= -// function : updateButtonState() -// purpose : Updates button's state -//================================================================================= +/*! + Updates button's state +*/ void ToolsGUI_CatalogGeneratorDlg::updateButtonState() { myApplyBtn->setEnabled( !myIdlEdit->text().stripWhiteSpace().isEmpty() && !myXmlEdit->text().stripWhiteSpace().isEmpty() ); } -//================================================================================= -// function : onApply() -// purpose : button slot, performs IDL->XML conversion -//================================================================================= +/*! + button slot, performs IDL->XML conversion +*/ void ToolsGUI_CatalogGeneratorDlg::onApply() { QString IDLpath = getIdlPath(); diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h index 5da0d5cc6..cf88f1417 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h @@ -36,10 +36,6 @@ class QLineEdit; class QPushButton; -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg -// purpose : -//================================================================================= class Standard_EXPORT ToolsGUI_CatalogGeneratorDlg : public QDialog { Q_OBJECT diff --git a/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx b/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx index bd1ed427a..cb5ad63f5 100755 --- a/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx @@ -36,6 +36,9 @@ using namespace std; +/*! + Constructor +*/ ToolsGUI_HelpWindow::ToolsGUI_HelpWindow(QWidget* parent, const char* name ) : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) { diff --git a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx index 04d96c00a..4e122af79 100755 --- a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx @@ -20,8 +20,11 @@ #define SPACING_SIZE 6 #define MIN_SPIN_WIDTH 100 +/*! + Constructor +*/ ToolsGUI_IntervalWindow::ToolsGUI_IntervalWindow ( QWidget* parent ) - : QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) +: QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) { BEGIN_OF("ToolsGUI_IntervalWindow constructor") setCaption( tr( "Refresh Interval" ) ); @@ -73,8 +76,13 @@ ToolsGUI_IntervalWindow::ToolsGUI_IntervalWindow ( QWidget* parent ) END_OF("ToolsGUI_IntervalWindow constructor") } + +/*! + Destructor +*/ ToolsGUI_IntervalWindow::~ToolsGUI_IntervalWindow() {} -/* + +/*! Sets start interval size */ void ToolsGUI_IntervalWindow::setValue(const int size) @@ -82,24 +90,24 @@ void ToolsGUI_IntervalWindow::setValue(const int size) mySpinBox->setValue(size); } -/* - Gets interval size +/*! + \return interval size */ int ToolsGUI_IntervalWindow::getValue() { return mySpinBox->value(); } -/* - gets a pointer to myButtonOk +/*! + \return a pointer to myButtonOk */ QPushButton* ToolsGUI_IntervalWindow::Ok() { return myButtonOk; } -/* - gets a pointer to myButtonCancel +/*! + \return a pointer to myButtonCancel */ QPushButton* ToolsGUI_IntervalWindow::Cancel() { diff --git a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx index b36f8fdda..4692797f5 100755 --- a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx +++ b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx @@ -356,9 +356,11 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) a.append( BOLD( QString::number( int( c_info.uid ) ) ) ); a.append( QString( " )
    " ) + tr( "in directory" ) + QString( " " )); a.append( BOLD( c_info.cdir ) ); - + + time_t aTime; a.append( QString( "
    " ) + tr( "begins" ) + QString( " " ) ); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; a.append( BOLD( t1 ) ); delete [] t1; @@ -366,7 +368,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) if (c_info.tc_hello != 0 ) { - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; a.append( tr( "last signal" ) + QString(" : ") ); a.append( BOLD( t2 ) ); @@ -375,7 +378,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) } if ((c_info.tc_end - c_info.difftime) != 0) { - char * t3 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t3 = (char * )duplicate(ctime(&aTime)); t3 [strlen(t3) -1 ] = ' '; a.append( tr( "ends" ) + QString( " " ) ); a.append( BOLD( t3 ) ); @@ -463,6 +467,7 @@ void ToolsGUI_RegWidget::InfoHistory() _history->clear(); try { + time_t aTime; _serverhistory = _VarComponents->history(); for (CORBA::ULong i=0; i<_serverhistory->length(); i++) { @@ -470,9 +475,11 @@ void ToolsGUI_RegWidget::InfoHistory() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -503,6 +510,7 @@ void ToolsGUI_RegWidget::InfoReg() _clients->clear(); try { + time_t aTime; _serverclients = _VarComponents->getall(); for (CORBA::ULong i=0; i<_serverclients->length(); i++) { @@ -510,9 +518,11 @@ void ToolsGUI_RegWidget::InfoReg() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -567,6 +577,9 @@ void ToolsGUI_RegWidget::slotSelectRefresh() END_OF("slotSelectRefresh"); } +/*! + SLOT: called when IntervalWindow's OK button is clicked +*/ void ToolsGUI_RegWidget::slotIntervalOk() { BEGIN_OF("slotIntervalOk"); diff --git a/src/VTKViewer/Makefile.in b/src/VTKViewer/Makefile.in index dd5f7ea29..b22592c52 100755 --- a/src/VTKViewer/Makefile.in +++ b/src/VTKViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : VTKViewer @@ -12,18 +30,18 @@ VPATH=.:@srcdir@:@srcdir@/resources @COMMENCE@ # header files -EXPORT_HEADERS= VTKViewer_Actor.h \ - VTKViewer_CellRectPicker.h \ +EXPORT_HEADERS= \ + VTKViewer.h \ + VTKViewer_CellLocationsArray.h \ + VTKViewer_Actor.h \ VTKViewer_ExtractUnstructuredGrid.h \ VTKViewer_ConvexTool.h \ VTKViewer_Filter.h \ VTKViewer_GeometryFilter.h \ VTKViewer_AppendFilter.h \ VTKViewer_Algorithm.h \ - VTKViewer.h \ VTKViewer_InteractorStyle.h \ VTKViewer_PassThroughFilter.h \ - VTKViewer_RectPicker.h \ VTKViewer_RenderWindow.h \ VTKViewer_RenderWindowInteractor.h \ VTKViewer_ShrinkFilter.h \ @@ -39,48 +57,46 @@ EXPORT_HEADERS= VTKViewer_Actor.h \ PO_FILES = \ VTKViewer_images.po \ - VTKViewer_msg_en.po \ - VTKViewerM_images.po \ - VTKViewerM_msg_en.po - + VTKViewer_msg_en.po + # Libraries targets LIB = libVTKViewer.la -LIB_SRC= VTKViewer_Actor.cxx \ - VTKViewer_CellRectPicker.cxx \ - VTKViewer_ExtractUnstructuredGrid.cxx \ - VTKViewer_Filter.cxx \ - VTKViewer_GeometryFilter.cxx \ - VTKViewer_AppendFilter.cxx \ - VTKViewer_InteractorStyle.cxx \ - VTKViewer_PassThroughFilter.cxx \ - VTKViewer_RectPicker.cxx \ - VTKViewer_RenderWindow.cxx \ - VTKViewer_RenderWindowInteractor.cxx \ - VTKViewer_ShrinkFilter.cxx \ - VTKViewer_Transform.cxx \ - VTKViewer_TransformFilter.cxx \ - VTKViewer_Trihedron.cxx \ - VTKViewer_Utilities.cxx \ - VTKViewer_VectorText.cxx \ - VTKViewer_ViewManager.cxx \ - VTKViewer_ViewModel.cxx \ - VTKViewer_ConvexTool.cxx \ - VTKViewer_ViewWindow.cxx +LIB_SRC= \ + VTKViewer_CellLocationsArray.cxx \ + VTKViewer_Actor.cxx \ + VTKViewer_ExtractUnstructuredGrid.cxx \ + VTKViewer_Filter.cxx \ + VTKViewer_GeometryFilter.cxx \ + VTKViewer_AppendFilter.cxx \ + VTKViewer_InteractorStyle.cxx \ + VTKViewer_PassThroughFilter.cxx \ + VTKViewer_RenderWindow.cxx \ + VTKViewer_RenderWindowInteractor.cxx \ + VTKViewer_ShrinkFilter.cxx \ + VTKViewer_Transform.cxx \ + VTKViewer_TransformFilter.cxx \ + VTKViewer_Trihedron.cxx \ + VTKViewer_Utilities.cxx \ + VTKViewer_VectorText.cxx \ + VTKViewer_ViewManager.cxx \ + VTKViewer_ViewModel.cxx \ + VTKViewer_ConvexTool.cxx \ + VTKViewer_ViewWindow.cxx LIB_MOC = \ - VTKViewer_RenderWindow.h \ - VTKViewer_RenderWindowInteractor.h \ - VTKViewer_ViewManager.h \ - VTKViewer_ViewModel.h \ - VTKViewer_ViewWindow.h + VTKViewer_RenderWindow.h \ + VTKViewer_RenderWindowInteractor.h \ + VTKViewer_ViewManager.h \ + VTKViewer_ViewModel.h \ + VTKViewer_ViewWindow.h BIN = VTKViewer CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) -LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) +LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) -lqtx -lsuit -LDFLAGSFORBIN=$(LDFLAGS) -lqtx -lsuit +LDFLAGSFORBIN=$(LDFLAGS) @CONCLUDE@ \ No newline at end of file diff --git a/src/VTKViewer/VTKViewer.h b/src/VTKViewer/VTKViewer.h index 27934b610..a4b51d18c 100755 --- a/src/VTKViewer/VTKViewer.h +++ b/src/VTKViewer/VTKViewer.h @@ -16,12 +16,25 @@ // // See http://www.salome-platform.org/ // + +#ifndef VTKVIEWER_H +#define VTKVIEWER_H + #ifdef WNT -#ifdef VTKVIEWER_EXPORTS -#define VTKVIEWER_EXPORT __declspec( dllexport ) +# ifdef VTKVIEWER_EXPORTS +# define VTKVIEWER_EXPORT __declspec( dllexport ) +# else +# define VTKVIEWER_EXPORT __declspec( dllimport ) +# endif #else -#define VTKVIEWER_EXPORT __declspec( dllimport ) +# define VTKVIEWER_EXPORT #endif -#else -#define VTKVIEWER_EXPORT + +#include + +#if !defined(vtkFloatingPointType) +# define vtkFloatingPointType vtkFloatingPointType + typedef float vtkFloatingPointType; +#endif + #endif diff --git a/src/VTKViewer/VTKViewer_Actor.cxx b/src/VTKViewer/VTKViewer_Actor.cxx index d2f72e2b8..5181ccd07 100755 --- a/src/VTKViewer/VTKViewer_Actor.cxx +++ b/src/VTKViewer/VTKViewer_Actor.cxx @@ -60,11 +60,11 @@ int VTKViewer_POINT_SIZE = 5; int VTKViewer_LINE_WIDTH = 3; -//---------------------------------------------------------------------------- vtkStandardNewMacro(VTKViewer_Actor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ VTKViewer_Actor ::VTKViewer_Actor(): myIsHighlighted(false), @@ -86,8 +86,9 @@ VTKViewer_Actor myPassFilter.push_back(VTKViewer_PassThroughFilter::New()); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ VTKViewer_Actor ::~VTKViewer_Actor() { @@ -104,8 +105,9 @@ VTKViewer_Actor myProperty->Delete(); } - -//---------------------------------------------------------------------------- +/*! + \return name +*/ const char* VTKViewer_Actor ::getName() @@ -113,6 +115,10 @@ VTKViewer_Actor return myName.c_str(); } +/*! + Sets name + \param theName - new name +*/ void VTKViewer_Actor ::setName(const char* theName) @@ -120,8 +126,9 @@ VTKViewer_Actor myName = theName; } - -//---------------------------------------------------------------------------- +/*! + To publish the actor an all its internal devices +*/ void VTKViewer_Actor ::AddToRender(vtkRenderer* theRenderer) @@ -129,6 +136,9 @@ VTKViewer_Actor theRenderer->AddActor(this); } +/*! + To remove the actor an all its internal devices +*/ void VTKViewer_Actor ::RemoveFromRender(vtkRenderer* theRenderer) @@ -136,13 +146,18 @@ VTKViewer_Actor theRenderer->RemoveActor(this); } +/*! + Used to obtain all dependent actors +*/ void VTKViewer_Actor ::GetChildActors(vtkActorCollection*) {} - -//---------------------------------------------------------------------------- +/*! + Apply view transformation + \param theTransform - view transformation +*/ void VTKViewer_Actor ::SetTransform(VTKViewer_Transform* theTransform) @@ -151,6 +166,9 @@ VTKViewer_Actor } +/*! + To insert some additional filters and then sets the given #vtkMapper +*/ void VTKViewer_Actor ::SetMapper(vtkMapper* theMapper) @@ -158,6 +176,9 @@ VTKViewer_Actor InitPipeLine(theMapper); } +/*! + Initialization +*/ void VTKViewer_Actor ::InitPipeLine(vtkMapper* theMapper) @@ -192,15 +213,23 @@ VTKViewer_Actor Superclass::SetMapper(theMapper); } - -//---------------------------------------------------------------------------- +/*! + Renders actor +*/ void VTKViewer_Actor ::Render(vtkRenderer *ren, vtkMapper* m) { + if(vtkDataSet* aDataSet = GetInput()){ + static vtkFloatingPointType PERCENTS_OF_DETAILS = 0.50; + vtkIdType aNbOfPoints = vtkIdType(aDataSet->GetNumberOfPoints()*PERCENTS_OF_DETAILS); + if(aNbOfPoints > 0) + SetNumberOfCloudPoints(aNbOfPoints); + } + if(myIsResolveCoincidentTopology){ int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology(); - float aFactor, aUnit; + vtkFloatingPointType aFactor, aUnit; vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); vtkMapper::SetResolveCoincidentTopologyToPolygonOffset(); @@ -215,7 +244,10 @@ VTKViewer_Actor } } - +/*! + Set ResolveCoincidentTopology flag + \param theIsResolve - new flag value +*/ void VTKViewer_Actor ::SetResolveCoincidentTopology(bool theIsResolve) @@ -223,31 +255,45 @@ VTKViewer_Actor myIsResolveCoincidentTopology = theIsResolve; } +/*! + Set polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void VTKViewer_Actor -::SetPolygonOffsetParameters(float factor, float units) +::SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units) { myPolygonOffsetFactor = factor; myPolygonOffsetUnits = units; } +/*! + Get polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void VTKViewer_Actor -::GetPolygonOffsetParameters(float& factor, float& units) +::GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units) { factor = myPolygonOffsetFactor; units = myPolygonOffsetUnits; } - -//---------------------------------------------------------------------------- -float +/*! + \return shrink factor +*/ +vtkFloatingPointType VTKViewer_Actor ::GetShrinkFactor() { return 1.0; } +/*! + \return true if the actor is shrunkable +*/ bool VTKViewer_Actor ::IsShrunkable() @@ -255,6 +301,9 @@ VTKViewer_Actor return false; } +/*! + \return true if the actor is shrunk +*/ bool VTKViewer_Actor ::IsShrunk() @@ -262,18 +311,25 @@ VTKViewer_Actor return false; } +/*! + Insert shrink filter into pipeline +*/ void VTKViewer_Actor ::SetShrink() {} +/*! + Remove shrink filter from pipeline +*/ void VTKViewer_Actor ::UnShrink() {} - -//---------------------------------------------------------------------------- +/*! + Allows to get initial #vtkDataSet +*/ vtkDataSet* VTKViewer_Actor ::GetInput() @@ -281,7 +337,9 @@ VTKViewer_Actor return myPassFilter.front()->GetOutput(); } - +/*! + To calculatate last modified time +*/ unsigned long int VTKViewer_Actor ::GetMTime() @@ -296,8 +354,10 @@ VTKViewer_Actor return mTime; } - -//---------------------------------------------------------------------------- +/*! + Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on) + param theMode - new mode +*/ void VTKViewer_Actor ::SetRepresentation(int theMode) @@ -305,18 +365,25 @@ VTKViewer_Actor switch(myRepresentation){ case VTK_POINTS : case VTK_SURFACE : - myProperty->DeepCopy(GetProperty()); + myProperty->SetAmbient(GetProperty()->GetAmbient()); + myProperty->SetDiffuse(GetProperty()->GetDiffuse()); + myProperty->SetSpecular(GetProperty()->GetSpecular()); + break; } + switch(theMode){ case VTK_POINTS : case VTK_SURFACE : - GetProperty()->DeepCopy(myProperty); + GetProperty()->SetAmbient(myProperty->GetAmbient()); + GetProperty()->SetDiffuse(myProperty->GetDiffuse()); + GetProperty()->SetSpecular(myProperty->GetSpecular()); break; default: GetProperty()->SetAmbient(1.0); GetProperty()->SetDiffuse(0.0); GetProperty()->SetSpecular(0.0); } + switch(theMode){ case 3 : myGeomFilter->SetInside(true); @@ -340,9 +407,13 @@ VTKViewer_Actor myGeomFilter->SetInside(false); break; } + myRepresentation = theMode; } +/*! + \return current representation mode +*/ int VTKViewer_Actor ::GetRepresentation() @@ -350,8 +421,9 @@ VTKViewer_Actor return myRepresentation; } - -//---------------------------------------------------------------------------- +/*! + Maps VTK index of a node to corresponding object index +*/ int VTKViewer_Actor ::GetNodeObjId(int theVtkID) @@ -359,13 +431,19 @@ VTKViewer_Actor return theVtkID; } -float* +/*! + Get coordinates of a node for given object index +*/ +vtkFloatingPointType* VTKViewer_Actor ::GetNodeCoord(int theObjID) { return GetInput()->GetPoint(theObjID); } +/*! + Get corresponding #vtkCell for given object index +*/ vtkCell* VTKViewer_Actor ::GetElemCell(int theObjID) @@ -373,6 +451,9 @@ VTKViewer_Actor return GetInput()->GetCell(theObjID); } +/*! + Maps VTK index of a cell to corresponding object index +*/ int VTKViewer_Actor ::GetElemObjId(int theVtkID) @@ -381,11 +462,9 @@ VTKViewer_Actor } -//================================================================================= -// function : GetObjDimension -// purpose : Return object dimension. -// Virtual method shoulb be redifined by derived classes -//================================================================================= +/*! + \return object dimension. Virtual method should be redifined by derived classes +*/ int VTKViewer_Actor ::GetObjDimension( const int theObjId ) @@ -395,7 +474,10 @@ VTKViewer_Actor return 0; } - +/*! + Infinitive means actor without size (point for example), + which is not taken into account in calculation of boundaries of the scene +*/ void VTKViewer_Actor ::SetInfinitive(bool theIsInfinite) @@ -403,21 +485,34 @@ VTKViewer_Actor myIsInfinite = theIsInfinite; } - +/*! + \return infinive flag +*/ bool VTKViewer_Actor ::IsInfinitive() { - static float MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT; + if(myIsInfinite) + return true; - if(myIsInfinite || GetLength() < MIN_DISTANCE) + static vtkFloatingPointType MAX_DISTANCE = 0.9*VTK_LARGE_FLOAT; + vtkFloatingPointType aBounds[6]; + GetBounds(aBounds); + for(int i = 0; i < 6; i++) + if(fabs(aBounds[i]) > MAX_DISTANCE) + return true; + + static vtkFloatingPointType MIN_DISTANCE = 1.0/VTK_LARGE_FLOAT; + if(GetLength() < MIN_DISTANCE) return true; - else - return false; + + return false; } - -float* +/*! + \return current bounding box +*/ +vtkFloatingPointType* VTKViewer_Actor ::GetBounds() { @@ -425,15 +520,17 @@ VTKViewer_Actor } +/*! + \return current bounding box +*/ void VTKViewer_Actor -::GetBounds(float theBounds[6]) +::GetBounds(vtkFloatingPointType theBounds[6]) { Superclass::GetBounds(theBounds); } -//---------------------------------------------------------------------------- bool VTKViewer_Actor ::IsSetCamera() const @@ -450,7 +547,7 @@ VTKViewer_Actor void VTKViewer_Actor -::SetSize( const float ) +::SetSize( const vtkFloatingPointType ) {} @@ -459,16 +556,16 @@ VTKViewer_Actor ::SetCamera( vtkCamera* ) {} -//---------------------------------------------------------------------------- + void VTKViewer_Actor -::SetOpacity(float theOpacity) +::SetOpacity(vtkFloatingPointType theOpacity) { myOpacity = theOpacity; GetProperty()->SetOpacity(theOpacity); } -float +vtkFloatingPointType VTKViewer_Actor ::GetOpacity() { @@ -476,25 +573,38 @@ VTKViewer_Actor } +/*! + Change color +*/ void VTKViewer_Actor -::SetColor(float r,float g,float b) +::SetColor(vtkFloatingPointType r, + vtkFloatingPointType g, + vtkFloatingPointType b) { GetProperty()->SetColor(r,g,b); } +/*! + Change color +*/ void VTKViewer_Actor -::SetColor(const float theRGB[3]) +::SetColor(const vtkFloatingPointType theRGB[3]) { SetColor(theRGB[0],theRGB[1],theRGB[2]); } +/*! + Get color +*/ void VTKViewer_Actor -::GetColor(float& r,float& g,float& b) +::GetColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b) { - float aColor[3]; + vtkFloatingPointType aColor[3]; GetProperty()->GetColor(aColor); r = aColor[0]; g = aColor[1]; @@ -502,7 +612,9 @@ VTKViewer_Actor } -//---------------------------------------------------------------------------- +/*! + \return display mode +*/ int VTKViewer_Actor ::getDisplayMode() @@ -510,6 +622,9 @@ VTKViewer_Actor return myDisplayMode; } +/*! + Change display mode +*/ void VTKViewer_Actor ::setDisplayMode(int theMode) @@ -519,7 +634,9 @@ VTKViewer_Actor } -//---------------------------------------------------------------------------- +/*! + \return true if the descendant of the VTKViewer_Actor will implement its own highlight or not +*/ bool VTKViewer_Actor ::hasHighlight() @@ -527,6 +644,9 @@ VTKViewer_Actor return false; } +/*! + \return true if the VTKViewer_Actor is already highlighted +*/ bool VTKViewer_Actor ::isHighlighted() @@ -534,6 +654,9 @@ VTKViewer_Actor return myIsHighlighted; } +/*! + Set preselection mode +*/ void VTKViewer_Actor ::SetPreSelected(bool thePreselect) @@ -541,8 +664,9 @@ VTKViewer_Actor myIsPreselected = thePreselect; } - -//---------------------------------------------------------------- +/*! + Just to update visibility of the highlight devices +*/ void VTKViewer_Actor ::highlight(bool theIsHighlight) diff --git a/src/VTKViewer/VTKViewer_Actor.h b/src/VTKViewer/VTKViewer_Actor.h index 55711a8c0..37d109da6 100755 --- a/src/VTKViewer/VTKViewer_Actor.h +++ b/src/VTKViewer/VTKViewer_Actor.h @@ -77,27 +77,31 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Change opacity virtual void - SetOpacity(float theOpacity); + SetOpacity(vtkFloatingPointType theOpacity); //! Get current opacity virtual - float + vtkFloatingPointType GetOpacity(); //! Change color virtual void - SetColor(float r,float g,float b); + SetColor(vtkFloatingPointType r, + vtkFloatingPointType g, + vtkFloatingPointType b); //! Get current color virtual void - GetColor(float& r,float& g,float& b); + GetColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b); //! Change color virtual void - SetColor(const float theRGB[3]); + SetColor(const vtkFloatingPointType theRGB[3]); //---------------------------------------------------------------------------- // For selection mapping purpose @@ -108,7 +112,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Get coordinates of a node for given object index virtual - float* + vtkFloatingPointType* GetNodeCoord(int theObjID); //! Maps VTK index of a cell to corresponding object index @@ -184,12 +188,12 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! To calcualte current bounding box virtual - float* + vtkFloatingPointType* GetBounds(); //! To calcualte current bounding box void - GetBounds(float bounds[6]); + GetBounds(vtkFloatingPointType bounds[6]); //---------------------------------------------------------------------------- virtual @@ -202,7 +206,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor virtual void - SetSize( const float ); + SetSize( const vtkFloatingPointType ); virtual void @@ -215,11 +219,13 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Set ResolveCoincidentTopology parameters void - SetPolygonOffsetParameters(float factor, float units); + SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units); //! Get current ResolveCoincidentTopology parameters void - GetPolygonOffsetParameters(float& factor, float& units); + GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units); virtual void @@ -228,7 +234,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //---------------------------------------------------------------------------- //! Get current shrink factor virtual - float + vtkFloatingPointType GetShrinkFactor(); //! Is the actor is shrunkable @@ -295,12 +301,12 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor protected: //---------------------------------------------------------------------------- bool myIsResolveCoincidentTopology; - float myPolygonOffsetFactor; - float myPolygonOffsetUnits; + vtkFloatingPointType myPolygonOffsetFactor; + vtkFloatingPointType myPolygonOffsetUnits; std::string myName; - float myOpacity; + vtkFloatingPointType myOpacity; int myDisplayMode; bool myIsInfinite; diff --git a/src/VTKViewer/VTKViewer_AppendFilter.cxx b/src/VTKViewer/VTKViewer_AppendFilter.cxx index 222d2f1ab..34967f086 100644 --- a/src/VTKViewer/VTKViewer_AppendFilter.cxx +++ b/src/VTKViewer/VTKViewer_AppendFilter.cxx @@ -109,10 +109,6 @@ VTKViewer_AppendFilter } -//================================================================== -// function: DoMapping -// purpose : -//================================================================== void VTKViewer_AppendFilter ::DoMapping() @@ -138,7 +134,6 @@ VTKViewer_AppendFilter } } -//--------------------------------------------------------------- namespace { inline @@ -170,7 +165,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- vtkIdType VTKViewer_AppendFilter ::GetCellOutputID(vtkIdType theInputID, @@ -183,7 +177,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- namespace { void @@ -238,7 +231,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- void VTKViewer_AppendFilter ::GetCellInputID(vtkIdType theOutputID, @@ -254,7 +246,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- void VTKViewer_AppendFilter ::MakeOutput() diff --git a/src/VTKViewer/VTKViewer_AppendFilter.h b/src/VTKViewer/VTKViewer_AppendFilter.h index ceaa3d323..fde327316 100644 --- a/src/VTKViewer/VTKViewer_AppendFilter.h +++ b/src/VTKViewer/VTKViewer_AppendFilter.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef VTKVIEWER_APPENDFILTER_H #define VTKVIEWER_APPENDFILTER_H diff --git a/src/VTKViewer/VTKViewer_CellLocationsArray.cxx b/src/VTKViewer/VTKViewer_CellLocationsArray.cxx new file mode 100644 index 000000000..777b7d960 --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellLocationsArray.cxx @@ -0,0 +1,33 @@ +// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers +// +// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : +// Author : +// Module : +// $Header$ + +#include "VTKViewer_CellLocationsArray.h" + +#include + +vtkStandardNewMacro(VTKViewer_CellLocationsArray); diff --git a/src/VTKViewer/VTKViewer_CellLocationsArray.h b/src/VTKViewer/VTKViewer_CellLocationsArray.h new file mode 100644 index 000000000..67228ca4f --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellLocationsArray.h @@ -0,0 +1,42 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// + +#ifndef VTKVIEWER_CELLLOCATIONS_H +#define VTKVIEWER_CELLLOCATIONS_H + +#include "VTKViewer.h" + +#if (VTK_MAJOR_VERSION >= 4) && (VTK_MINOR_VERSION >= 4) +# include +# define TCellLocationsArray vtkIdTypeArray +#else +# include +# define TCellLocationsArray vtkIntArray +#endif + +struct VTKVIEWER_EXPORT VTKViewer_CellLocationsArray : TCellLocationsArray +{ + static VTKViewer_CellLocationsArray* New(); + + vtkTypeMacro(VTKViewer_CellLocationsArray,TCellLocationsArray); +}; + +#undef TCellLocationsArray + +#endif diff --git a/src/VTKViewer/VTKViewer_ConvexTool.cxx b/src/VTKViewer/VTKViewer_ConvexTool.cxx index 679e48428..5e0ede055 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.cxx +++ b/src/VTKViewer/VTKViewer_ConvexTool.cxx @@ -29,862 +29,561 @@ #include "VTKViewer_ConvexTool.h" -#include -#include -#include -#include -#include -#include - #include -#include -#include -#include - -typedef vtkUnstructuredGrid TInput; +#include -typedef std::set TUIDS; // unique ids -typedef std::map TPTOIDS; // id points -> unique ids - -namespace CONVEX_TOOL -{ - // all pairs - typedef std::pair TPair; - typedef std::set TSet; - - void - WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName) - { - vtkUnstructuredGridWriter* aWriter = vtkUnstructuredGridWriter::New(); - aWriter->SetFileName(theFileName.c_str()); - aWriter->SetInput(theDataSet); - aWriter->Write(); - aWriter->Delete(); - } +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -static float FACE_ANGLE_TOLERANCE=1.5; -#define EPS 1.0e-38 -#define EPS_T 1.0e-3 - -#ifdef _DEBUG_ - static int MYDEBUG = 0; - static int MYDEBUG_REMOVE = 0; -#else - static int MYDEBUG = 0; - static int MYDEBUG_REMOVE = 0; -#endif - -/*! \fn static void GetCenter(TInput* theGrid,TCell theptIds,float *center) - * \brief Calculation of geometry center. - * \param theGrid - TInput cell. - * \param theptIds - point ids. - * \retval center - output array[3] with coordinates of geometry center. - */ -static void GetCenter(vtkPoints* thePoints,float center[3]) +namespace { - float p[3]; - center[0] = center[1] = center[2] = 0.0; + typedef std::vector TConnectivities; - int numPts = thePoints->GetNumberOfPoints(); - if (numPts == 0) return; - - // get the center of the cell - for (int i = 0; i < numPts; i++) + struct TPolygon { - thePoints->GetPoint(i, p); - for (int j = 0; j < 3; j++) + TConnectivities myConnectivities; + vtkFloatingPointType myOrigin[3]; + vtkFloatingPointType myNormal[3]; + TPolygon(const TConnectivities& theConnectivities, + vtkFloatingPointType theOrigin[3], + vtkFloatingPointType theNormal[3]): + myConnectivities(theConnectivities) { - center[j] += p[j]; + myOrigin[0] = theOrigin[0]; + myOrigin[1] = theOrigin[1]; + myOrigin[2] = theOrigin[2]; + + myNormal[0] = theNormal[0]; + myNormal[1] = theNormal[1]; + myNormal[2] = theNormal[2]; } - } - for (int j = 0; j < 3; j++) - { - center[j] /= numPts; - } + }; + + typedef std::vector TPolygons; } -/*! \fn static void ReverseIds(TCell &theIds) - * \brief Reverse ids. - * \param theIds - points ids. - * \retval theIds - example input:(1,2,3,4) -> output:(4,3,2,1) - */ -static void ReverseIds(TCell &theIds) +/*! + Constructor +*/ +VTKViewer_Triangulator +::VTKViewer_Triangulator(): + myInput(NULL), + myCellId(-1), + myShowInside(-1), + myAllVisible(-1), + myCellsVisibility(NULL), + myCellIds(vtkIdList::New()) +{} + + +/*! + Destructor +*/ +VTKViewer_Triangulator +::~VTKViewer_Triangulator() { - int i; - vtkIdType tmp; - vtkIdType npts=theIds.size(); - - for(i=0;i<(npts/2);i++){ - tmp = theIds[i]; - theIds[i] = theIds[npts-i-1]; - theIds[npts-i-1] = tmp; - } + myCellIds->Delete(); } -/*! \fn void GetFriends(const TPTOIDS p2faces,const TCellArray f2points,TPTOIDS& face2face_output) - * \brief Caclulation of connected faces (faceId -> (faceId1,faceId2, ...)) - * \param p2faces - point to faces ids map. - * \param f2points - faces to points ids map. - * \retval face2face_output - faces to faces ids map. - */ -void GetFriends(const TPTOIDS p2faces,const TCellArray f2points,TPTOIDS& face2face_output) -{ - TCellArray::const_iterator f2pIter = f2points.begin(); - for( ; f2pIter!=f2points.end() ; f2pIter++ ){ - vtkIdType faceId = f2pIter->first; - TCell face_points = f2pIter->second; - int nb_face_points = face_points.size(); - - vtkIdType id1; - vtkIdType id2; - TPTOIDS::const_iterator faces1; - TPTOIDS::const_iterator faces2; - - id1 = face_points[0]; - faces1 = p2faces.find(id1); - - TUIDS output_faces; - - for(int i=1 ; i& theVTK2ObjIds, + bool theIsCheckConvex) +{ + myInput = theInput; + myCellId = theCellId; + myShowInside = theShowInside; + myAllVisible = theAllVisible; + myCellsVisibility = theCellsVisibility; - faces2 = p2faces.find(id2); - - std::set_intersection(faces1->second.begin(), faces1->second.end(), faces2->second.begin(), faces2->second.end(), - std::inserter(output_faces,output_faces.begin())); - - id1 = id2; - faces1 = faces2; - } - id1 = face_points[0]; - faces1 = p2faces.find(id1); - std::set_intersection(faces1->second.begin(), faces1->second.end(), faces2->second.begin(), faces2->second.end(), - std::inserter(output_faces,output_faces.begin())); - - output_faces.erase(faceId); // erase the face id for which we found friends + vtkPoints *aPoints = InitPoints(); + vtkIdType aNumPts = GetNbOfPoints(); + //cout<<"Triangulator - aNumPts = "<(cout, " ")); - cout << endl; + if(aNumPts == 0) + return true; + + // To calculate the bary center of the cell + vtkFloatingPointType aCellCenter[3] = {0.0, 0.0, 0.0}; + { + vtkFloatingPointType aPntCoord[3]; + for (int aPntId = 0; aPntId < aNumPts; aPntId++) { + aPoints->GetPoint(GetPointId(aPntId),aPntCoord); + //cout<<"\taPntId = "<"; - float *p[4]; - float v1[3],v2[3],v3[3]; - p[0] = theGrid->GetPoint(A1); - p[1] = theGrid->GetPoint(A2); - p[2] = theGrid->GetPoint(B1); - p[3] = theGrid->GetPoint(C1); - - for(int i=0;i<3;i++){ - v1[i] = p[1][i] - p[0][i]; - v2[i] = p[2][i] - p[0][i]; - v3[i] = p[3][i] - p[0][i]; - } - - - float vec_b1[3]; - vtkMath::Cross(v2,v1,vec_b1); - float vec_b2[3]; - vtkMath::Cross(v1,v3,vec_b2); + vtkFloatingPointType aCellLength = GetCellLength(); + int aNumFaces = GetNumFaces(); - float b1 = vtkMath::Norm(vec_b1); + static vtkFloatingPointType EPS = 1.0E-2; + vtkFloatingPointType aDistEps = aCellLength * EPS; + //cout<<"\taCellLength = "<=1.0 ? 0.0 : 180*acosf(aCos)/vtkMath::Pi(); - - if( angle <= FACE_ANGLE_TOLERANCE) - status = true; - if (MYDEBUG){ - for(int k=0;k<4;k++){ - cout << " ("; - for(int j=0;j<2;j++){ - cout << p[k][j] << ","; - } - cout << p[k][2] << ") "; - } - if(status) cout << "angle="< TPointIds; + TPointIds anInitialPointIds; + for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++) + anInitialPointIds.insert(GetPointId(aPntId)); - return status; -} - -/*! \fn void GetAllFacesOnOnePlane( TPTOIDS theFaces, vtkIdType faceId,TUIDS &new_faces, TCell &new_faces_v2 ) - * \brief Calculate faces which on one plane. - * \param theFaces - - * \param faceId - - * \param new_faces - - * \param new_faces_v2 - - */ -void GetAllFacesOnOnePlane( TPTOIDS theFaces, vtkIdType faceId, - TUIDS &new_faces, TCell &new_faces_v2 ) -{ - if (new_faces.find(faceId) != new_faces.end()) return; + // To initialize set of points by face that belong to the cell and backward + typedef std::set TFace2Visibility; + TFace2Visibility aFace2Visibility; - new_faces.insert(new_faces.begin(),faceId); - new_faces_v2.push_back(faceId); - - TPTOIDS::const_iterator aIter1 = theFaces.find(faceId); - if(aIter1!=theFaces.end()){ - TUIDS::const_iterator aIter2 = (aIter1->second).begin(); - for(;aIter2!=(aIter1->second).end();aIter2++){ - if (new_faces.find(*aIter2) != new_faces.end()) continue; - GetAllFacesOnOnePlane(theFaces,*aIter2, - new_faces,new_faces_v2); // recurvise - } - } - return; -} + typedef std::set TFace2PointIds; + TFace2PointIds aFace2PointIds; -/*! \fn void GetSumm(TCell v1,TCell v2,TCell &output) - * \brief Gluing two faces (gluing points ids) - * \param v1 - first face - * \param v2 - second face - * \param output - output face. - */ -void GetSumm(TCell v1,TCell v2,TCell &output) -{ - output.clear(); - - if(MYDEBUG) cout << "========================================="<(cout, " ")); - if(MYDEBUG) cout << "\tv2:"; - if(MYDEBUG) std::copy(v2.begin(), v2.end(), std::ostream_iterator(cout, " ")); - if(MYDEBUG) cout << endl; - - TUIDS v1_set; - std::copy(v1.begin(), v1.end(), std::inserter(v1_set,v1_set.begin())); - TUIDS v2_set; - std::copy(v2.begin(), v2.end(), std::inserter(v2_set,v2_set.begin())); - TUIDS tmpIntersection; - std::set_intersection(v1_set.begin(),v1_set.end(),v2_set.begin(),v2_set.end(), std::inserter(tmpIntersection,tmpIntersection.begin())); - if(MYDEBUG) std::copy(tmpIntersection.begin(),tmpIntersection.end(), std::ostream_iterator(cout, " ")); - if(MYDEBUG) cout << endl; - - if(tmpIntersection.size() < 2) - if(MYDEBUG) cout << __FILE__ << "[" << __LINE__ << "]: Warning ! Wrong ids" << endl; - - TCell::iterator v1_iter = v1.begin(); - - for(;v1_iter!=v1.end();v1_iter++){ - - vtkIdType curr_id = *v1_iter; - - output.push_back(curr_id); + for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) { + vtkCell* aFace = GetFace(aFaceId); - if(tmpIntersection.find(curr_id) != tmpIntersection.end()){ - TCell::iterator v1_iter_tmp; - v1_iter_tmp = v1_iter; - v1_iter++; - - if(v1_iter==v1.end()) v1_iter=v1.begin(); - - curr_id = *v1_iter; - - if(tmpIntersection.find(curr_id) != tmpIntersection.end()){ - TCell::iterator v2_iter = v2.begin(); - for(;v2_iter!=v2.end();v2_iter++){ - vtkIdType v2_id = *v2_iter; - if(tmpIntersection.find(v2_id) == tmpIntersection.end()) - output.push_back(v2_id); - } - } - - v1_iter = v1_iter_tmp; - curr_id = *v1_iter; + GetCellNeighbors(theCellId, aFace, myCellIds); + if((!myAllVisible && !myCellsVisibility[myCellIds->GetId(0)]) || + myCellIds->GetNumberOfIds() <= 0 || myShowInside) + { + TPointIds aPointIds; + vtkIdList *anIdList = aFace->PointIds; + aPointIds.insert(anIdList->GetId(0)); + aPointIds.insert(anIdList->GetId(1)); + aPointIds.insert(anIdList->GetId(2)); + aFace2PointIds.insert(aPointIds); + aFace2Visibility.insert(aFaceId); } } - if(MYDEBUG) cout << "Result: " ; - if(MYDEBUG) std::copy(output.begin(),output.end(),std::ostream_iterator(cout, " ")); - if(MYDEBUG) cout << endl; -} - -static void GetAndRemoveIdsOnOneLine(vtkPoints* points, - TUIDS input_points_ids, - TUIDS input_two_points_ids, - TUIDS& out_two_points_ids, - TUIDS& removed_points_ids){ - if (MYDEBUG_REMOVE) cout << EPS <GetPoint(current_points_ids[0],P[0]); - points->GetPoint(current_points_ids[1],P[1]); - TUIDS::iterator aPointsIter = input_points_ids.begin(); - for(;aPointsIter!=input_points_ids.end();aPointsIter++){ - if(iscurrent_points_changed){ - points->GetPoint(current_points_ids[0],P[0]); - points->GetPoint(current_points_ids[1],P[1]); - iscurrent_points_changed = false; - if (MYDEBUG_REMOVE) - cout << " " << current_points_ids[0] << " " << current_points_ids[1] << endl; - } - // check: is point on line input_two_points_ids - points->GetPoint(*aPointsIter,P[2]); - if (MYDEBUG_REMOVE) { - cout << "\t" << current_points_ids[0] << ":"< coeff[0][0] = (x-x1), coeff[0][1] = x2-x1 - // y-y1=(y2-y1)*t -> coeff[1][0] = (y-y1), coeff[1][1] = y2-y1 - // z-z1=(z2-z1)*t -> coeff[2][0] = (z-z1), coeff[2][1] = z2-z1 - float coeff[3][2]; - for(int i=0;i<3;i++){ - coeff[i][0] = P[2][i]-P[0][i]; - coeff[i][1] = P[1][i]-P[0][i]; - } - bool isok_coord[3]; - bool isok = true; - float t[3]; - for(int i=0;i<3;i++){ - isok_coord[i] = false; - if( fabs(coeff[i][0]) <= EPS && fabs(coeff[i][1]) <= EPS) { - isok_coord[i] = true; - continue; - } - if( fabs(coeff[i][1]) <= EPS && fabs(coeff[i][0]) > EPS) {isok = false;t[i]=1.0/EPS;break;} - t[i] = (coeff[i][0])/(coeff[i][1]); - } - for(int i=0;i<3;i++) - if (MYDEBUG_REMOVE) - cout << __LINE__ << " " - << coeff[i][0] << ","<t[0],t[1],t[2] - // anilize bounds of line - for(int i=0;i<3;i++){ - for(int j=0;j<3;j++) - if(!isok_coord[j]) param[i] = (P[i][j]-P[0][j])/(P[1][j]-P[0][j]); - } - if (MYDEBUG_REMOVE) cout << "Params: " << param[0] << "," << param[1] << "," << param[2] << endl; - vtkIdType imax,imin; - float min,max; - for(vtkIdType i=0;i<3;i++) - if(!isok_coord[i]){ - min = param[0];imin=0; - max = param[0];imax=0; - break; - } - for(vtkIdType i=0;i<3;i++){ - if(min > param[i]) {min = param[i]; imin=i;} - if(max < param[i]) {max = param[i]; imax=i;} - } - if (MYDEBUG_REMOVE) - cout << "\t min="<"< RemoveAllUnneededPoints(vtkConvexPointSet* convex){ - vtkSmartPointer out = vtkConvexPointSet::New(); - - TUIDS two_points,input_points,out_two_points_ids,removed_points_ids,loc_removed_points_ids; - vtkIdList* aPointIds = convex->GetPointIds(); - int numIds = aPointIds->GetNumberOfIds(); - if (numIds<2) return out; - TSet good_point_ids; - TSet aLists[numIds-2]; - for(int i=0;iGetId(aFirId) << "," << aSecId <<":"<GetId(aSecId)<< " --- "; - for(vtkIdType k=aSecId+1;kGetId(k) << ","; - } - if (MYDEBUG_REMOVE) { - cout << endl; - cout << "\t"; - for(TUIDS::iterator aDelIter = loc_removed_points_ids.begin();aDelIter!=loc_removed_points_ids.end();aDelIter++) - cout << *aDelIter<<","; - cout << endl; - } - GetAndRemoveIdsOnOneLine(convex->Points, - input_points, - two_points, - out_two_points_ids, - loc_removed_points_ids); - TUIDS::iterator aOutIter = out_two_points_ids.begin(); - vtkIdType aFirst=*aOutIter;aOutIter++;vtkIdType aSecond=*aOutIter; - TPair aPair(aFirst,aSecond); - good_point_ids.insert(aPair); - if (MYDEBUG_REMOVE){ - cout << "Output: "; - TUIDS::iterator aIter = out_two_points_ids.begin(); - for(;aIter!=out_two_points_ids.end();aIter++) - cout << *aIter << ","; - cout << " --- "; - } - TUIDS::iterator aDelIter = loc_removed_points_ids.begin(); - for(;aDelIter!=loc_removed_points_ids.end();aDelIter++){ - removed_points_ids.insert(*aDelIter); - if (MYDEBUG_REMOVE) cout << *aDelIter << ","; - } - if (MYDEBUG_REMOVE) cout << endl; - } - } - if (MYDEBUG_REMOVE) { - cout << "============ Resultat ================" <Points->SetNumberOfPoints(result_ids.size()); - out->PointIds->SetNumberOfIds(result_ids.size()); - int aId=0; - if(MYDEBUG_REMOVE) cout << "Result out:"; - for(TUIDS::iterator aIter=result_ids.begin();aIter!=result_ids.end();aIter++,aId++){ - float P[3]; - convex->Points->GetPoint(*aIter,P); - out->Points->SetPoint(aId,P); - out->PointIds->SetId(aId,aPointIds->GetId(*aIter)); - if (MYDEBUG_REMOVE) cout << *aIter << ":" << aPointIds->GetId(*aIter) << " , "; - } - if(MYDEBUG_REMOVE) cout << endl; - out->Modified(); - out->Initialize(); - - return out; -} -void GetPolygonalFaces(vtkUnstructuredGrid* theGrid,int cellId,TCellArray &outputCellArray) -{ - if (theGrid->GetCellType(cellId) == VTK_CONVEX_POINT_SET){ - // get vtkCell type = VTK_CONVEX_POINT_SET - if(vtkConvexPointSet* convex_in = static_cast(theGrid->GetCell(cellId))){ - vtkSmartPointer convex = RemoveAllUnneededPoints(convex_in); - TCellArray f2points; - float convex_center[3]; // convex center point coorinat - int aNbFaces = convex->GetNumberOfFaces(); - int numPts = convex->GetNumberOfPoints(); - if(MYDEBUG_REMOVE) cout << "aNbFaces="<GetPoint(aIds[0]); - id_1 = theGrid->GetPoint(aIds[1]); - id_n = theGrid->GetPoint(aIds[numFacePts-1]); - - for(i=0;i<3;i++){ - v_a[i] = id_1[i] - id_0[i]; - v_b[i] = id_n[i] - id_0[i]; - v_convex2face[i] = id_0[i] - convex_center[i]; - } + ::TPolygons aPolygons; - if (vtkMath::Determinant3x3(v_a,v_b,v_convex2face) < 0){ - ReverseIds(aIds); - } + for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) { + if(aFace2Visibility.find(aFaceId) == aFace2Visibility.end()) + continue; - for(i=0;i<(int)aIds.size();i++){ - TUIDS &acell = p2faces[aIds[i]]; - acell.insert(faceId); - } - - f2points[faceId] = aIds; + vtkCell* aFace = GetFace(aFaceId); - } - - TPTOIDS face2face; - GetFriends(p2faces,f2points,face2face); + vtkIdList *anIdList = aFace->PointIds; + vtkIdType aNewPts[3] = {anIdList->GetId(0), anIdList->GetId(1), anIdList->GetId(2)}; + + // To initialize set of points for the plane where the trinangle face belong to + TPointIds aPointIds; + aPointIds.insert(aNewPts[0]); + aPointIds.insert(aNewPts[1]); + aPointIds.insert(aNewPts[2]); + + // To get know, if the points of the trinagle were already observed + bool anIsObserved = aFace2PointIds.find(aPointIds) == aFace2PointIds.end(); + //cout<<"\taFaceId = "<GetPoint(aNewPts[0],aCoord[0]); + aPoints->GetPoint(aNewPts[1],aCoord[1]); + aPoints->GetPoint(aNewPts[2],aCoord[2]); - TPTOIDS face2points; + // To calculate plane normal + vtkFloatingPointType aVector01[3] = { aCoord[1][0] - aCoord[0][0], + aCoord[1][1] - aCoord[0][1], + aCoord[1][2] - aCoord[0][2] }; - // copy TCellArray::f2points to TPTOIDS::face2points - for(TCellArray::iterator f2points_iter=f2points.begin(); - f2points_iter!=f2points.end(); - f2points_iter++){ - - TUIDS tmp; - for(TCell::iterator points_iter=(f2points_iter->second).begin(); - points_iter!=(f2points_iter->second).end(); - points_iter++) - tmp.insert(*points_iter); - - face2points[f2points_iter->first] = tmp; - } // end copy - + vtkFloatingPointType aVector02[3] = { aCoord[2][0] - aCoord[0][0], + aCoord[2][1] - aCoord[0][1], + aCoord[2][2] - aCoord[0][2] }; - TPTOIDS new_face2faces; // which connected and in one plane + // To calculate the normal for the triangle + vtkFloatingPointType aNormal[3]; + vtkMath::Cross(aVector02,aVector01,aNormal); - TPTOIDS::const_iterator aF2FIter = face2face.begin(); - for(;aF2FIter!=face2face.end();aF2FIter++){ - vtkIdType f_key = aF2FIter->first; - TUIDS &faces = new_face2faces[f_key]; - //faces.insert(f_key); - TUIDS f_friends = aF2FIter->second; - TUIDS::const_iterator a_friends_iter = f_friends.begin(); - for(;a_friends_iter!=f_friends.end();a_friends_iter++){ - vtkIdType friend_id = *a_friends_iter; - if( IsConnectedFacesOnOnePlane(theGrid,f_key,friend_id, - (face2points.find(f_key))->second, - (face2points.find(friend_id))->second)){ - faces.insert(friend_id); - } // end if - - } // end a_friends_iter - } // end aF2FIter + vtkMath::Normalize(aNormal); - if(MYDEBUG) + // To calculate what points belong to the plane + // To calculate bounds of the point set + vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0}; { - TPTOIDS::const_iterator new_face2face_iter = new_face2faces.begin(); - cout << "Connected faces and on plane:" << endl; - for(;new_face2face_iter!=new_face2faces.end();new_face2face_iter++){ - cout << "Group ["<first<<"] :"; - TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); - for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++) - cout << " " << *new_faces_iter ; - cout << endl; + TPointIds::const_iterator anIter = anInitialPointIds.begin(); + TPointIds::const_iterator anEndIter = anInitialPointIds.end(); + for(; anIter != anEndIter; anIter++){ + vtkFloatingPointType aPntCoord[3]; + vtkIdType aPntId = *anIter; + aPoints->GetPoint(aPntId,aPntCoord); + vtkFloatingPointType aDist = vtkPlane::DistanceToPlane(aPntCoord,aNormal,aCoord[0]); + //cout<<"\t\taPntId = "< 0){ + aNormal[0] = -aNormal[0]; + aNormal[1] = -aNormal[1]; + aNormal[2] = -aNormal[2]; + } + + // To calculate the primary direction for point set + vtkFloatingPointType aVector0[3] = { aCoord[0][0] - aCenter[0], + aCoord[0][1] - aCenter[1], + aCoord[0][2] - aCenter[2] }; + vtkMath::Normalize(aVector0); + + //cout<<"\t\taCenter = {"<first) != already_in.end()) - continue; - if(new_face2face_iter->second.size() > 1) - continue; - - TCell &tmp_v2 = output_newid2face_v2[k]; - tmp_v2.push_back(new_face2face_iter->first); - already_in.insert(new_face2face_iter->first); + TFace2PointIds::const_iterator anIter = aFace2PointIds.begin(); + TFace2PointIds::const_iterator anEndIter = aFace2PointIds.end(); + for(; anIter != anEndIter; anIter++){ + const TPointIds& anIds = *anIter; + TPointIds anIntersection; + std::set_intersection(aPointIds.begin(),aPointIds.end(), + anIds.begin(),anIds.end(), + std::inserter(anIntersection,anIntersection.begin())); - TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); - for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++){ - if(already_in.find(*new_faces_iter) != already_in.end()) continue; - already_in.insert(*new_faces_iter); - - already_in_tmp.clear(); - already_in_tmp.insert(new_face2face_iter->first); - - TUIDS &tmp = output_newid2face[k]; - GetAllFacesOnOnePlane(new_face2faces,*new_faces_iter, - already_in_tmp,tmp_v2); - - for(TUIDS::const_iterator aIter=already_in_tmp.begin(); - aIter!=already_in_tmp.end(); - aIter++) - { - already_in.insert(*aIter); - tmp.insert(*aIter); - } + if(anIntersection == anIds){ + aRemoveFace2PointIds.insert(anIds); } - k++; } } - if(MYDEBUG) { - cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<first<<"] :"; - TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); - for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++) - cout << " " << *new_faces_iter ; - cout << endl; - } - } - cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<first<<"] :"; - TCell::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); - for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++) - cout << " " << *new_faces_iter ; - cout << endl; - } + // To remove from the set of points by face those that belong to the plane + { + TFace2PointIds::const_iterator anIter = aRemoveFace2PointIds.begin(); + TFace2PointIds::const_iterator anEndIter = aRemoveFace2PointIds.end(); + for(; anIter != anEndIter; anIter++){ + const TPointIds& anIds = *anIter; + aFace2PointIds.erase(anIds); } } - TCellArray output_new_face2ids; -// { -// TPTOIDS::const_iterator new_face2face_iter = output_newid2face.begin(); -// for(;new_face2face_iter!=output_newid2face.end();new_face2face_iter++){ - -// vtkIdType new_faceId = new_face2face_iter->first; -// TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); -// vtkIdType fId0 = *new_faces_iter; -// TCellArray::const_iterator pIds0_iter = f2points.find(fId0); -// TCell pIds0 = pIds0_iter->second; -// TCell &output = output_new_face2ids[new_faceId]; -// new_faces_iter++; -// if(new_face2face_iter->second.size() > 2 ){} -// for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++){ - -// vtkIdType faceId = *new_faces_iter; -// // find how much nodes in face (f2points) -// TCellArray::const_iterator pIds_iter = f2points.find(faceId); -// TCell pIds = pIds_iter->second; - -// GetSumm(pIds0,pIds,output); -// pIds0 = output; - -// } // end new_faces_iter - -// } // new_face2face_iter -// } + // To sort the planar set of the points accrding to the angle { - TCellArray::const_iterator new_face2face_iter = output_newid2face_v2.begin(); - for(;new_face2face_iter!=output_newid2face_v2.end();new_face2face_iter++){ + typedef std::map TSortedPointIds; + TSortedPointIds aSortedPointIds; + + TPointIds::const_iterator anIter = aPointIds.begin(); + TPointIds::const_iterator anEndIter = aPointIds.end(); + for(; anIter != anEndIter; anIter++){ + vtkFloatingPointType aPntCoord[3]; + vtkIdType aPntId = *anIter; + aPoints->GetPoint(aPntId,aPntCoord); + vtkFloatingPointType aVector[3] = { aPntCoord[0] - aCenter[0], + aPntCoord[1] - aCenter[1], + aPntCoord[2] - aCenter[2] }; + vtkMath::Normalize(aVector); - vtkIdType new_faceId = new_face2face_iter->first; - TCell::const_iterator new_faces_iter = (new_face2face_iter->second).begin(); - vtkIdType fId0 = *new_faces_iter; - TCellArray::const_iterator pIds0_iter = f2points.find(fId0); - TCell pIds0 = pIds0_iter->second; - TCell &output = output_new_face2ids[new_faceId]; - new_faces_iter++; - if(new_face2face_iter->second.size() == 1 ){ - TCellArray::const_iterator pIds_iter = f2points.find(fId0); - TCell pIds = pIds_iter->second; - output = pIds; - continue; + vtkFloatingPointType aCross[3]; + vtkMath::Cross(aVector,aVector0,aCross); + bool aGreaterThanPi = vtkMath::Dot(aCross,aNormal) < 0; + vtkFloatingPointType aCosinus = vtkMath::Dot(aVector,aVector0); + if(aCosinus > 1.0) + aCosinus = 1.0; + if(aCosinus < -1.0) + aCosinus = -1.0; + static vtkFloatingPointType a2Pi = 2.0 * vtkMath::Pi(); + vtkFloatingPointType anAngle = acos(aCosinus); + //cout<<"\t\t\taPntId = "<second).end();new_faces_iter++){ - - vtkIdType faceId = *new_faces_iter; - // find how much nodes in face (f2points) - TCellArray::const_iterator pIds_iter = f2points.find(faceId); - TCell pIds = pIds_iter->second; - - GetSumm(pIds0,pIds,output); - pIds0 = output; + aSortedPointIds[anAngle] = aPntId; + } - } // end new_faces_iter - - } // new_face2face_iter + if(!aSortedPointIds.empty()){ + int aNumFacePts = aSortedPointIds.size(); + ::TConnectivities aConnectivities(aNumFacePts); + TSortedPointIds::const_iterator anIter = aSortedPointIds.begin(); + TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end(); + for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){ + vtkIdType aPntId = anIter->second; + aConnectivities[anId] = GetConnectivity(aPntId); + } + aPolygons.push_back(::TPolygon(aConnectivities,aCenter,aNormal)); + } } - - if(MYDEBUG) { - cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<GetPoint(anId,aPntCoord); + vtkFloatingPointType aDist = vtkPlane::Evaluate(aNormal,anOrigin,aPntCoord); + //cout<<"\t\taPntId = "<InsertNextCell(VTK_POLYGON,aNbPoints,&aConnectivities[0]); + if(theStoreMapping) + theVTK2ObjIds.push_back(theCellId); + theOutputCD->CopyData(thInputCD,theCellId,aNewCellId); + } + } + + //cout<<"\tTriangulator - Ok\n"; + return true; } + +/*! + Constructor +*/ +VTKViewer_OrderedTriangulator +::VTKViewer_OrderedTriangulator(): + myCell(vtkGenericCell::New()) +{} + +/*! + Destructor +*/ +VTKViewer_OrderedTriangulator +::~VTKViewer_OrderedTriangulator() +{ + myCell->Delete(); +} + +vtkPoints* +VTKViewer_OrderedTriangulator +::InitPoints() +{ + myInput->GetCell(myCellId,myCell); + return myInput->GetPoints(); +} + +vtkIdType +VTKViewer_OrderedTriangulator +::GetNbOfPoints() +{ + return myCell->GetNumberOfPoints(); +} + +vtkIdType +VTKViewer_OrderedTriangulator +::GetPointId(vtkIdType thePointId) +{ + return myCell->GetPointId(thePointId); +} + +vtkFloatingPointType +VTKViewer_OrderedTriangulator +::GetCellLength() +{ + return sqrt(myCell->GetLength2()); +} + +vtkIdType +VTKViewer_OrderedTriangulator +::GetNumFaces() +{ + return myCell->GetNumberOfFaces(); +} + +vtkCell* +VTKViewer_OrderedTriangulator +::GetFace(vtkIdType theFaceId) +{ + return myCell->GetFace(theFaceId); +} + +void +VTKViewer_OrderedTriangulator +::GetCellNeighbors(vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds) +{ + vtkIdList *anIdList = theFace->PointIds; + myInput->GetCellNeighbors(theCellId, anIdList, theCellIds); +} + +vtkIdType +VTKViewer_OrderedTriangulator +::GetConnectivity(vtkIdType thePntId) +{ + return thePntId; +} + +/*! + Constructor +*/ +VTKViewer_DelaunayTriangulator +::VTKViewer_DelaunayTriangulator(): + myUnstructuredGrid(vtkUnstructuredGrid::New()), + myGeometryFilter(vtkGeometryFilter::New()), + myDelaunay3D(vtkDelaunay3D::New()), + myFaceIds(vtkIdList::New()), + myPoints(vtkPoints::New()), + myPolyData(NULL), + myPointIds(NULL) +{ + myDelaunay3D->SetInput(myUnstructuredGrid); + myGeometryFilter->SetInput(myDelaunay3D->GetOutput()); +} + + + +/*! + Destructor +*/ +VTKViewer_DelaunayTriangulator +::~VTKViewer_DelaunayTriangulator() +{ + myUnstructuredGrid->Delete(); + myGeometryFilter->Delete(); + myDelaunay3D->Delete(); + myFaceIds->Delete(); + myPoints->Delete(); +} + + +vtkPoints* +VTKViewer_DelaunayTriangulator +::InitPoints() +{ + myUnstructuredGrid->Initialize(); + myUnstructuredGrid->Allocate(); + myUnstructuredGrid->SetPoints(myPoints); + + vtkIdType aNumPts; + myInput->GetCellPoints(myCellId,aNumPts,myPointIds); + { + vtkFloatingPointType aPntCoord[3]; + myPoints->SetNumberOfPoints(aNumPts); + vtkPoints *anInputPoints = myInput->GetPoints(); + for (int aPntId = 0; aPntId < aNumPts; aPntId++) { + anInputPoints->GetPoint(myPointIds[aPntId],aPntCoord); + myPoints->SetPoint(aPntId,aPntCoord); + } + } + + myGeometryFilter->Update(); + myPolyData = myGeometryFilter->GetOutput(); + + return myPoints; +} + +vtkIdType +VTKViewer_DelaunayTriangulator +::GetNbOfPoints() +{ + return myPoints->GetNumberOfPoints(); +} + +vtkIdType +VTKViewer_DelaunayTriangulator +::GetPointId(vtkIdType thePointId) +{ + return thePointId; +} + +vtkFloatingPointType +VTKViewer_DelaunayTriangulator +::GetCellLength() +{ + return myPolyData->GetLength(); +} + +vtkIdType +VTKViewer_DelaunayTriangulator +::GetNumFaces() +{ + return myPolyData->GetNumberOfCells(); +} + +vtkCell* +VTKViewer_DelaunayTriangulator +::GetFace(vtkIdType theFaceId) +{ + return myPolyData->GetCell(theFaceId); +} + +void +VTKViewer_DelaunayTriangulator +::GetCellNeighbors(vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds) +{ + myFaceIds->Reset(); + vtkIdList *anIdList = theFace->PointIds; + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]); + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]); + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]); + + myInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds); +} + + +vtkIdType +VTKViewer_DelaunayTriangulator +::GetConnectivity(vtkIdType thePntId) +{ + return myPointIds[thePntId]; } diff --git a/src/VTKViewer/VTKViewer_ConvexTool.h b/src/VTKViewer/VTKViewer_ConvexTool.h index ed303af03..356d5f623 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.h +++ b/src/VTKViewer/VTKViewer_ConvexTool.h @@ -21,28 +21,183 @@ #ifndef _VTKViewer_ConvexTool_H #define _VTKViewer_ConvexTool_H -#include +#include "VTKViewer.h" + #include -#include -typedef std::vector TCell; // ptsIds -typedef std::map TCellArray; // CellId, TCell +#include + +class vtkUnstructuredGrid; +class vtkGeometryFilter; +class vtkGenericCell; +class vtkDelaunay3D; +class vtkPolyData; +class vtkCellData; +class vtkPoints; +class vtkIdList; +class vtkCell; + +class VTKVIEWER_EXPORT VTKViewer_Triangulator +{ + public: + VTKViewer_Triangulator(); + + ~VTKViewer_Triangulator(); + + bool + Execute(vtkUnstructuredGrid *theInput, + vtkCellData* thInputCD, + vtkIdType theCellId, + int theShowInside, + int theAllVisible, + const char* theCellsVisibility, + vtkPolyData *theOutput, + vtkCellData* theOutputCD, + int theStoreMapping, + std::vector& theVTK2ObjIds, + bool theIsCheckConvex); + + protected: + vtkIdList* myCellIds; + + vtkUnstructuredGrid *myInput; + vtkIdType myCellId; + int myShowInside; + int myAllVisible; + const char* myCellsVisibility; + + virtual + vtkPoints* + InitPoints() = 0; + + virtual + vtkIdType + GetNbOfPoints() = 0; + + virtual + vtkIdType + GetPointId(vtkIdType thePointId) = 0; -/*! This package \namespace CONVEX_TOOL used for: - * calculation of VTK_POLYGON cell array from VTK_TRIANGLE (triangulation) - * of VTK_CONVEX_POINT_SET cell type. - */ -namespace CONVEX_TOOL + virtual + vtkFloatingPointType + GetCellLength() = 0; + + virtual + vtkIdType + GetNumFaces() = 0; + + virtual + vtkCell* + GetFace(vtkIdType theFaceId) = 0; + + virtual + void + GetCellNeighbors(vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds) = 0; + + virtual + vtkIdType + GetConnectivity(vtkIdType thePntId) = 0; +}; + + +class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangulator { - /*! \fn void CONVEX_TOOL::GetPolygonalFaces(vtkUnstructuredGrid* theCell,int cellId,TCellArray &outputCellArray) - * \brief Main function. - * \param theCell - vtkUnstructuredGrid cell pointer - * \param cellId - id of cell type VTK_CONVEX_POINT_SET - * \retval outputCellArray - output array with new cells types VTK_POLYGON - */ - void - WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName); - void GetPolygonalFaces(vtkUnstructuredGrid* theCell,int cellId,TCellArray &outputCellArray); -} + public: + + VTKViewer_OrderedTriangulator(); + + ~VTKViewer_OrderedTriangulator(); + + protected: + vtkGenericCell *myCell; + + virtual + vtkPoints* + InitPoints(); + + virtual + vtkIdType + GetNbOfPoints(); + + vtkIdType + GetPointId(vtkIdType thePointId); + + virtual + vtkFloatingPointType + GetCellLength(); + + virtual + vtkIdType + GetNumFaces(); + + virtual + vtkCell* + GetFace(vtkIdType theFaceId); + + virtual + void + GetCellNeighbors(vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds); + + virtual + vtkIdType + GetConnectivity(vtkIdType thePntId); +}; + + +class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangulator +{ + public: + + VTKViewer_DelaunayTriangulator(); + + ~VTKViewer_DelaunayTriangulator(); + + protected: + vtkUnstructuredGrid* myUnstructuredGrid; + vtkGeometryFilter* myGeometryFilter; + vtkDelaunay3D* myDelaunay3D; + vtkPolyData* myPolyData; + vtkIdType *myPointIds; + vtkIdList* myFaceIds; + vtkPoints* myPoints; + + virtual + vtkPoints* + InitPoints(); + + virtual + vtkIdType + GetNbOfPoints(); + + vtkIdType + GetPointId(vtkIdType thePointId); + + virtual + vtkFloatingPointType + GetCellLength(); + + virtual + vtkIdType + GetNumFaces(); + + virtual + vtkCell* + GetFace(vtkIdType theFaceId); + + virtual + void + GetCellNeighbors(vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds); + + virtual + vtkIdType + GetConnectivity(vtkIdType thePntId); +}; + #endif // _VTKViewer_ConvexTool_H diff --git a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx index 19672b782..5dc5a4333 100755 --- a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx +++ b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx @@ -26,13 +26,12 @@ #include "VTKViewer_ExtractUnstructuredGrid.h" -//#include "utilities.h" +#include "VTKViewer_CellLocationsArray.h" #include #include #include #include -#include #include #include @@ -234,7 +233,7 @@ void VTKViewer_ExtractUnstructuredGrid::Execute(){ } } if((aNbElems = aConnectivity->GetNumberOfCells())){ - vtkIntArray* aCellLocationsArray = vtkIntArray::New(); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents(1); aCellLocationsArray->SetNumberOfTuples(aNbElems); aConnectivity->InitTraversal(); @@ -323,7 +322,7 @@ void VTKViewer_ExtractUnstructuredGrid::Execute(){ } } if((aNbElems = aConnectivity->GetNumberOfCells())){ - vtkIntArray* aCellLocationsArray = vtkIntArray::New(); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents(1); aCellLocationsArray->SetNumberOfTuples(aNbElems); aConnectivity->InitTraversal(); diff --git a/src/VTKViewer/VTKViewer_GeometryFilter.cxx b/src/VTKViewer/VTKViewer_GeometryFilter.cxx index df096cf7a..5c8cbf1af 100755 --- a/src/VTKViewer/VTKViewer_GeometryFilter.cxx +++ b/src/VTKViewer/VTKViewer_GeometryFilter.cxx @@ -27,6 +27,7 @@ // $Header$ #include "VTKViewer_GeometryFilter.h" +#include "VTKViewer_ConvexTool.h" #include #include @@ -45,11 +46,6 @@ #include #include -#include -#include -#include -#include - #include #include #include @@ -62,9 +58,8 @@ #endif #endif -#define USE_ROBUST_TRIANGULATION +//#define USE_ROBUST_TRIANGULATION -//---------------------------------------------------------------------------- vtkCxxRevisionMacro(VTKViewer_GeometryFilter, "$Revision$"); vtkStandardNewMacro(VTKViewer_GeometryFilter); @@ -81,7 +76,6 @@ VTKViewer_GeometryFilter {} -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::Execute() @@ -102,7 +96,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::UnstructuredGridExecute() @@ -128,28 +121,19 @@ VTKViewer_GeometryFilter vtkPolyData *output = this->GetOutput(); vtkPointData *outputPD = output->GetPointData(); -#ifdef USE_ROBUST_TRIANGULATION - vtkUnstructuredGrid* anUnstructuredGrid = vtkUnstructuredGrid::New(); - vtkPoints* aDelaunayPoints = vtkPoints::New(); - - vtkDelaunay3D* aDelaunay3D = vtkDelaunay3D::New(); - aDelaunay3D->SetInput(anUnstructuredGrid); - - vtkGeometryFilter* aGeometryFilter = vtkGeometryFilter::New(); - aGeometryFilter->SetInput(aDelaunay3D->GetOutput()); -#endif + VTKViewer_OrderedTriangulator anOrderedTriangulator; + VTKViewer_DelaunayTriangulator aDelaunayTriangulator; vtkCellData *outputCD = output->GetCellData(); vtkGenericCell *cell = vtkGenericCell::New(); - vtkIdList *cellIds = vtkIdList::New(); vtkIdList *faceIds = vtkIdList::New(); char *cellVis; vtkIdType newCellId; int faceId, *faceVerts, numFacePts; - float *x; + vtkFloatingPointType *x; int PixelConvert[4], aNewPts[VTK_CELL_SIZE]; // ghost cell stuff unsigned char updateLevel = (unsigned char)(output->GetUpdateGhostLevel()); @@ -306,299 +290,30 @@ VTKViewer_GeometryFilter break; case VTK_CONVEX_POINT_SET: { - //cout<<"cellId = "<Initialize(); - anUnstructuredGrid->Allocate(); - anUnstructuredGrid->SetPoints(aDelaunayPoints); - - vtkIdType *aPts; - input->GetCellPoints(cellId,aNumPts,aPts); - { - float aPntCoord[3]; - aDelaunayPoints->SetNumberOfPoints(aNumPts); - vtkPoints *anInputPoints = input->GetPoints(); - for (int aPntId = 0; aPntId < aNumPts; aPntId++) { - anInputPoints->GetPoint(aPts[aPntId],aPntCoord); - aDelaunayPoints->SetPoint(aPntId,aPntCoord); - } - } -#else - input->GetCell(cellId,cell); - aPoints = input->GetPoints(); - aNumPts = cell->GetNumberOfPoints(); -#endif - // To calculate the bary center of the cell - float aCellCenter[3] = {0.0, 0.0, 0.0}; - { - float aPntCoord[3]; - for (int aPntId = 0; aPntId < aNumPts; aPntId++) { -#ifdef USE_ROBUST_TRIANGULATION - aPoints->GetPoint(aPntId,aPntCoord); -#else - aPoints->GetPoint(cell->GetPointId(aPntId),aPntCoord); -#endif - //cout<<"\t\taPntId = "<Update(); - vtkPolyData* aPolyData = aGeometryFilter->GetOutput(); - - float aCellLength = aPolyData->GetLength(); - int aNumFaces = aPolyData->GetNumberOfCells(); -#else - float aCellLength = sqrt(cell->GetLength2()); - int aNumFaces = cell->GetNumberOfFaces(); -#endif - - static float EPS = 1.0E-5; - float aDistEps = aCellLength * EPS; - - // To initialize set of points that belong to the cell - typedef std::set TPointIds; - TPointIds anInitialPointIds; - for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){ -#ifdef USE_ROBUST_TRIANGULATION - anInitialPointIds.insert(aPntId); -#else - anInitialPointIds.insert(cell->GetPointId(aPntId)); -#endif - } - - // To initialize set of points by face that belong to the cell and backward - typedef std::set TFace2Visibility; - TFace2Visibility aFace2Visibility; - - typedef std::set TFace2PointIds; - TFace2PointIds aFace2PointIds; - - for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) { -#ifdef USE_ROBUST_TRIANGULATION - vtkCell* aFace = aPolyData->GetCell(aFaceId); -#else - vtkCell* aFace = cell->GetFace(aFaceId); -#endif - vtkIdList *anIdList = aFace->PointIds; - aNewPts[0] = anIdList->GetId(0); - aNewPts[1] = anIdList->GetId(1); - aNewPts[2] = anIdList->GetId(2); - -#ifdef USE_ROBUST_TRIANGULATION - faceIds->Reset(); - faceIds->InsertNextId(aPts[aNewPts[0]]); - faceIds->InsertNextId(aPts[aNewPts[1]]); - faceIds->InsertNextId(aPts[aNewPts[2]]); - input->GetCellNeighbors(cellId, faceIds, cellIds); -#else - input->GetCellNeighbors(cellId, anIdList, cellIds); -#endif - if((!allVisible && !cellVis[cellIds->GetId(0)]) || - cellIds->GetNumberOfIds() <= 0 || - myShowInside) - { - TPointIds aPointIds; - aPointIds.insert(aNewPts[0]); - aPointIds.insert(aNewPts[1]); - aPointIds.insert(aNewPts[2]); - - aFace2PointIds.insert(aPointIds); - aFace2Visibility.insert(aFaceId); - } - } - - for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) { - if(aFace2Visibility.find(aFaceId) == aFace2Visibility.end()) - continue; - -#ifdef USE_ROBUST_TRIANGULATION - vtkCell* aFace = aPolyData->GetCell(aFaceId); -#else - vtkCell* aFace = cell->GetFace(aFaceId); -#endif - vtkIdList *anIdList = aFace->PointIds; - aNewPts[0] = anIdList->GetId(0); - aNewPts[1] = anIdList->GetId(1); - aNewPts[2] = anIdList->GetId(2); - - // To initialize set of points for the plane where the trinangle face belong to - TPointIds aPointIds; - aPointIds.insert(aNewPts[0]); - aPointIds.insert(aNewPts[1]); - aPointIds.insert(aNewPts[2]); - - // To get know, if the points of the trinagle were already observed - bool anIsObserved = aFace2PointIds.find(aPointIds) == aFace2PointIds.end(); - //cout<<"\taFaceId = "<GetPoint(aNewPts[0],aCoord[0]); - aPoints->GetPoint(aNewPts[1],aCoord[1]); - aPoints->GetPoint(aNewPts[2],aCoord[2]); - - // To calculate plane normal - float aVector01[3] = { aCoord[1][0] - aCoord[0][0], - aCoord[1][1] - aCoord[0][1], - aCoord[1][2] - aCoord[0][2] }; - - float aVector02[3] = { aCoord[2][0] - aCoord[0][0], - aCoord[2][1] - aCoord[0][1], - aCoord[2][2] - aCoord[0][2] }; + bool anIsOk = anOrderedTriangulator.Execute(input, + cd, + cellId, + myShowInside, + allVisible, + cellVis, + output, + outputCD, + myStoreMapping, + myVTK2ObjIds, + true); + if(!anIsOk) + aDelaunayTriangulator.Execute(input, + cd, + cellId, + myShowInside, + allVisible, + cellVis, + output, + outputCD, + myStoreMapping, + myVTK2ObjIds, + false); - float aCross21[3]; - vtkMath::Cross(aVector02,aVector01,aCross21); - - vtkMath::Normalize(aCross21); - - // To calculate what points belong to the plane - // To calculate bounds of the point set - float aCenter[3] = {0.0, 0.0, 0.0}; - { - TPointIds::const_iterator anIter = anInitialPointIds.begin(); - TPointIds::const_iterator anEndIter = anInitialPointIds.end(); - for(; anIter != anEndIter; anIter++){ - float aPntCoord[3]; - vtkIdType aPntId = *anIter; - aPoints->GetPoint(aPntId,aPntCoord); - float aDist = vtkPlane::DistanceToPlane(aPntCoord,aCross21,aCoord[0]); - //cout<<"\t\taPntId = "< 0){ - aCross21[0] = -aCross21[0]; - aCross21[1] = -aCross21[1]; - aCross21[2] = -aCross21[2]; - } - - vtkMath::Normalize(aVector0); - - //cout<<"\t\taCenter = {"< TSortedPointIds; - TSortedPointIds aSortedPointIds; - - TPointIds::const_iterator anIter = aPointIds.begin(); - TPointIds::const_iterator anEndIter = aPointIds.end(); - for(; anIter != anEndIter; anIter++){ - float aPntCoord[3]; - vtkIdType aPntId = *anIter; - aPoints->GetPoint(aPntId,aPntCoord); - float aVector[3] = { aPntCoord[0] - aCenter[0], - aPntCoord[1] - aCenter[1], - aPntCoord[2] - aCenter[2] }; - vtkMath::Normalize(aVector); - - float aCross[3]; - vtkMath::Cross(aVector,aVector0,aCross); - bool aGreaterThanPi = vtkMath::Dot(aCross,aCross21) < 0; - float aCosinus = vtkMath::Dot(aVector,aVector0); - if(aCosinus > 1.0) - aCosinus = 1.0; - if(aCosinus < -1.0) - aCosinus = -1.0; - static float a2Pi = 2.0 * vtkMath::Pi(); - float anAngle = acos(aCosinus); - //cout<<"\t\taPntId = "< aConnectivities(numFacePts); - TSortedPointIds::const_iterator anIter = aSortedPointIds.begin(); - TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end(); - for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){ - vtkIdType aPntId = anIter->second; -#ifdef USE_ROBUST_TRIANGULATION - aConnectivities[anId] = aPts[aPntId]; -#else - aConnectivities[anId] = aPntId; -#endif - } - newCellId = output->InsertNextCell(aCellType,numFacePts,&aConnectivities[0]); - if(myStoreMapping) - myVTK2ObjIds.push_back(cellId); - outputCD->CopyData(cd,cellId,newCellId); - } - } - } - } - break; } case VTK_TETRA: { @@ -1029,14 +744,6 @@ VTKViewer_GeometryFilter vtkDebugMacro(<<"Extracted " << input->GetNumberOfPoints() << " points," << output->GetNumberOfCells() << " cells."); -#ifdef USE_ROBUST_TRIANGULATION - anUnstructuredGrid->Delete(); - aDelaunayPoints->Delete(); - - aDelaunay3D->Delete(); - aGeometryFilter->Delete(); -#endif - cell->Delete(); cellIds->Delete(); @@ -1049,7 +756,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetInside(int theShowInside) @@ -1069,7 +775,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetWireframeMode(int theIsWireframeMode) @@ -1089,7 +794,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetStoreMapping(int theStoreMapping) @@ -1109,7 +813,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){ if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1; #if defined __GNUC_2__ diff --git a/src/VTKViewer/VTKViewer_InteractorStyle.cxx b/src/VTKViewer/VTKViewer_InteractorStyle.cxx index 1f69e6085..c40cf8d90 100644 --- a/src/VTKViewer/VTKViewer_InteractorStyle.cxx +++ b/src/VTKViewer/VTKViewer_InteractorStyle.cxx @@ -30,10 +30,8 @@ #include "VTKViewer_Actor.h" #include "VTKViewer_Utilities.h" #include "VTKViewer_Trihedron.h" -#include "VTKViewer_RectPicker.h" #include "VTKViewer_ViewWindow.h" #include "VTKViewer_RenderWindow.h" -#include "VTKViewer_CellRectPicker.h" #include "VTKViewer_RenderWindowInteractor.h" //#include "SALOME_Actor.h" @@ -86,10 +84,10 @@ static int GetEdgeId(vtkPicker *thePicker, SALOME_Actor *theActor, int theObjId) return anEdgeId; } */ -//---------------------------------------------------------------------------- + vtkStandardNewMacro(VTKViewer_InteractorStyle); -//---------------------------------------------------------------------------- + /*!Constructor.*/ VTKViewer_InteractorStyle::VTKViewer_InteractorStyle() { @@ -108,14 +106,14 @@ VTKViewer_InteractorStyle::VTKViewer_InteractorStyle() OnSelectionModeChanged(); } -//---------------------------------------------------------------------------- + /*!Destructor.*/ VTKViewer_InteractorStyle::~VTKViewer_InteractorStyle() { m_ViewWnd->RemoveActor(myPreSelectionActor); } -//---------------------------------------------------------------------------- + /*!Set preselection properties. *\param theRed - red color. *\param theGreen - green color. @@ -132,7 +130,7 @@ void VTKViewer_InteractorStyle::setPreselectionProp(const double& theRed, const myPreSelectionActor->GetProperty()->SetPointSize(theWidth); } -//---------------------------------------------------------------------------- + /*!Set render window interactor *\param theInteractor - interactor. */ @@ -141,7 +139,7 @@ void VTKViewer_InteractorStyle::SetInteractor(vtkRenderWindowInteractor *theInte Superclass::SetInteractor(theInteractor); } -//---------------------------------------------------------------------------- + /*!Set view window. *\param theViewWnd - SALOME VTKViewer_ViewWindow */ @@ -151,7 +149,7 @@ void VTKViewer_InteractorStyle::setViewWnd(VTKViewer_ViewWindow* theViewWnd ){ myPreSelectionActor->Delete(); } -//---------------------------------------------------------------------------- + /*!Set GUI window. *\param theWindow - QWidget window. */ @@ -159,15 +157,14 @@ void VTKViewer_InteractorStyle::setGUIWindow(QWidget* theWindow){ myGUIWindow = theWindow; } -//---------------------------------------------------------------------------- -/*!Set triedron. + +/*!Set trihedron. *\param theTrihedron - SALOME VTKViewer_Trihedron */ void VTKViewer_InteractorStyle::setTriedron(VTKViewer_Trihedron* theTrihedron){ m_Trihedron = theTrihedron; } -//---------------------------------------------------------------------------- /*!Rotate camera. *\param dx - *\param dy - @@ -199,7 +196,6 @@ void VTKViewer_InteractorStyle::RotateXY(int dx, int dy) myGUIWindow->update(); } -//---------------------------------------------------------------------------- void VTKViewer_InteractorStyle::PanXY(int x, int y, int oldX, int oldY) { TranslateView(x, y, oldX, oldY); @@ -208,7 +204,6 @@ void VTKViewer_InteractorStyle::PanXY(int x, int y, int oldX, int oldY) } -//---------------------------------------------------------------------------- /*! Move the position of the camera along the direction of projection. (dx,dy)*/ void VTKViewer_InteractorStyle::DollyXY(int dx, int dy) { @@ -231,8 +226,6 @@ void VTKViewer_InteractorStyle::DollyXY(int dx, int dy) myGUIWindow->update(); } -//---------------------------------------------------------------------------- -/*!*/ void VTKViewer_InteractorStyle::SpinXY(int x, int y, int oldX, int oldY) { vtkCamera *cam; @@ -259,7 +252,6 @@ void VTKViewer_InteractorStyle::SpinXY(int x, int y, int oldX, int oldY) } -//---------------------------------------------------------------------------- /*!On mouse move event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -278,7 +270,6 @@ void VTKViewer_InteractorStyle::OnMouseMove(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On Left button down event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -315,7 +306,6 @@ void VTKViewer_InteractorStyle::OnLeftButtonDown(int ctrl, int shift, } -//---------------------------------------------------------------------------- /*!On left button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -336,7 +326,6 @@ void VTKViewer_InteractorStyle::OnLeftButtonUp(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On left button up event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -374,7 +363,6 @@ void VTKViewer_InteractorStyle::OnMiddleButtonDown(int ctrl, } -//---------------------------------------------------------------------------- /*!On middle button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -395,7 +383,6 @@ void VTKViewer_InteractorStyle::OnMiddleButtonUp(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On right button down event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -432,7 +419,6 @@ void VTKViewer_InteractorStyle::OnRightButtonDown(int ctrl, } } -//---------------------------------------------------------------------------- /*!On right button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -452,8 +438,7 @@ void VTKViewer_InteractorStyle::OnRightButtonUp(int vtkNotUsed(ctrl), } } -//---------------------------------------------------------------------------- -/** @name XPM - x pixmaps. */ +/*! @name XPM - x pixmaps. */ //@{ /*!Image Zoom cursor*/ const char* imageZoomCursor[] = { @@ -534,7 +519,6 @@ const char* imageRotateCursor[] = { "................................"}; //@} -//---------------------------------------------------------------------------- /*! Loads cursors for viewer operations - zoom, pan, etc...*/ void VTKViewer_InteractorStyle::loadCursors() { @@ -549,7 +533,6 @@ void VTKViewer_InteractorStyle::loadCursors() } -//---------------------------------------------------------------------------- /*! event filter - controls mouse and keyboard events during viewer operations*/ bool VTKViewer_InteractorStyle::eventFilter(QObject* object, QEvent* event) { @@ -563,7 +546,6 @@ bool VTKViewer_InteractorStyle::eventFilter(QObject* object, QEvent* event) } -//---------------------------------------------------------------------------- /*! starts Zoom operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startZoom() { @@ -578,7 +560,6 @@ void VTKViewer_InteractorStyle::startZoom() } -//---------------------------------------------------------------------------- /*! starts Pan operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startPan() { @@ -592,7 +573,6 @@ void VTKViewer_InteractorStyle::startPan() qApp->installEventFilter(this); } -//---------------------------------------------------------------------------- /*! starts Rotate operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startRotate() { @@ -607,7 +587,6 @@ void VTKViewer_InteractorStyle::startRotate() } -//---------------------------------------------------------------------------- /*! starts Spin operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startSpin() { @@ -623,7 +602,6 @@ void VTKViewer_InteractorStyle::startSpin() -//---------------------------------------------------------------------------- /*! starts Fit Area operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startFitArea() { @@ -638,7 +616,6 @@ void VTKViewer_InteractorStyle::startFitArea() } -//---------------------------------------------------------------------------- /*!View fit all.*/ void VTKViewer_InteractorStyle::ViewFitAll() { int aTriedronWasVisible = false; @@ -660,7 +637,6 @@ void VTKViewer_InteractorStyle::ViewFitAll() { } -//---------------------------------------------------------------------------- /*! starts Global Panning operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startGlobalPan() { @@ -684,7 +660,6 @@ void VTKViewer_InteractorStyle::startGlobalPan() } -//---------------------------------------------------------------------------- /*!\retval TRUE if needs redrawing*/ bool VTKViewer_InteractorStyle::needsRedrawing() { @@ -696,7 +671,6 @@ bool VTKViewer_InteractorStyle::needsRedrawing() } -//---------------------------------------------------------------------------- /*! fits viewer contents to rectangle *\param left - left side *\param top - top side @@ -735,7 +709,6 @@ void VTKViewer_InteractorStyle::fitRect(const int left, } -//---------------------------------------------------------------------------- /*! starts viewer operation (!internal usage!)*/ void VTKViewer_InteractorStyle::startOperation(int operation) { @@ -764,7 +737,6 @@ void VTKViewer_InteractorStyle::startOperation(int operation) } -//---------------------------------------------------------------------------- /*! sets proper cursor for window when viewer operation is activated*/ void VTKViewer_InteractorStyle::setCursor(const int operation) { @@ -805,7 +777,6 @@ void VTKViewer_InteractorStyle::setCursor(const int operation) } -//---------------------------------------------------------------------------- /*! called when viewer operation started (!put necessary initialization here!)*/ void VTKViewer_InteractorStyle::onStartOperation() { @@ -832,7 +803,6 @@ void VTKViewer_InteractorStyle::onStartOperation() } -//---------------------------------------------------------------------------- /*! called when viewer operation finished (!put necessary post-processing here!)*/ void VTKViewer_InteractorStyle::onFinishOperation() { @@ -1366,17 +1336,17 @@ void VTKViewer_InteractorStyle::Place(const int theX, const int theY) void VTKViewer_InteractorStyle::TranslateView(int toX, int toY, int fromX, int fromY) { vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - double viewFocus[4], focalDepth, viewPoint[3]; - float newPickPoint[4], oldPickPoint[4], motionVector[3]; + vtkFloatingPointType viewFocus[4], focalDepth, viewPoint[3]; + vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3]; cam->GetFocalPoint(viewFocus); this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1], viewFocus[2], viewFocus); focalDepth = viewFocus[2]; - this->ComputeDisplayToWorld(double(toX), double(toY), + this->ComputeDisplayToWorld(vtkFloatingPointType(toX), vtkFloatingPointType(toY), focalDepth, newPickPoint); - this->ComputeDisplayToWorld(double(fromX),double(fromY), + this->ComputeDisplayToWorld(vtkFloatingPointType(fromX),vtkFloatingPointType(fromY), focalDepth, oldPickPoint); // camera motion is reversed @@ -1400,17 +1370,17 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkActor* theActor, const int left, const int top, const int right, const int bottom) { - float* aBounds = theActor->GetBounds(); - float aMin[3], aMax[3]; + vtkFloatingPointType* aBounds = theActor->GetBounds(); + vtkFloatingPointType aMin[3], aMax[3]; ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; + vtkFloatingPointType aBuf = aMin[0]; aMin[0] = aMax[0]; aMax[0] = aBuf; } if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; + vtkFloatingPointType aBuf = aMin[1]; aMin[1] = aMax[1]; aMax[1] = aBuf; } @@ -1424,17 +1394,17 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkCell* theCell, const int left, const int top, const int right, const int bottom) { - float* aBounds = theCell->GetBounds(); - float aMin[3], aMax[3]; + vtkFloatingPointType* aBounds = theCell->GetBounds(); + vtkFloatingPointType aMin[3], aMax[3]; ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; + vtkFloatingPointType aBuf = aMin[0]; aMin[0] = aMax[0]; aMax[0] = aBuf; } if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; + vtkFloatingPointType aBuf = aMin[1]; aMin[1] = aMax[1]; aMax[1] = aBuf; } @@ -1443,11 +1413,11 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkCell* theCell, } /*!Checks: is given point \a thePoint in rectangle*/ -bool VTKViewer_InteractorStyle::IsInRect(float* thePoint, - const int left, const int top, - const int right, const int bottom) +bool VTKViewer_InteractorStyle::IsInRect(vtkFloatingPointType* thePoint, + const int left, const int top, + const int right, const int bottom) { - float aPnt[3]; + vtkFloatingPointType aPnt[3]; ComputeWorldToDisplay(thePoint[0], thePoint[1], thePoint[2], aPnt); return ((aPnt[0]>left) && (aPnt[0]bottom) && (aPnt[1]GetRenderers(); theRenderers->InitTraversal(); diff --git a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx index daf93e15c..2c15afb72 100755 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx +++ b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx @@ -118,6 +118,11 @@ VTKViewer_RenderWindowInteractor::~VTKViewer_RenderWindowInteractor() myPointPicker->Delete(); } +/*! + Print interactor to stream + \param os - stream + \param indent +*/ void VTKViewer_RenderWindowInteractor::PrintSelf(ostream& os, vtkIndent indent) { vtkRenderWindowInteractor::PrintSelf(os, indent) ; @@ -214,34 +219,6 @@ void VTKViewer_RenderWindowInteractor::SetInteractorStyle(vtkInteractorObserver vtkRenderWindowInteractor::SetInteractorStyle(theInteractor); } - -/* -void VTKViewer_RenderWindowInteractor::SetSelectionMode(Selection_Mode theMode) -{ - myCellActor->SetVisibility(false); - myEdgeActor->SetVisibility(false); - myPointActor->SetVisibility(false); - - switch(theMode){ - case ActorSelection: - this->SetPicker(myBasicPicker); - break; - case NodeSelection: - this->SetPicker(myPointPicker); - break; - case CellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - case EdgeOfCellSelection: - this->SetPicker(myCellPicker); - break; - } - - myInteractorStyle->OnSelectionModeChanged(); -} -*/ - /*!Sets selection properties. *\param theRed - red component of color *\param theGreen - green component of color @@ -351,8 +328,9 @@ int VTKViewer_RenderWindowInteractor::CreateTimer(int vtkNotUsed(timertype)) return 1 ; } -/**@see CreateTimer(int ) - *\retval 1 +/*! + \sa CreateTimer(int ) + \retval 1 */ int VTKViewer_RenderWindowInteractor::DestroyTimer(void) { @@ -623,6 +601,9 @@ void VTKViewer_RenderWindowInteractor::Display( VTKViewer_Actor* theActor, bool emit RenderWindowModified(); } +/*! + default key press event (empty implementation) +*/ void VTKViewer_RenderWindowInteractor::KeyPressed(QKeyEvent *event) { /// NOT_IMPLEMENTED @@ -698,7 +679,7 @@ void VTKViewer_RenderWindowInteractor::setActorData(const TColStd_IndexedMapOfIn TUpdateActor theFun) { (*theFun)(theMapIndex,theMapActor,theActor); - float aPos[3]; + vtkFloatingPointType aPos[3]; theMapActor->GetPosition(aPos); theActor->SetPosition(aPos); } diff --git a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx index c65699a9a..c485a7092 100755 --- a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx +++ b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx @@ -55,13 +55,13 @@ void VTKViewer_ShrinkFilter::Execute() int i, j, numIds, abort=0; vtkIdType cellId, numCells, numPts; vtkIdType oldId, newId; - float center[3], *p, pt[3]; + vtkFloatingPointType center[3], *p, pt[3]; vtkPointData *pd, *outPD;; vtkIdList *ptIds, *newPtIds; vtkDataSet *input= this->GetInput(); vtkUnstructuredGrid *output = this->GetOutput(); vtkIdType tenth; - float decimal; + vtkFloatingPointType decimal; vtkDebugMacro(<<"Shrinking cells"); diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx index a6670cb87..daf3997d5 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.cxx +++ b/src/VTKViewer/VTKViewer_Trihedron.cxx @@ -44,7 +44,10 @@ VTKViewer_UnScaledActor::VTKViewer_UnScaledActor() Bounds[1] = Bounds[3] = Bounds[5] = -VTK_LARGE_FLOAT; } -float* +/*! + \return bounding box +*/ +vtkFloatingPointType* VTKViewer_UnScaledActor ::GetBounds() { @@ -65,19 +68,20 @@ void VTKViewer_UnScaledActor::SetSize(int theSize) void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer) { if(theRenderer){ - float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}}; + vtkFloatingPointType P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}}; theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]); theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]); - float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+ - (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+ - (P[1][2]-P[0][2])*(P[1][2]-P[0][2])); + vtkFloatingPointType aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+ + (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+ + (P[1][2]-P[0][2])*(P[1][2]-P[0][2])); int* aSize = theRenderer->GetRenderWindow()->GetSize(); - float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1])); + vtkFloatingPointType aWinDiag = sqrt(vtkFloatingPointType(aSize[0]*aSize[0]+aSize[1]*aSize[1])); vtkDataSet* aDataSet = GetMapper()->GetInput(); - float aLength = aDataSet->GetLength(); - float aPrecision = 1.0E-3; - float anOldScale = GetScale()[0]; - float aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1])); + aDataSet->Update(); + vtkFloatingPointType aLength = aDataSet->GetLength(); + vtkFloatingPointType aPrecision = 1.0E-3; + vtkFloatingPointType anOldScale = GetScale()[0]; + vtkFloatingPointType aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[0])/vtkFloatingPointType(aSize[1])); if(fabs(aScale - anOldScale)/aScale > aPrecision){ SetScale(aScale); } @@ -104,6 +108,9 @@ void VTKViewer_LineActor::Render(vtkRenderer *theRenderer) vtkFollower::Render(theRenderer); } +/*! + Constructor +*/ VTKViewer_Axis::VTKViewer_Axis() { /*! \li Initialize the Line pipe-line representation*/ @@ -152,6 +159,9 @@ VTKViewer_Axis::VTKViewer_Axis() myVisibility = VTKViewer_Trihedron::eOn; } +/*! + Destructor +*/ VTKViewer_Axis::~VTKViewer_Axis() { /*! \li Destroy of the Label pipe-line representation */ @@ -179,6 +189,9 @@ VTKViewer_Axis::~VTKViewer_Axis() myLineSource->Delete(); } +/*! Add to renderer + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Axis::AddToRender(vtkRenderer* theRenderer){ /*! \li Order of the calls are important*/ theRenderer->AddActor(myLineActor); @@ -186,6 +199,9 @@ void VTKViewer_Axis::AddToRender(vtkRenderer* theRenderer){ theRenderer->AddActor(myArrowActor); } +/*! Remove actor of acis from \a theRenderer which are in myPresent. + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Axis::RemoveFromRender(vtkRenderer* theRenderer){ /*! \li Order of the calls are important*/ theRenderer->RemoveActor(myLineActor); @@ -193,6 +209,7 @@ void VTKViewer_Axis::RemoveFromRender(vtkRenderer* theRenderer){ theRenderer->RemoveActor(myArrowActor); } +/*! Sets visibility for all Axis to \a theVis*/ void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis) { switch(theVis){ @@ -213,20 +230,25 @@ void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis) myVisibility = theVis; } -//**************************************************************** +/*! Set camera for myLabelActor + */ void VTKViewer_Axis::SetCamera(vtkCamera* theCamera){ myLabelActor->SetCamera(theCamera); } +/*! Sets \a theProperty for actors: myLineActor,myLabelActor,myArrowActor + */ void VTKViewer_Axis::SetProperty(vtkProperty* theProperty){ myLabelActor->SetProperty(theProperty); myArrowActor->SetProperty(theProperty); myLineActor->SetProperty(theProperty); } -void VTKViewer_Axis::SetSize(float theSize) +/*! Set size of VTKViewer_Axis + */ +void VTKViewer_Axis::SetSize(vtkFloatingPointType theSize) { - float aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize}; + vtkFloatingPointType aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize}; myLineSource->SetPoint2(aPosition); myArrowActor->SetPosition(0.0,0.0,0.0); @@ -318,16 +340,22 @@ VTKViewer_ZAxis::VTKViewer_ZAxis() vtkStandardNewMacro(VTKViewer_Trihedron); +/*! + Constructor +*/ VTKViewer_Trihedron::VTKViewer_Trihedron() { myPresent = vtkActorCollection::New(); myAxis[0] = VTKViewer_XAxis::New(); myAxis[1] = VTKViewer_YAxis::New(); myAxis[2] = VTKViewer_ZAxis::New(); - static float aSize = 100; + static vtkFloatingPointType aSize = 100; SetSize(aSize); } +/*! + Destructor +*/ VTKViewer_Trihedron::~VTKViewer_Trihedron() { myPresent->RemoveAllItems(); @@ -336,24 +364,34 @@ VTKViewer_Trihedron::~VTKViewer_Trihedron() myAxis[i]->Delete(); } -void VTKViewer_Trihedron::SetSize(float theSize) +/*! Set size of axes + */ +void VTKViewer_Trihedron::SetSize(vtkFloatingPointType theSize) { mySize = theSize; for(int i = 0; i < 3; i++) myAxis[i]->SetSize(theSize); } +/*! Set visibility of axes + */ void VTKViewer_Trihedron::SetVisibility(TVisibility theVis) { for(int i = 0; i < 3; i++) myAxis[i]->SetVisibility(theVis); } +/*! + \return visibility of first axis +*/ VTKViewer_Trihedron::TVisibility VTKViewer_Trihedron::GetVisibility() { return myAxis[0]->GetVisibility(); } +/*! Add to render all Axis + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer) { vtkCamera* aCamera = theRenderer->GetActiveCamera(); @@ -363,6 +401,9 @@ void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer) } } +/*! Remove all actors from \a theRenderer which are in myPresent. + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer) { myPresent->InitTraversal(); @@ -372,6 +413,9 @@ void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer) myAxis[i]->RemoveFromRender(theRenderer); } +/*! Return count of visible actors. + * \param theRenderer - vtkRenderer pointer + */ int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer) { //TVisibility aVis = GetVisibility(); diff --git a/src/VTKViewer/VTKViewer_Trihedron.h b/src/VTKViewer/VTKViewer_Trihedron.h index e40e3bc90..b92cf02f6 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.h +++ b/src/VTKViewer/VTKViewer_Trihedron.h @@ -52,7 +52,7 @@ public: /*!Create new instance of VTKViewer_UnScaledActor.*/ static VTKViewer_UnScaledActor *New(); - virtual float* GetBounds(); + virtual vtkFloatingPointType* GetBounds(); virtual void SetSize(int theSize); virtual void Render(vtkRenderer *theRenderer); @@ -111,7 +111,6 @@ protected: VTKViewer_UnScaledActor* ArrowActor; }; -//**************************************************************** /*!This class provide support trihedron object in vtk viewer.*/ class VTKVIEWER_EXPORT VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject { @@ -133,14 +132,14 @@ public: static VTKViewer_Trihedron *New(); /*!Sets size of trihedron. - * \param theSize - float value + * \param theSize - vtkFloatingPointType value */ - virtual void SetSize(float theSize); + virtual void SetSize(vtkFloatingPointType theSize); /*! Get size of trihedron. - * \retval mySize - float value + * \retval mySize - vtkFloatingPointType value */ - virtual float GetSize() { return mySize;} + virtual vtkFloatingPointType GetSize() { return mySize;} enum TVisibility{eOff, eOn, eOnlyLineOn}; @@ -182,10 +181,9 @@ protected: VTKViewer_Axis* myAxis[3]; /*! Common size for trihedron, for each axis.*/ - float mySize; + vtkFloatingPointType mySize; }; -//**************************************************************** /*!The base class for concreate Axis. * Its only duty is to give correct initialization and destruction * of its pipe-lines @@ -225,7 +223,7 @@ public: /*! Set size of VTKViewer_Axis */ - virtual void SetSize(float theSize); + virtual void SetSize(vtkFloatingPointType theSize); /*! Get label actor. * \retval Return myLabelActor. @@ -248,7 +246,7 @@ protected: /*! \var myRot[3] * Orientation vector */ - float myDir[3], myRot[3]; + vtkFloatingPointType myDir[3], myRot[3]; /*! VTKViewer_LineActor actor pointer */ diff --git a/src/VTKViewer/VTKViewer_Utilities.cxx b/src/VTKViewer/VTKViewer_Utilities.cxx index 723eea3fc..6f5a701ff 100755 --- a/src/VTKViewer/VTKViewer_Utilities.cxx +++ b/src/VTKViewer/VTKViewer_Utilities.cxx @@ -16,18 +16,24 @@ // // See http://www.salome-platform.org/ // + +#include "VTKViewer_Utilities.h" #include "VTKViewer_Actor.h" +#include + // VTK Includes #include #include #include #include -#include "VTKViewer_Utilities.h" +using namespace std; -/*!@see vtkRenderer::ResetCamera(float bounds[6]) method*/ -void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) +/*!@see vtkRenderer::ResetCamera(vtkFloatingPointType bounds[6]) method*/ +void +ResetCamera(vtkRenderer* theRenderer, + int theUsingZeroFocalPoint) { if(!theRenderer) return; @@ -36,20 +42,20 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) if(!aCamera) return; - float aBounds[6]; + vtkFloatingPointType aBounds[6]; int aCount = ComputeVisiblePropBounds(theRenderer,aBounds); if(theUsingZeroFocalPoint || aCount){ - static float MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT; + static vtkFloatingPointType MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT; - float aLength = aBounds[1]-aBounds[0]; + vtkFloatingPointType aLength = aBounds[1]-aBounds[0]; aLength = max((aBounds[3]-aBounds[2]),aLength); aLength = max((aBounds[5]-aBounds[4]),aLength); if(aLength < MIN_DISTANCE) return; - float aWidth = + vtkFloatingPointType aWidth = sqrt((aBounds[1]-aBounds[0])*(aBounds[1]-aBounds[0]) + (aBounds[3]-aBounds[2])*(aBounds[3]-aBounds[2]) + (aBounds[5]-aBounds[4])*(aBounds[5]-aBounds[4])); @@ -57,10 +63,10 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) if(aWidth < MIN_DISTANCE) return; - double aViewPlaneNormal[3]; + vtkFloatingPointType aViewPlaneNormal[3]; aCamera->GetViewPlaneNormal(aViewPlaneNormal); - float aCenter[3] = {0.0, 0.0, 0.0}; + vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0}; if(!theUsingZeroFocalPoint){ aCenter[0] = (aBounds[0] + aBounds[1])/2.0; aCenter[1] = (aBounds[2] + aBounds[3])/2.0; @@ -68,11 +74,11 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) } aCamera->SetFocalPoint(aCenter[0],aCenter[1],aCenter[2]); - double aViewAngle = aCamera->GetViewAngle(); - float aDistance = 2.0*aWidth/tan(aViewAngle*vtkMath::Pi()/360.0); + vtkFloatingPointType aViewAngle = aCamera->GetViewAngle(); + vtkFloatingPointType aDistance = 2.0*aWidth/tan(aViewAngle*vtkMath::Pi()/360.0); // check view-up vector against view plane normal - double aViewUp[3]; + vtkFloatingPointType aViewUp[3]; aCamera->GetViewUp(aViewUp); if(fabs(vtkMath::Dot(aViewUp,aViewPlaneNormal)) > 0.999) aCamera->SetViewUp(-aViewUp[2], aViewUp[0], aViewUp[1]); @@ -85,7 +91,7 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) // find size of the window int* aWinSize = theRenderer->GetSize(); if(aWinSize[0] < aWinSize[1]) - aWidth *= float(aWinSize[1])/float(aWinSize[0]); + aWidth *= vtkFloatingPointType(aWinSize[1])/vtkFloatingPointType(aWinSize[0]); if(theUsingZeroFocalPoint) aWidth *= sqrt(2.0); @@ -97,10 +103,11 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) } /*! Compute the bounds of the visible props*/ -int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]) +int +ComputeVisiblePropBounds(vtkRenderer* theRenderer, + vtkFloatingPointType theBounds[6]) { - float *bounds; - int aCount=0; + int aCount = 0; theBounds[0] = theBounds[2] = theBounds[4] = VTK_LARGE_FLOAT; theBounds[1] = theBounds[3] = theBounds[5] = -VTK_LARGE_FLOAT; @@ -108,53 +115,40 @@ int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]) // loop through all props vtkActorCollection* aCollection = theRenderer->GetActors(); aCollection->InitTraversal(); - while (vtkActor* prop = aCollection->GetNextActor()) { + while (vtkActor* aProp = aCollection->GetNextActor()) { // if it's invisible, or has no geometry, we can skip the rest - if ( prop->GetVisibility() ) - { - if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(prop)) - if(anActor->IsInfinitive()) continue; - bounds = prop->GetBounds(); - // make sure we haven't got bogus bounds - if ( bounds != NULL && - bounds[0] > -VTK_LARGE_FLOAT && bounds[1] < VTK_LARGE_FLOAT && - bounds[2] > -VTK_LARGE_FLOAT && bounds[3] < VTK_LARGE_FLOAT && - bounds[4] > -VTK_LARGE_FLOAT && bounds[5] < VTK_LARGE_FLOAT ) - { - aCount++; - - if (bounds[0] < theBounds[0]) - { - theBounds[0] = bounds[0]; - } - if (bounds[1] > theBounds[1]) - { - theBounds[1] = bounds[1]; - } - if (bounds[2] < theBounds[2]) - { - theBounds[2] = bounds[2]; - } - if (bounds[3] > theBounds[3]) - { - theBounds[3] = bounds[3]; - } - if (bounds[4] < theBounds[4]) - { - theBounds[4] = bounds[4]; - } - if (bounds[5] > theBounds[5]) - { - theBounds[5] = bounds[5]; - } - }//not bogus + if(aProp->GetVisibility() && aProp->GetMapper()){ + if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(aProp)) + if(anActor->IsInfinitive()) + continue; + + vtkFloatingPointType *aBounds = aProp->GetBounds(); + static vtkFloatingPointType MAX_DISTANCE = 0.9*VTK_LARGE_FLOAT; + // make sure we haven't got bogus bounds + if ( aBounds != NULL && + aBounds[0] > -MAX_DISTANCE && aBounds[1] < MAX_DISTANCE && + aBounds[2] > -MAX_DISTANCE && aBounds[3] < MAX_DISTANCE && + aBounds[4] > -MAX_DISTANCE && aBounds[5] < MAX_DISTANCE ) + { + aCount++; + + theBounds[0] = min(aBounds[0],theBounds[0]); + theBounds[2] = min(aBounds[2],theBounds[2]); + theBounds[4] = min(aBounds[4],theBounds[4]); + + theBounds[1] = max(aBounds[1],theBounds[1]); + theBounds[3] = max(aBounds[3],theBounds[3]); + theBounds[5] = max(aBounds[5],theBounds[5]); + + }//not bogus } } return aCount; } -/*!@see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method*/ -void ResetCameraClippingRange(vtkRenderer* theRenderer) +/*!@see vtkRenderer::ResetCameraClippingRange(vtkFloatingPointType bounds[6]) method*/ +void +ResetCameraClippingRange(vtkRenderer* theRenderer) { if(!theRenderer || !theRenderer->VisibleActorCount()) return; @@ -164,28 +158,28 @@ void ResetCameraClippingRange(vtkRenderer* theRenderer) } // Find the plane equation for the camera view plane - double vn[3]; + vtkFloatingPointType vn[3]; anActiveCamera->GetViewPlaneNormal(vn); - double position[3]; + vtkFloatingPointType position[3]; anActiveCamera->GetPosition(position); - float bounds[6]; + vtkFloatingPointType bounds[6]; theRenderer->ComputeVisiblePropBounds(bounds); - double center[3]; + vtkFloatingPointType center[3]; center[0] = (bounds[0] + bounds[1])/2.0; center[1] = (bounds[2] + bounds[3])/2.0; center[2] = (bounds[4] + bounds[5])/2.0; - double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + + vtkFloatingPointType width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + + vtkFloatingPointType distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + (position[1]-center[1])*(position[1]-center[1]) + (position[2]-center[2])*(position[2]-center[2])); - float range[2] = {distance - width/2.0, distance + width/2.0}; + vtkFloatingPointType range[2] = {distance - width/2.0, distance + width/2.0}; // Do not let the range behind the camera throw off the calculation. if (range[0] < 0.0) range[0] = 0.0; @@ -194,23 +188,26 @@ void ResetCameraClippingRange(vtkRenderer* theRenderer) } /*!Compute trihedron size.*/ -bool ComputeTrihedronSize( vtkRenderer* theRenderer,double& theNewSize, - const double theSize, const float theSizeInPercents ) +bool +ComputeTrihedronSize( vtkRenderer* theRenderer, + vtkFloatingPointType& theNewSize, + const vtkFloatingPointType theSize, + const vtkFloatingPointType theSizeInPercents ) { // calculating diagonal of visible props of the renderer - float bnd[ 6 ]; + vtkFloatingPointType bnd[ 6 ]; if ( ComputeVisiblePropBounds( theRenderer, bnd ) == 0 ) { bnd[ 1 ] = bnd[ 3 ] = bnd[ 5 ] = 100; bnd[ 0 ] = bnd[ 2 ] = bnd[ 4 ] = 0; } - float aLength = 0; + vtkFloatingPointType aLength = 0; aLength = bnd[ 1 ]-bnd[ 0 ]; aLength = max( ( bnd[ 3 ] - bnd[ 2 ] ),aLength ); aLength = max( ( bnd[ 5 ] - bnd[ 4 ] ),aLength ); - static float EPS_SIZE = 5.0E-3; + static vtkFloatingPointType EPS_SIZE = 5.0E-3; theNewSize = aLength * theSizeInPercents / 100.0; // if the new trihedron size have sufficient difference, then apply the value diff --git a/src/VTKViewer/VTKViewer_Utilities.h b/src/VTKViewer/VTKViewer_Utilities.h index 6341e885d..a189fd89c 100755 --- a/src/VTKViewer/VTKViewer_Utilities.h +++ b/src/VTKViewer/VTKViewer_Utilities.h @@ -19,22 +19,32 @@ #ifndef VTKVIEWER_UTILITIES_H #define VTKVIEWER_UTILITIES_H -#include +#include "VTKViewer.h" class vtkRenderer; -VTKVIEWER_EXPORT extern void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint = false); -VTKVIEWER_EXPORT extern int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]); -VTKVIEWER_EXPORT extern void ResetCameraClippingRange(vtkRenderer* theRenderer); -VTKVIEWER_EXPORT extern bool ComputeTrihedronSize(vtkRenderer* theRenderer, double& theNewSize, - const double theSize, const float theSizeInPercents); +VTKVIEWER_EXPORT +extern +void +ResetCamera(vtkRenderer* theRenderer, + int theUsingZeroFocalPoint = false); -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif +VTKVIEWER_EXPORT +extern +int +ComputeVisiblePropBounds(vtkRenderer* theRenderer, + vtkFloatingPointType theBounds[6]); -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif +VTKVIEWER_EXPORT +extern +void +ResetCameraClippingRange(vtkRenderer* theRenderer); +VTKVIEWER_EXPORT +extern +bool +ComputeTrihedronSize(vtkRenderer* theRenderer, + vtkFloatingPointType& theNewSize, + const vtkFloatingPointType theSize, + const vtkFloatingPointType theSizeInPercents); #endif diff --git a/src/VTKViewer/VTKViewer_VectorText.cxx b/src/VTKViewer/VTKViewer_VectorText.cxx index b4e62266a..31ea54391 100755 --- a/src/VTKViewer/VTKViewer_VectorText.cxx +++ b/src/VTKViewer/VTKViewer_VectorText.cxx @@ -1751,6 +1751,11 @@ void VTKViewer_VectorText::Execute() newPolys->Delete(); } +/*! + Print text to stream + \param os - stream + \param indent +*/ void VTKViewer_VectorText::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os,indent); diff --git a/src/VTKViewer/VTKViewer_ViewWindow.cxx b/src/VTKViewer/VTKViewer_ViewWindow.cxx index 144590803..44eef236b 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.cxx +++ b/src/VTKViewer/VTKViewer_ViewWindow.cxx @@ -387,7 +387,7 @@ void VTKViewer_ViewWindow::onResetView() ::ResetCamera(myRenderer,true); if(aTriedronIsVisible) myTrihedron->VisibilityOn(); else myTrihedron->VisibilityOff(); - static float aCoeff = 3.0; + static vtkFloatingPointType aCoeff = 3.0; aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale()); Repaint(); } @@ -409,7 +409,7 @@ void VTKViewer_ViewWindow::setBackgroundColor( const QColor& color ) /*!Returns background of the viewport*/ QColor VTKViewer_ViewWindow::backgroundColor() const { - float backint[3]; + vtkFloatingPointType backint[3]; if ( myRenderer ) { myRenderer->GetBackground( backint ); return QColor(int(backint[0]*255), int(backint[1]*255), int(backint[2]*255)); @@ -443,11 +443,11 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){ int aVisibleNum = myTrihedron->GetVisibleActorCount(myRenderer); if(aVisibleNum){ // calculating diagonal of visible props of the renderer - float bnd[6]; + vtkFloatingPointType bnd[6]; myTrihedron->VisibilityOff(); ::ComputeVisiblePropBounds(myRenderer,bnd); myTrihedron->VisibilityOn(); - float aLength = 0; + vtkFloatingPointType aLength = 0; static bool CalcByDiag = false; if(CalcByDiag){ aLength = sqrt((bnd[1]-bnd[0])*(bnd[1]-bnd[0])+ @@ -459,13 +459,13 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){ aLength = max((bnd[5]-bnd[4]),aLength); } - static float aSizeInPercents = 105; + static vtkFloatingPointType aSizeInPercents = 105; QString aSetting;// = SUIT_CONFIG->getSetting("Viewer:TrihedronSize"); if(!aSetting.isEmpty()) aSizeInPercents = aSetting.toFloat(); - static float EPS_SIZE = 5.0E-3; - float aSize = myTrihedron->GetSize(); - float aNewSize = aLength*aSizeInPercents/100.0; + static vtkFloatingPointType EPS_SIZE = 5.0E-3; + vtkFloatingPointType aSize = myTrihedron->GetSize(); + vtkFloatingPointType aNewSize = aLength*aSizeInPercents/100.0; // if the new trihedron size have sufficient difference, then apply the value if(fabs(aNewSize-aSize) > aSize*EPS_SIZE || fabs(aNewSize-aSize) > aNewSize*EPS_SIZE){ myTrihedron->SetSize(aNewSize); @@ -580,7 +580,7 @@ QString VTKViewer_ViewWindow::getVisualParameters() return retStr; } -/* The method restors visual parameters of this view from a formated string +/*! The method restors visual parameters of this view from a formated string */ void VTKViewer_ViewWindow::setVisualParameters( const QString& parameters ) { diff --git a/src/VTKViewer/resources/VTKViewerM_msg_en.po b/src/VTKViewer/resources/VTKViewerM_msg_en.po deleted file mode 100644 index d5e8cc22d..000000000 --- a/src/VTKViewer/resources/VTKViewerM_msg_en.po +++ /dev/null @@ -1,108 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-02-22 16:56:46 CET\n" -"PO-Revision-Date: 2005-06-27 12:38+0400\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#: SVTK_NonIsometricDlg.cxx - -msgid "SVTK_NonIsometricDlg::MEN_SCALING" -msgstr "Scaling" - -msgid "SVTK_NonIsometricDlg::O&K" -msgstr "" - -msgid "SVTK_NonIsometricDlg::&Apply" -msgstr "" - -msgid "SVTK_NonIsometricDlg::&Cancel" -msgstr "" - -msgid "SVTK_NonIsometricDlg::&Reset" -msgstr "" - -msgid "SVTK_NonIsometricDlg::DLG_TITLE" -msgstr "Scaling" - -msgid "SVTK_NonIsometricDlg::LBL_X" -msgstr "X :" - -msgid "SVTK_NonIsometricDlg::LBL_Y" -msgstr "Y :" - -msgid "SVTK_NonIsometricDlg::LBL_Z" -msgstr "Z :" - -msgid "SVTK_MainWindow::MNU_SVTK_SCALING" -msgstr "Scaling" - -msgid "SVTK_MainWindow::DSC_SVTK_SCALING" -msgstr "Scaling" - -msgid "SVTK_FontWidget::ARIAL" -msgstr "Arial" - -msgid "SVTK_FontWidget::COURIER" -msgstr "Courier" - -msgid "SVTK_FontWidget::TIMES" -msgstr "Times" - -msgid "SVTK_FontWidget::BOLD" -msgstr "Bold" - -msgid "SVTK_FontWidget::ITALIC" -msgstr "Italic" - -msgid "SVTK_FontWidget::SHADOW" -msgstr "Shadow" - -msgid "SVTK_CubeAxesDlg::CAPTION" -msgstr "Graduated axes" - -msgid "SVTK_CubeAxesDlg::X_AXIS" -msgstr "X axis" - -msgid "SVTK_CubeAxesDlg::Y_AXIS" -msgstr "Y axis" - -msgid "SVTK_CubeAxesDlg::Z_AXIS" -msgstr "Z axis" - -msgid "SVTK_CubeAxesDlg::IS_VISIBLE" -msgstr "Is visible" - -msgid "SVTK_AxisWidget::AXIS_NAME" -msgstr "Axis name" - -msgid "SVTK_AxisWidget::IS_VISIBLE" -msgstr "Is visible" - -msgid "SVTK_AxisWidget::NAME" -msgstr "Name" - -msgid "SVTK_AxisWidget::FONT" -msgstr "Font" - -msgid "SVTK_AxisWidget::LABELS" -msgstr "Labels" - -msgid "SVTK_AxisWidget::NUMBER" -msgstr "Number" - -msgid "SVTK_AxisWidget::OFFSET" -msgstr "Offset" - -msgid "SVTK_AxisWidget::TICK_MARKS" -msgstr "Tick marks" - -msgid "SVTK_AxisWidget::LENGTH" -msgstr "Length" - -msgid "SVTK_MainWindow::MNU_SVTK_GRADUATED_AXES" -msgstr "Graduated axes" - -msgid "SVTK_MainWindow::DSC_SVTK_GRADUATED_AXES" -msgstr "Graduated axes" \ No newline at end of file diff --git a/src/VTKViewer/resources/VTKViewer_msg_en.po b/src/VTKViewer/resources/VTKViewer_msg_en.po index 603fbb3c0..8d0210f4a 100755 --- a/src/VTKViewer/resources/VTKViewer_msg_en.po +++ b/src/VTKViewer/resources/VTKViewer_msg_en.po @@ -131,9 +131,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "VTKViewer_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." diff --git a/src/VTKViewer/resources/view_update_rate.png b/src/VTKViewer/resources/view_update_rate.png new file mode 100755 index 0000000000000000000000000000000000000000..3d01ad18482c5a4b8c37a4d4784935bbf9dfda78 GIT binary patch literal 972 zcmV;-12g=IP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ#c!2mTx`6-zgkd1auxNgMhW|&8GCa6=kpU#5v||TIsvD}L6iL4_ z5Whq=7$AUHK!k>x8Xu6#1me{nKYnCj0O8xW8D9SQ!C((GSX@-}%C{ds96x{l{1B*S znwY4l%HO|#-8k6UC;j{Xf7kODFXqAw1qdJ(sKFg6si~PeckJl!{qu+6|D#6?=RSXC z2)cHS!NJas!QI0{=jzp~3b8WS7q#>WS81A{kE-22Gk!Ktwj+7#X2^%Aa$}bGUtKj1^@&QIHv$(YZ^3R z!@;j#zc&B-_m7K%gToo_dZS2&&u<C;*u^AbP+VPriiDXITr zVqy$3GBONXwrl}sEp2V>FDB)e7#`g`&G78}28MU{PB6T_aR8)zC&)ZdDgxs5Kzt7% zfUp$~+#p2)z5)#Vm-rdDxw#n>Q}!}^czB-S{lha1*EZC_)a``QcY$~V5FZ1jB!B?I zTH1ih10Z$<;u%;{%UWnj!+`EOkN`jc;W7~9N$D2U!bMTJ*dkr!3qa} u0K#P;vH{9a!^M&0UP2AIi(Y&I1Q-C)H>OJ$<6_?c0000@}v&{ literal 0 HcmV?d00001 -- 2.39.2