]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Merge from BR_DEBUG_3_2_0b1
authorouv <ouv@opencascade.com>
Thu, 15 Jun 2006 08:33:53 +0000 (08:33 +0000)
committerouv <ouv@opencascade.com>
Thu, 15 Jun 2006 08:33:53 +0000 (08:33 +0000)
714 files changed:
INSTALL
Makefile.in
adm_local/unix/make_commence.in
bin/VERSION [deleted file]
bin/runLightSalome.sh
build_configure
configure.in.base
doc/Makefile.in
doc/salome/GUI_index.html [deleted file]
doc/salome/GUI_index_v3.1.0.html [deleted file]
doc/salome/Makefile.in
doc/salome/tui/GUI/sources/Application-About.png
doc/salome/tui/Makefile.in
doc/salome/tui/SUIT/doxyfile [deleted file]
doc/salome/tui/SUIT/sources/Application-About.png [deleted file]
doc/salome/tui/SUIT/sources/application.gif [deleted file]
doc/salome/tui/SUIT/sources/html_comments.gif [deleted file]
doc/salome/tui/SUIT/sources/logocorp.gif [deleted file]
doc/salome/tui/SUIT/sources/myheader.html [deleted file]
idl/SalomeApp_Engine.idl
src/CAF/CAF.h
src/CAF/CAF_Application.cxx
src/CAF/CAF_Application.h
src/CAF/CAF_Operation.cxx
src/CAF/CAF_Operation.h
src/CAF/CAF_Study.cxx
src/CAF/CAF_Study.h
src/CAF/CAF_Tools.cxx
src/CAF/CAF_Tools.h
src/CAF/Makefile.in
src/CAF/resources/CAF_images.po
src/CAF/resources/CAF_msg_en.po
src/CAM/CAM.h
src/CAM/CAM_Application.cxx
src/CAM/CAM_Application.h
src/CAM/CAM_DataModel.cxx
src/CAM/CAM_DataModel.h
src/CAM/CAM_DataObject.cxx
src/CAM/CAM_DataObject.h
src/CAM/CAM_Module.cxx
src/CAM/CAM_Module.h
src/CAM/CAM_RootObject.cxx
src/CAM/CAM_RootObject.h
src/CAM/CAM_Study.cxx
src/CAM/CAM_Study.h
src/CAM/Makefile.in
src/CAM/resources/CAM_msg_en.po
src/DDS/DDS.h
src/DDS/DDS_DicGroup.cxx
src/DDS/DDS_DicGroup.h
src/DDS/DDS_DicItem.cxx
src/DDS/DDS_DicItem.h
src/DDS/DDS_Dictionary.cxx
src/DDS/DDS_Dictionary.h
src/DDS/DDS_KeyWords.cxx
src/DDS/DDS_KeyWords.h
src/DDS/Makefile.in
src/Event/Event.h
src/Event/Makefile.in
src/Event/SALOME_Event.cxx
src/Event/SALOME_Event.hxx
src/GLViewer/GLViewer.h
src/GLViewer/GLViewer_AspectLine.cxx
src/GLViewer/GLViewer_AspectLine.h
src/GLViewer/GLViewer_BaseDrawers.cxx
src/GLViewer/GLViewer_BaseDrawers.h
src/GLViewer/GLViewer_BaseObjects.cxx
src/GLViewer/GLViewer_BaseObjects.h
src/GLViewer/GLViewer_Compass.cxx
src/GLViewer/GLViewer_Compass.h
src/GLViewer/GLViewer_Context.cxx
src/GLViewer/GLViewer_Context.h
src/GLViewer/GLViewer_CoordSystem.cxx
src/GLViewer/GLViewer_CoordSystem.h
src/GLViewer/GLViewer_Defs.h
src/GLViewer/GLViewer_Drawer.cxx
src/GLViewer/GLViewer_Drawer.h
src/GLViewer/GLViewer_Geom.cxx
src/GLViewer/GLViewer_Geom.h
src/GLViewer/GLViewer_Grid.cxx
src/GLViewer/GLViewer_Grid.h
src/GLViewer/GLViewer_Group.cxx
src/GLViewer/GLViewer_Group.h
src/GLViewer/GLViewer_MimeSource.cxx
src/GLViewer/GLViewer_MimeSource.h
src/GLViewer/GLViewer_Object.cxx
src/GLViewer/GLViewer_Object.h
src/GLViewer/GLViewer_Selector.cxx
src/GLViewer/GLViewer_Selector.h
src/GLViewer/GLViewer_Selector2d.cxx
src/GLViewer/GLViewer_Selector2d.h
src/GLViewer/GLViewer_Text.cxx
src/GLViewer/GLViewer_Text.h
src/GLViewer/GLViewer_ToolTip.cxx
src/GLViewer/GLViewer_ToolTip.h
src/GLViewer/GLViewer_Tools.cxx
src/GLViewer/GLViewer_Tools.h
src/GLViewer/GLViewer_ViewFrame.cxx
src/GLViewer/GLViewer_ViewFrame.h
src/GLViewer/GLViewer_ViewManager.cxx
src/GLViewer/GLViewer_ViewManager.h
src/GLViewer/GLViewer_ViewPort.cxx
src/GLViewer/GLViewer_ViewPort.h
src/GLViewer/GLViewer_ViewPort2d.cxx
src/GLViewer/GLViewer_ViewPort2d.h
src/GLViewer/GLViewer_Viewer.cxx
src/GLViewer/GLViewer_Viewer.h
src/GLViewer/GLViewer_Viewer2d.cxx
src/GLViewer/GLViewer_Viewer2d.h
src/GLViewer/GLViewer_Widget.cxx
src/GLViewer/GLViewer_Widget.h
src/GLViewer/Makefile.in
src/GLViewer/resources/GLViewer_images.po
src/GLViewer/resources/GLViewer_msg_en.po
src/LightApp/LightApp.h
src/LightApp/LightApp_AboutDlg.cxx
src/LightApp/LightApp_AboutDlg.h
src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Application.h
src/LightApp/LightApp_DataModel.cxx
src/LightApp/LightApp_DataModel.h
src/LightApp/LightApp_DataObject.cxx
src/LightApp/LightApp_DataObject.h
src/LightApp/LightApp_DataOwner.cxx
src/LightApp/LightApp_DataOwner.h
src/LightApp/LightApp_DataSubOwner.cxx
src/LightApp/LightApp_DataSubOwner.h
src/LightApp/LightApp_Dialog.cxx
src/LightApp/LightApp_Dialog.h
src/LightApp/LightApp_Displayer.cxx
src/LightApp/LightApp_Displayer.h
src/LightApp/LightApp_Driver.cxx
src/LightApp/LightApp_Driver.h
src/LightApp/LightApp_GLSelector.cxx
src/LightApp/LightApp_GLSelector.h
src/LightApp/LightApp_Module.cxx
src/LightApp/LightApp_Module.h
src/LightApp/LightApp_ModuleDlg.cxx
src/LightApp/LightApp_ModuleDlg.h
src/LightApp/LightApp_NameDlg.cxx
src/LightApp/LightApp_NameDlg.h
src/LightApp/LightApp_OBFilter.cxx
src/LightApp/LightApp_OBFilter.h
src/LightApp/LightApp_OBSelector.cxx
src/LightApp/LightApp_OBSelector.h
src/LightApp/LightApp_OCCSelector.cxx
src/LightApp/LightApp_OCCSelector.h
src/LightApp/LightApp_Operation.cxx
src/LightApp/LightApp_Operation.h
src/LightApp/LightApp_Preferences.cxx
src/LightApp/LightApp_Preferences.h
src/LightApp/LightApp_PreferencesDlg.cxx
src/LightApp/LightApp_PreferencesDlg.h
src/LightApp/LightApp_RootObject.h
src/LightApp/LightApp_Selection.cxx
src/LightApp/LightApp_Selection.h
src/LightApp/LightApp_SelectionMgr.cxx
src/LightApp/LightApp_SelectionMgr.h
src/LightApp/LightApp_ShowHideOp.cxx
src/LightApp/LightApp_ShowHideOp.h
src/LightApp/LightApp_Study.cxx
src/LightApp/LightApp_Study.h
src/LightApp/LightApp_SwitchOp.cxx
src/LightApp/LightApp_SwitchOp.h
src/LightApp/LightApp_UpdateFlags.h
src/LightApp/LightApp_VTKSelector.cxx
src/LightApp/LightApp_VTKSelector.h
src/LightApp/LightApp_WidgetContainer.cxx
src/LightApp/LightApp_WidgetContainer.h
src/LightApp/Makefile.in
src/LightApp/resources/LightApp.xml
src/LightApp/resources/LightApp_images.po
src/LightApp/resources/LightApp_msg_en.po
src/LightApp/resources/icon_about.png
src/LogWindow/LogWindow.cxx
src/LogWindow/LogWindow.h
src/LogWindow/Makefile.in
src/Makefile.in
src/OBJECT/Handle_SALOME_AISObject.hxx
src/OBJECT/Handle_SALOME_AISShape.hxx
src/OBJECT/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx
src/OBJECT/Handle_SALOME_Filter.hxx
src/OBJECT/Handle_SALOME_InteractiveObject.hxx
src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx
src/OBJECT/Handle_SALOME_TypeFilter.hxx
src/OBJECT/Makefile.in
src/OBJECT/SALOME_AISObject.cxx
src/OBJECT/SALOME_AISObject.hxx
src/OBJECT/SALOME_AISObject.ixx
src/OBJECT/SALOME_AISObject.jxx
src/OBJECT/SALOME_AISShape.cxx
src/OBJECT/SALOME_AISShape.hxx
src/OBJECT/SALOME_AISShape.ixx
src/OBJECT/SALOME_AISShape.jxx
src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx
src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx
src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx
src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx
src/OBJECT/SALOME_DataMapOfIOMapOfInteger.hxx
src/OBJECT/SALOME_DataMapOfIOMapOfInteger_0.cxx
src/OBJECT/SALOME_Filter.cxx
src/OBJECT/SALOME_Filter.hxx
src/OBJECT/SALOME_Filter.ixx
src/OBJECT/SALOME_Filter.jxx
src/OBJECT/SALOME_GLOwner.cxx [deleted file]
src/OBJECT/SALOME_GLOwner.h [deleted file]
src/OBJECT/SALOME_InteractiveObject.cxx
src/OBJECT/SALOME_InteractiveObject.hxx
src/OBJECT/SALOME_InteractiveObject.ixx
src/OBJECT/SALOME_InteractiveObject.jxx
src/OBJECT/SALOME_ListIO.hxx
src/OBJECT/SALOME_ListIO_0.cxx
src/OBJECT/SALOME_ListIteratorOfListIO.hxx
src/OBJECT/SALOME_ListIteratorOfListIO_0.cxx
src/OBJECT/SALOME_ListNodeOfListIO.hxx
src/OBJECT/SALOME_ListNodeOfListIO_0.cxx
src/OBJECT/SALOME_Selection.h
src/OBJECT/SALOME_TypeFilter.cxx
src/OBJECT/SALOME_TypeFilter.hxx
src/OBJECT/SALOME_TypeFilter.ixx
src/OBJECT/SALOME_TypeFilter.jxx
src/OCCViewer/Makefile.in
src/OCCViewer/OCCViewer.h
src/OCCViewer/OCCViewer_AISSelector.cxx
src/OCCViewer/OCCViewer_AISSelector.h
src/OCCViewer/OCCViewer_ClippingDlg.cxx
src/OCCViewer/OCCViewer_ClippingDlg.h
src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx
src/OCCViewer/OCCViewer_CreateRestoreViewDlg.h
src/OCCViewer/OCCViewer_VService.cxx
src/OCCViewer/OCCViewer_VService.h
src/OCCViewer/OCCViewer_ViewManager.cxx
src/OCCViewer/OCCViewer_ViewManager.h
src/OCCViewer/OCCViewer_ViewModel.cxx
src/OCCViewer/OCCViewer_ViewModel.h
src/OCCViewer/OCCViewer_ViewPort.cxx
src/OCCViewer/OCCViewer_ViewPort.h
src/OCCViewer/OCCViewer_ViewPort3d.cxx
src/OCCViewer/OCCViewer_ViewPort3d.h
src/OCCViewer/OCCViewer_ViewWindow.cxx
src/OCCViewer/OCCViewer_ViewWindow.h
src/OCCViewer/resources/OCCViewer_images.po
src/OCCViewer/resources/OCCViewer_msg_en.po
src/ObjBrowser/Makefile.in
src/ObjBrowser/OB.h
src/ObjBrowser/OB_Browser.cxx
src/ObjBrowser/OB_Browser.h
src/ObjBrowser/OB_Filter.cxx
src/ObjBrowser/OB_Filter.h
src/ObjBrowser/OB_ListItem.cxx
src/ObjBrowser/OB_ListItem.h
src/ObjBrowser/OB_ListView.cxx
src/ObjBrowser/OB_ListView.h
src/ObjBrowser/resources/OB_msg_en.po
src/Plot2d/Makefile.in
src/Plot2d/Plot2d.h
src/Plot2d/Plot2d_Curve.cxx
src/Plot2d/Plot2d_Curve.h
src/Plot2d/Plot2d_FitDataDlg.cxx
src/Plot2d/Plot2d_FitDataDlg.h
src/Plot2d/Plot2d_Prs.cxx
src/Plot2d/Plot2d_Prs.h
src/Plot2d/Plot2d_SetupCurveDlg.cxx
src/Plot2d/Plot2d_SetupCurveDlg.h
src/Plot2d/Plot2d_SetupViewDlg.cxx
src/Plot2d/Plot2d_SetupViewDlg.h
src/Plot2d/Plot2d_ViewFrame.cxx
src/Plot2d/Plot2d_ViewFrame.h
src/Plot2d/Plot2d_ViewManager.cxx
src/Plot2d/Plot2d_ViewManager.h
src/Plot2d/Plot2d_ViewModel.cxx
src/Plot2d/Plot2d_ViewModel.h
src/Plot2d/Plot2d_ViewWindow.cxx
src/Plot2d/Plot2d_ViewWindow.h
src/Plot2d/resources/Plot2d_images.po
src/Plot2d/resources/Plot2d_msg_en.po
src/Prs/Makefile.in
src/Prs/SALOME_Prs.cxx
src/Prs/SALOME_Prs.h
src/PyInterp/Makefile.in
src/PyInterp/PyInterp.h
src/PyInterp/PyInterp_Dispatcher.cxx
src/PyInterp/PyInterp_Dispatcher.h
src/PyInterp/PyInterp_Watcher.h
src/PyInterp/PyInterp_base.cxx
src/PyInterp/PyInterp_base.h
src/PythonConsole/Makefile.in
src/PythonConsole/PythonConsole.h
src/PythonConsole/PythonConsole_PyConsole.cxx
src/PythonConsole/PythonConsole_PyConsole.h
src/PythonConsole/PythonConsole_PyEditor.cxx
src/PythonConsole/PythonConsole_PyEditor.h
src/PythonConsole/PythonConsole_PyInterp.cxx
src/PythonConsole/PythonConsole_PyInterp.h
src/QDS/Makefile.in
src/QDS/QDS.cxx
src/QDS/QDS.h
src/QDS/QDS_CheckBox.cxx
src/QDS/QDS_CheckBox.h
src/QDS/QDS_ComboBox.cxx
src/QDS/QDS_ComboBox.h
src/QDS/QDS_Datum.cxx
src/QDS/QDS_Datum.h
src/QDS/QDS_LineEdit.cxx
src/QDS/QDS_LineEdit.h
src/QDS/QDS_RadioBox.cxx
src/QDS/QDS_RadioBox.h
src/QDS/QDS_SpinBox.cxx
src/QDS/QDS_SpinBox.h
src/QDS/QDS_SpinBoxDbl.cxx
src/QDS/QDS_SpinBoxDbl.h
src/QDS/QDS_TextEdit.cxx
src/QDS/QDS_TextEdit.h
src/QDS/QDS_Validator.cxx
src/QDS/QDS_Validator.h
src/QDS/resources/QDS_msg_en.po
src/Qtx/Makefile.in
src/Qtx/Qtx.cxx
src/Qtx/Qtx.h
src/Qtx/QtxAction.cxx
src/Qtx/QtxAction.h
src/Qtx/QtxActionMenuMgr.cxx
src/Qtx/QtxActionMenuMgr.h
src/Qtx/QtxActionMgr.cxx
src/Qtx/QtxActionMgr.h
src/Qtx/QtxActionToolMgr.cxx
src/Qtx/QtxActionToolMgr.h
src/Qtx/QtxColorScale.cxx
src/Qtx/QtxColorScale.h
src/Qtx/QtxComboBox.cxx
src/Qtx/QtxComboBox.h
src/Qtx/QtxDblSpinBox.cxx
src/Qtx/QtxDblSpinBox.h
src/Qtx/QtxDblValidator.cxx
src/Qtx/QtxDblValidator.h
src/Qtx/QtxDialog.cxx
src/Qtx/QtxDialog.h
src/Qtx/QtxDirListEditor.cxx
src/Qtx/QtxDirListEditor.h
src/Qtx/QtxDockAction.cxx
src/Qtx/QtxDockAction.h
src/Qtx/QtxDockWindow.cxx
src/Qtx/QtxDockWindow.h
src/Qtx/QtxGroupBox.cxx
src/Qtx/QtxGroupBox.h
src/Qtx/QtxIntSpinBox.cxx
src/Qtx/QtxIntSpinBox.h
src/Qtx/QtxListAction.cxx
src/Qtx/QtxListAction.h
src/Qtx/QtxListBox.cxx
src/Qtx/QtxListBox.h
src/Qtx/QtxListOfOperations.cxx
src/Qtx/QtxListOfOperations.h
src/Qtx/QtxListResourceEdit.cxx
src/Qtx/QtxListResourceEdit.h
src/Qtx/QtxListView.cxx
src/Qtx/QtxListView.h
src/Qtx/QtxLogoMgr.cxx
src/Qtx/QtxLogoMgr.h
src/Qtx/QtxMRUAction.cxx
src/Qtx/QtxMRUAction.h
src/Qtx/QtxMainWindow.cxx
src/Qtx/QtxMainWindow.h
src/Qtx/QtxMenuButton.cxx
src/Qtx/QtxMenuButton.h
src/Qtx/QtxOperations.cxx
src/Qtx/QtxOperations.h
src/Qtx/QtxParser.cxx
src/Qtx/QtxParser.h
src/Qtx/QtxPathDialog.cxx
src/Qtx/QtxPathDialog.h
src/Qtx/QtxPopupMenu.cxx
src/Qtx/QtxPopupMenu.h
src/Qtx/QtxPopupMgr.cxx
src/Qtx/QtxPopupMgr.h
src/Qtx/QtxResourceEdit.cxx
src/Qtx/QtxResourceEdit.h
src/Qtx/QtxResourceMgr.cxx
src/Qtx/QtxResourceMgr.h
src/Qtx/QtxStdOperations.cxx
src/Qtx/QtxStdOperations.h
src/Qtx/QtxTable.cxx
src/Qtx/QtxTable.h
src/Qtx/QtxToolBar.cxx
src/Qtx/QtxToolBar.h
src/Qtx/QtxToolTip.cxx
src/Qtx/QtxToolTip.h
src/Qtx/QtxWorkspaceAction.cxx
src/Qtx/QtxWorkspaceAction.h
src/Qtx/QtxWorkstack.cxx
src/Qtx/QtxWorkstack.h
src/Qtx/QtxWorkstackAction.cxx
src/Qtx/QtxWorkstackAction.h
src/RegistryDisplay/HelpWindow.cxx
src/RegistryDisplay/HelpWindow.hxx
src/RegistryDisplay/IntervalWindow.cxx
src/RegistryDisplay/IntervalWindow.hxx
src/RegistryDisplay/Makefile.in
src/RegistryDisplay/RegWidget.cxx
src/RegistryDisplay/RegWidget.h
src/RegistryDisplay/RegWidgetFactory.cxx
src/ResExporter/Makefile.in
src/ResExporter/ResourceExporter.cxx
src/SALOME_PY/Makefile.in
src/SALOME_PY/SalomePy.cxx
src/SALOME_PYQT/Makefile.in
src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.h
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h
src/SALOME_PYQT/SalomePyQt/Makefile.in
src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx
src/SALOME_PYQT/SalomePyQt/SalomePyQt.h
src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip
src/SALOME_PYQT/SalomePyQt/SalomePyQt_v4.sip
src/SALOME_SWIG/Makefile.in
src/SALOME_SWIG/SALOMEGUI_Swig.cxx
src/SALOME_SWIG/SALOMEGUI_Swig.hxx
src/SALOME_SWIG/SALOMEGUI_Swig.i
src/SALOME_SWIG/SALOMEGUI_shared_modules.py
src/SALOME_SWIG/examplevtk1.py
src/SALOME_SWIG/libSALOME_Swig.i
src/SALOME_SWIG/salome_test.py [deleted file]
src/SALOME_SWIG/supervisionexample.py
src/SALOME_SWIG/supervisiongeomexample.py
src/SALOME_SWIG/test_big_table.py
src/SALOME_SWIG/test_many_objects.py
src/SALOME_SWIG/test_remove_ref.py
src/SALOME_SWIG/test_table.py
src/SALOME_SWIG/testattr.py
src/SOCC/Makefile.in
src/SOCC/SOCC.h
src/SOCC/SOCC_Prs.cxx
src/SOCC/SOCC_Prs.h
src/SOCC/SOCC_ViewModel.cxx
src/SOCC/SOCC_ViewModel.h
src/SOCC/SOCC_ViewWindow.cxx
src/SOCC/SOCC_ViewWindow.h
src/SPlot2d/Makefile.in
src/SPlot2d/SPlot2d.h
src/SPlot2d/SPlot2d_Curve.cxx
src/SPlot2d/SPlot2d_Curve.h
src/SPlot2d/SPlot2d_Prs.cxx
src/SPlot2d/SPlot2d_Prs.h
src/SPlot2d/SPlot2d_ViewModel.cxx
src/SPlot2d/SPlot2d_ViewModel.h
src/STD/Makefile.in
src/STD/STD.h
src/STD/STD_Application.cxx
src/STD/STD_Application.h
src/STD/STD_CloseDlg.cxx
src/STD/STD_CloseDlg.h
src/STD/STD_LoadStudiesDlg.cxx
src/STD/STD_LoadStudiesDlg.h
src/STD/STD_MDIDesktop.cxx
src/STD/STD_MDIDesktop.h
src/STD/STD_SDIDesktop.cxx
src/STD/STD_SDIDesktop.h
src/STD/STD_TabDesktop.cxx
src/STD/STD_TabDesktop.h
src/STD/resources/STD_images.po
src/STD/resources/STD_msg_en.po
src/SUIT/Makefile.in
src/SUIT/SUIT.h
src/SUIT/SUIT_Accel.cxx
src/SUIT/SUIT_Accel.h
src/SUIT/SUIT_ActionOperation.cxx
src/SUIT/SUIT_ActionOperation.h
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Application.h
src/SUIT/SUIT_Convertor.h
src/SUIT/SUIT_DataObject.cxx
src/SUIT/SUIT_DataObject.h
src/SUIT/SUIT_DataObjectIterator.cxx
src/SUIT/SUIT_DataObjectIterator.h
src/SUIT/SUIT_DataObjectKey.cxx
src/SUIT/SUIT_DataObjectKey.h
src/SUIT/SUIT_DataOwner.cxx
src/SUIT/SUIT_DataOwner.h
src/SUIT/SUIT_Desktop.cxx
src/SUIT/SUIT_Desktop.h
src/SUIT/SUIT_ExceptionHandler.cxx
src/SUIT/SUIT_ExceptionHandler.h
src/SUIT/SUIT_FileDlg.cxx
src/SUIT/SUIT_FileDlg.h
src/SUIT/SUIT_FileValidator.cxx
src/SUIT/SUIT_FileValidator.h
src/SUIT/SUIT_MessageBox.cxx
src/SUIT/SUIT_MessageBox.h
src/SUIT/SUIT_Operation.cxx
src/SUIT/SUIT_Operation.h
src/SUIT/SUIT_OverrideCursor.cxx
src/SUIT/SUIT_OverrideCursor.h
src/SUIT/SUIT_ParserSettings.cxx
src/SUIT/SUIT_ParserSettings.h
src/SUIT/SUIT_PopupClient.cxx
src/SUIT/SUIT_PopupClient.h
src/SUIT/SUIT_ResourceMgr.cxx
src/SUIT/SUIT_ResourceMgr.h
src/SUIT/SUIT_SelectionFilter.cxx
src/SUIT/SUIT_SelectionFilter.h
src/SUIT/SUIT_SelectionMgr.cxx
src/SUIT/SUIT_SelectionMgr.h
src/SUIT/SUIT_Selector.cxx
src/SUIT/SUIT_Selector.h
src/SUIT/SUIT_Session.cxx
src/SUIT/SUIT_Session.h
src/SUIT/SUIT_SmartPtr.h
src/SUIT/SUIT_Study.cxx
src/SUIT/SUIT_Study.h
src/SUIT/SUIT_ToolButton.cxx
src/SUIT/SUIT_ToolButton.h
src/SUIT/SUIT_Tools.cxx
src/SUIT/SUIT_Tools.h
src/SUIT/SUIT_TreeSync.h
src/SUIT/SUIT_ViewManager.cxx
src/SUIT/SUIT_ViewManager.h
src/SUIT/SUIT_ViewModel.cxx
src/SUIT/SUIT_ViewModel.h
src/SUIT/SUIT_ViewWindow.cxx
src/SUIT/SUIT_ViewWindow.h
src/SUIT/resources/SUIT_images.po
src/SUIT/resources/SUIT_msg_en.po
src/SUIT/utilities.h
src/SUITApp/Makefile.in
src/SUITApp/SUITApp.cxx
src/SUITApp/SUITApp_Application.cxx
src/SUITApp/SUITApp_Application.h
src/SUITApp/resources/SUITApp_msg_en.po
src/SUPERVGraph/Makefile.in
src/SUPERVGraph/SUPERVGraph.cxx
src/SUPERVGraph/SUPERVGraph.h
src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx
src/SUPERVGraph/SUPERVGraph_ViewFrame.h
src/SUPERVGraph/SUPERVGraph_ViewManager.cxx
src/SUPERVGraph/SUPERVGraph_ViewManager.h
src/SUPERVGraph/SUPERVGraph_ViewModel.cxx
src/SUPERVGraph/SUPERVGraph_ViewModel.h
src/SUPERVGraph/resources/SUPERVGraph_images.po
src/SUPERVGraph/resources/SUPERVGraph_msg_en.po
src/SUPERVGraph/resources/view_pan.png
src/SUPERVGraph/resources/view_reset.png
src/SVTK/Makefile.in
src/SVTK/SALOME_Actor.cxx
src/SVTK/SALOME_Actor.h
src/SVTK/SVTK.cxx
src/SVTK/SVTK.h
src/SVTK/SVTK_Actor.cxx
src/SVTK/SVTK_Actor.h
src/SVTK/SVTK_CubeAxesActor2D.cxx
src/SVTK/SVTK_CubeAxesActor2D.h
src/SVTK/SVTK_CubeAxesDlg.cxx
src/SVTK/SVTK_CubeAxesDlg.h
src/SVTK/SVTK_DeviceActor.cxx
src/SVTK/SVTK_DeviceActor.h
src/SVTK/SVTK_Event.h
src/SVTK/SVTK_FontWidget.cxx
src/SVTK/SVTK_FontWidget.h
src/SVTK/SVTK_Functor.h
src/SVTK/SVTK_GenericRenderWindowInteractor.cxx
src/SVTK/SVTK_GenericRenderWindowInteractor.h
src/SVTK/SVTK_InteractorStyle.cxx
src/SVTK/SVTK_InteractorStyle.h
src/SVTK/SVTK_MainWindow.cxx
src/SVTK/SVTK_MainWindow.h
src/SVTK/SVTK_NonIsometricDlg.cxx
src/SVTK/SVTK_NonIsometricDlg.h
src/SVTK/SVTK_Prs.cxx
src/SVTK/SVTK_Prs.h
src/SVTK/SVTK_RectPicker.cxx
src/SVTK/SVTK_RectPicker.h
src/SVTK/SVTK_RenderWindowInteractor.cxx
src/SVTK/SVTK_RenderWindowInteractor.h
src/SVTK/SVTK_Renderer.cxx
src/SVTK/SVTK_Renderer.h
src/SVTK/SVTK_Selection.h
src/SVTK/SVTK_SelectionEvent.h
src/SVTK/SVTK_Selector.cxx
src/SVTK/SVTK_Selector.h
src/SVTK/SVTK_SelectorDef.h
src/SVTK/SVTK_SpaceMouse.cxx
src/SVTK/SVTK_SpaceMouse.h
src/SVTK/SVTK_Trihedron.cxx
src/SVTK/SVTK_Trihedron.h
src/SVTK/SVTK_View.cxx
src/SVTK/SVTK_View.h
src/SVTK/SVTK_ViewManager.cxx
src/SVTK/SVTK_ViewManager.h
src/SVTK/SVTK_ViewModel.cxx
src/SVTK/SVTK_ViewModel.h
src/SVTK/SVTK_ViewModelBase.h
src/SVTK/SVTK_ViewWindow.cxx
src/SVTK/SVTK_ViewWindow.h
src/SVTK/resources/SVTK_msg_en.po
src/SalomeApp/Makefile.in
src/SalomeApp/SalomeApp.h
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_Application.h
src/SalomeApp/SalomeApp_CheckFileDlg.cxx
src/SalomeApp/SalomeApp_CheckFileDlg.h
src/SalomeApp/SalomeApp_DataModel.cxx
src/SalomeApp/SalomeApp_DataModel.h
src/SalomeApp/SalomeApp_DataObject.cxx
src/SalomeApp/SalomeApp_DataObject.h
src/SalomeApp/SalomeApp_Displayer.cxx
src/SalomeApp/SalomeApp_Displayer.h
src/SalomeApp/SalomeApp_EventFilter.cxx
src/SalomeApp/SalomeApp_EventFilter.h
src/SalomeApp/SalomeApp_ExceptionHandler.cxx
src/SalomeApp/SalomeApp_ExceptionHandler.h
src/SalomeApp/SalomeApp_Filter.cxx
src/SalomeApp/SalomeApp_Filter.h
src/SalomeApp/SalomeApp_ImportOperation.cxx
src/SalomeApp/SalomeApp_ImportOperation.h
src/SalomeApp/SalomeApp_ListView.cxx
src/SalomeApp/SalomeApp_ListView.h
src/SalomeApp/SalomeApp_Module.cxx
src/SalomeApp/SalomeApp_Module.h
src/SalomeApp/SalomeApp_PyInterp.cxx
src/SalomeApp/SalomeApp_PyInterp.h
src/SalomeApp/SalomeApp_Study.cxx
src/SalomeApp/SalomeApp_Study.h
src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx
src/SalomeApp/SalomeApp_StudyPropertiesDlg.h
src/SalomeApp/SalomeApp_Tools.cxx
src/SalomeApp/SalomeApp_Tools.h
src/SalomeApp/SalomeApp_TypeFilter.cxx
src/SalomeApp/SalomeApp_TypeFilter.h
src/SalomeApp/resources/SalomeApp.xml
src/SalomeApp/resources/SalomeApp_images.po
src/SalomeApp/resources/SalomeApp_msg_en.po
src/Session/InquireServersQThread.cxx
src/Session/InquireServersQThread.h
src/Session/Makefile.in
src/Session/SALOME_Session_Server.cxx
src/Session/SalomeApp_Engine_i.cxx
src/Session/SalomeApp_Engine_i.hxx
src/Session/Session_ServerCheck.hxx
src/Session/Session_ServerLauncher.cxx
src/Session/Session_ServerLauncher.hxx
src/Session/Session_ServerThread.cxx
src/Session/Session_ServerThread.hxx
src/Session/Session_Session_i.cxx
src/Session/Session_Session_i.hxx
src/Session/Session_SignalsHandler.cxx [deleted file]
src/Style/Makefile.in
src/Style/SalomeStyle.cxx
src/Style/SalomeStyle.h
src/TOOLSGUI/Makefile.in
src/TOOLSGUI/ToolsGUI.cxx
src/TOOLSGUI/ToolsGUI.h
src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx
src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h
src/TOOLSGUI/ToolsGUI_HelpWindow.cxx
src/TOOLSGUI/ToolsGUI_HelpWindow.h
src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx
src/TOOLSGUI/ToolsGUI_IntervalWindow.h
src/TOOLSGUI/ToolsGUI_RegWidget.cxx
src/TOOLSGUI/ToolsGUI_RegWidget.h
src/TOOLSGUI/resources/ToolsGUI_msg_en.po
src/VTKViewer/Makefile.in
src/VTKViewer/VTKViewer.cxx
src/VTKViewer/VTKViewer.h
src/VTKViewer/VTKViewer_Actor.cxx
src/VTKViewer/VTKViewer_Actor.h
src/VTKViewer/VTKViewer_Algorithm.h
src/VTKViewer/VTKViewer_AppendFilter.cxx
src/VTKViewer/VTKViewer_AppendFilter.h
src/VTKViewer/VTKViewer_CellRectPicker.cxx
src/VTKViewer/VTKViewer_CellRectPicker.h
src/VTKViewer/VTKViewer_ConvexTool.cxx
src/VTKViewer/VTKViewer_ConvexTool.h
src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx
src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h
src/VTKViewer/VTKViewer_Filter.cxx
src/VTKViewer/VTKViewer_Filter.h
src/VTKViewer/VTKViewer_Functor.h
src/VTKViewer/VTKViewer_GeometryFilter.cxx
src/VTKViewer/VTKViewer_GeometryFilter.h
src/VTKViewer/VTKViewer_InteractorStyle.cxx
src/VTKViewer/VTKViewer_InteractorStyle.h
src/VTKViewer/VTKViewer_PassThroughFilter.cxx
src/VTKViewer/VTKViewer_PassThroughFilter.h
src/VTKViewer/VTKViewer_RectPicker.cxx
src/VTKViewer/VTKViewer_RectPicker.h
src/VTKViewer/VTKViewer_RenderWindow.cxx
src/VTKViewer/VTKViewer_RenderWindow.h
src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx
src/VTKViewer/VTKViewer_RenderWindowInteractor.h
src/VTKViewer/VTKViewer_ShrinkFilter.cxx
src/VTKViewer/VTKViewer_ShrinkFilter.h
src/VTKViewer/VTKViewer_Transform.cxx
src/VTKViewer/VTKViewer_Transform.h
src/VTKViewer/VTKViewer_TransformFilter.cxx
src/VTKViewer/VTKViewer_TransformFilter.h
src/VTKViewer/VTKViewer_Trihedron.cxx
src/VTKViewer/VTKViewer_Trihedron.h
src/VTKViewer/VTKViewer_Utilities.cxx
src/VTKViewer/VTKViewer_Utilities.h
src/VTKViewer/VTKViewer_VectorText.cxx
src/VTKViewer/VTKViewer_VectorText.h
src/VTKViewer/VTKViewer_ViewManager.cxx
src/VTKViewer/VTKViewer_ViewManager.h
src/VTKViewer/VTKViewer_ViewModel.cxx
src/VTKViewer/VTKViewer_ViewModel.h
src/VTKViewer/VTKViewer_ViewWindow.cxx
src/VTKViewer/VTKViewer_ViewWindow.h
src/VTKViewer/resources/VTKViewerM_images.po [deleted file]
src/VTKViewer/resources/VTKViewerM_msg_en.po [deleted file]
src/VTKViewer/resources/VTKViewer_images.po
src/VTKViewer/resources/VTKViewer_msg_en.po
src/VTKViewer/resources/view_update_rate.png

diff --git a/INSTALL b/INSTALL
index 2f6965076f2f9d1b0222814610d4c536b0776d10..31600814ed71b4ae1dea8b48f44d38f0db301095 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,3 +1 @@
-This is the version 3.2.0a1 of SALOMEGUI
-Compatible with :
-        - KERNEL 3.2.0a1
+SALOME2 : GUI module
index 989c6a47611a2795477f0eb8f8d78b0b32d3f4ef..81a618ac445f67bf5030eb850078eb4c4d9b050c 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # -* Makefile *- 
 #
 # Author : Patrick GOLDBRONN (CEA)
@@ -14,7 +32,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top
 
 @COMMENCE@
 
-SUBDIRS = idl src doc
+SUBDIRS = src doc adm_local
 
 RESOURCES_FILES = \
 back.xpm \
@@ -81,22 +99,25 @@ runLightSalome.sh
 # copy header files in common directory
 OWN_CONFIG_H=@OWN_CONFIG_H@
 
+include_list = include/salome/SALOMEconfig.h \
+               include/salome/GUI_version.h
+
 ifeq ($(OWN_CONFIG_H),yes)
-    ifeq ($(HAVE_SSTREAM),yes)
-       include_list=include/salome/SALOMEconfig.h include/salome/config.h
-    else
-       include_list=include/salome/SALOMEconfig.h include/salome/config.h include/salome/sstream
-    endif
-else
-    ifeq ($(HAVE_SSTREAM),yes)
-       include_list=include/salome/SALOMEconfig.h
-    else
-       include_list=include/salome/SALOMEconfig.h include/salome/sstream
-    endif
+       include_list += include/salome/config.h
+endif
+
+ifneq ($(HAVE_SSTREAM),yes)
+       include_list += include/salome/sstream
 endif
 
 inc: idl $(include_list)
 
+bin: bin/salome/VERSION
+
+bin/salome/VERSION : bin/VERSION
+       -$(RM) $@
+       $(LN_S) ../../$< $@
+
 include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
        -$(RM) $@
        $(LN_S) ../../$< $@
@@ -118,10 +139,14 @@ include/salome/sstream: salome_adm/unix/sstream
        -$(RM) $@
        $(LN_S) ../../$< $@
 
-depend: depend_idl
+include/salome/GUI_version.h: GUI_version.h
+       -$(RM) $@
+       $(LN_S) ../../$< $@
 
-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:
@@ -150,10 +175,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
 
index cb1d7e4703af005fc8dbffd866c7a8c9473c64df..0a5de34a29e99c83951c17beb44823ee34a6a662 100644 (file)
@@ -1,6 +1,14 @@
 # common directories to put headerfiles
 inc_builddir=$(top_builddir)/include/salome
 
+GUI_DISABLE_CORBA=@GUI_DISABLE_CORBA@
+DISABLE_GLVIEWER=@DISABLE_GLVIEWER@
+DISABLE_PYCONSOLE=@DISABLE_PYCONSOLE@
+DISABLE_PLOT2DVIEWER=@DISABLE_PLOT2DVIEWER@
+DISABLE_SUPERVGRAPHVIEWER=@DISABLE_SUPERVGRAPHVIEWER@
+DISABLE_OCCVIEWER=@DISABLE_OCCVIEWER@
+DISABLE_VTKVIEWER=@DISABLE_VTKVIEWER@
+DISABLE_SALOMEOBJECT=@DISABLE_SALOMEOBJECT@
 @SET_MAKE@
 SHELL=/bin/sh
 
@@ -11,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++
@@ -54,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@
@@ -108,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@
@@ -123,6 +125,7 @@ CAS_VIEWER=@CAS_VIEWER@
 CAS_MODELER=@CAS_MODELER@
 CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
 CAS_LDPATH=@CAS_LDPATH@
+
 # MPICH
 
 MPICH_INCLUDES=@MPICH_INCLUDES@
@@ -175,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@
@@ -201,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
@@ -238,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 :-)
@@ -254,14 +267,9 @@ $(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base
 
 
 ACLOCAL_SRC = \
-ac_cxx_bool.m4                    check_corba.m4     check_vtk.m4      \
-ac_cxx_depend_flag.m4             check_hdf5.m4      enable_pthreads.m4        \
-ac_cxx_mutable.m4                 check_mico.m4      libtool.m4                \
-ac_cxx_namespaces.m4              check_omniorb.m4   pyembed.m4                \
-ac_cxx_partial_specialization.m4  check_opengl.m4    python.m4         \
-ac_cxx_typename.m4                check_pthreads.m4  check_cas.m4      \
-ac_cc_warnings.m4                 check_qt.m4        check_swig.m4      \
-check_boost.m4                    check_msg2qm.m4 
-
-$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
-       cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
+check_qt.m4                        check_vtk.m4       check_qwt.m4 \
+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 -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
diff --git a/bin/VERSION b/bin/VERSION
deleted file mode 100755 (executable)
index e7134d9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-THIS IS SALOME - SALOMEGUI VERSION: 3.2.0a1
index f99a8125fd4d4685680b315d2c4d2360adbb9e12..b2f67d65e897c594273abe6e8ab4ee762e19cbf8 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #!/bin/bash -f
 
 if [ -z "$SUITRoot" ] ; then          
index ec5cce644a17373bb3c97efee81d30d60538dcce..b36fde32a040f9410efa03b56cda2d0a4a048cfc 100755 (executable)
@@ -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 " ./salome_adm/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
@@ -202,7 +202,7 @@ else
        echo -n "Creating 'configure' script ...  "
 fi
 
-aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files
+aclocal -adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files
 if autoconf
 then
        echo "done"
index e6be9b20d0a5cc97ccd895372c3caa3f86db2d80..4b7af75f9f2f7ca8b2835caef598d2932b315b54 100644 (file)
@@ -23,8 +23,45 @@ AC_CANONICAL_HOST
 PACKAGE=salome
 AC_SUBST(PACKAGE)
 
-VERSION=0.0.1
+VERSION=3.2.0
+XVERSION=0x030200
 AC_SUBST(VERSION)
+AC_SUBST(XVERSION)
+
+########################################################################
+# Check --disable-corba-gen and other --disable-* options
+
+GUI_DISABLE_CORBA="no"
+DISABLE_PYCONSOLE="no"
+DISABLE_GLVIEWER="no"
+DISABLE_PLOT2DVIEWER="no"
+DISABLE_SUPERVGRAPHVIEWER="no"
+DISABLE_OCCVIEWER="no"
+DISABLE_VTKVIEWER="no"
+DISABLE_SALOMEOBJECT="no"
+
+for option
+do
+  case $option in
+      -disable-corba-gen=yes | --disable-corba-gen=yes | -disable-corba-gen | --disable-corba-gen)
+          GUI_DISABLE_CORBA="yes";;
+      -disable-pyConsole=yes | --disable-pyConsole=yes | -disable-pyConsole | --disable-pyConsole)
+          DISABLE_PYCONSOLE="yes";;
+      -disable-glViewer=yes | --disable-glViewer=yes | -disable-glViewer | --disable-glViewer)
+          DISABLE_GLVIEWER="yes";;
+      -disable-plot2dViewer=yes | --disable-plot2dViewer=yes | -disable-plot2dViewer | --disable-plot2dViewer)
+          DISABLE_PLOT2DVIEWER="yes";;
+      -disable-supervGraphViewer=yes | --disable-supervGraphViewer=yes | \
+      -disable-supervGraphViewer | --disable-supervGraphViewer)
+          DISABLE_SUPERVGRAPHVIEWER="yes";;
+      -disable-occViewer=yes | --disable-occViewer=yes | -disable-occViewer | --disable-occViewer)
+          DISABLE_OCCVIEWER="yes";;
+      -disable-vtkViewer=yes | --disable-vtkViewer=yes | -disable-vtkViewer | --disable-vtkViewer)
+          DISABLE_VTKVIEWER="yes";;
+      -disable-salomeObject=yes | --disable-salomeObject=yes | -disable-salomeObject | --disable-salomeObject)
+          DISABLE_SALOMEOBJECT="yes";;
+  esac
+done
 
 dnl
 dnl Initialize source and build root directories
@@ -151,6 +188,17 @@ dnl echo
 
 dnl CHECK_JAVA
 
+echo
+echo ---------------------------------------------
+echo Testing Disable Corba
+echo ---------------------------------------------
+echo
+
+CHECK_DISABLE_CORBA
+echo "GUI_DISABLE_CORBA = "$GUI_DISABLE_CORBA
+
+if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
+
 echo
 echo ---------------------------------------------
 echo testing swig
@@ -158,6 +206,7 @@ echo ---------------------------------------------
 echo
 
 CHECK_SWIG
+fi
 
 echo
 echo ---------------------------------------------
@@ -167,6 +216,7 @@ echo
 
 ENABLE_PTHREADS
 
+if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
 echo
 echo ---------------------------------------------
 echo testing omniORB
@@ -190,12 +240,20 @@ echo ---------------------------------------------
 echo
 
 DEFAULT_ORB=omniORB
+
+echo
+echo ---------------------------------------------
+echo testing Corba
+echo ---------------------------------------------
+echo
+
 CHECK_CORBA
 
 AC_SUBST_FILE(CORBA)
 corba=make_$ORB
 CORBA=adm_local/unix/$corba
 
+fi
 echo
 echo ---------------------------------------------
 echo testing openGL
@@ -276,6 +334,100 @@ echo
 
 CHECK_QWT 
 
+echo
+echo ---------------------------------------------
+echo Testing PyConsole
+echo ---------------------------------------------
+echo
+
+CHECK_PYCONSOLE
+echo "DISABLE_PYCONSOLE = "$DISABLE_PYCONSOLE
+
+echo
+echo ---------------------------------------------
+echo Testing GlViewer
+echo ---------------------------------------------
+echo
+
+CHECK_GLVIEWER
+echo "DISABLE_GLVIEWER = "$DISABLE_GLVIEWER
+
+echo
+echo ---------------------------------------------
+echo Testing Plot2dViewer
+echo ---------------------------------------------
+echo
+
+CHECK_PLOT2DVIEWER
+echo "DISABLE_PLOT2DVIEWER = "$DISABLE_PLOT2DVIEWER
+
+echo
+echo ---------------------------------------------
+echo Testing SupervGraphViewer
+echo ---------------------------------------------
+echo
+
+CHECK_SUPERVGRAPHVIEWER
+echo "DISABLE_SUPERVGRAPHVIEWER = "$DISABLE_SUPERVGRAPHVIEWER
+
+echo
+echo ---------------------------------------------
+echo Testing OCCViewer
+echo ---------------------------------------------
+echo
+
+CHECK_OCCVIEWER
+echo "DISABLE_OCCVIEWER = "$DISABLE_OCCVIEWER
+
+echo
+echo ---------------------------------------------
+echo Testing VTKViewer
+echo ---------------------------------------------
+echo
+
+CHECK_VTKVIEWER
+echo "DISABLE_VTKVIEWER = "$DISABLE_VTKVIEWER
+
+echo
+echo ---------------------------------------------
+echo Testing SalomeObject
+echo ---------------------------------------------
+echo
+
+CHECK_SALOMEOBJECT
+echo "DISABLE_SALOMEOBJECT = "$DISABLE_SALOMEOBJECT
+
+if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
+  if test "x${DISABLE_PYCONSOLE}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable PyConsole !"
+    exit
+  fi
+  if test "x${DISABLE_GLVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable GlViewer !"
+    exit
+  fi
+  if test "x${DISABLE_PLOT2DVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable Plot2dViewer !"
+    exit
+  fi
+  if test "x${DISABLE_SUPERVGRAPHVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable SupervGraphViewer !"
+    exit
+  fi
+  if test "x${DISABLE_OCCVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable OCCViewer !"
+    exit
+  fi
+  if test "x${DISABLE_VTKVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable VTKViewer !"
+    exit
+  fi
+  if test "x${DISABLE_SALOMEOBJECT}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable SalomeObject !"
+    exit
+  fi
+fi
+
 echo
 echo ---------------------------------------------
 echo Testing html generators
@@ -289,17 +441,34 @@ echo ---------------------------------------------
 echo Testing Kernel
 echo ---------------------------------------------
 echo
-
 CHECK_KERNEL
 
+echo
+echo ---------------------------------------------
+echo Testing CPPUNIT only required for unit testing
+echo ---------------------------------------------
+echo
+
+CHECK_CPPUNIT
+
 echo
 echo ---------------------------------------------
 echo Summary
 echo ---------------------------------------------
 echo
 
-echo Configure
+if test "$GUI_DISABLE_CORBA" == "yes"; then 
+   echo "Configure (without Corba)"
+else
+   echo Configure
+fi
+
+
+if test "$GUI_DISABLE_CORBA" != "yes"; then 
 variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok msg2qm_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok"
+else
+variables="cc_ok lex_yacc_ok python_ok threads_ok OpenGL_ok qt_ok msg2qm_ok vtk_ok hdf5_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok"
+fi
 
 for var in $variables
 do
@@ -307,14 +476,27 @@ do
    eval echo \$$var
 done
 
+echo "---Optional:"
+variables="cppunit_ok"
+for var in $variables
+do
+   eval toto=\$$var
+   if test x$toto != "x"; then
+     printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+     eval echo \$$var
+   fi
+done
+
+if test "$GUI_DISABLE_CORBA" != "yes"; then 
 echo
 echo "Default ORB   : $DEFAULT_ORB"
 echo
-
+fi
 dnl generals files which could be included in every makefile
 
 AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence
-AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=adm_local/unix/make_conclude
 AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
 
 dnl les dependences
@@ -329,7 +511,13 @@ else
 fi
 
 # make other build directories
-for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl
+if test "$GUI_DISABLE_CORBA" == "yes"; then 
+  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${LIB_LOCATION_SUFFIX}/salome share/salome/resources"
+fi
+
+for rep in $dir_variables
 do
 #   if test ! -d $rep ; then
 #      eval mkdir $rep
index 7295ede75128e9e51b474f63ed9f8d7a128bb3df..4a62d64a2d5cac486ada22024469a0dba5e573db 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 
 # -* Makefile *- 
 #
@@ -19,6 +37,17 @@ docs:
        @@SETX@; for d in $(SUBDIRS); do        \
           (cd $$d && $(MAKE) $@) || exit 1;    \
        done
+
+usr_docs:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+dev_docs:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
 clean:
        @@SETX@; for d in $(SUBDIRS); do        \
           (cd $$d && $(MAKE) $@) || exit 1;    \
diff --git a/doc/salome/GUI_index.html b/doc/salome/GUI_index.html
deleted file mode 100755 (executable)
index 465e3ea..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-                                            
-  <meta http-equiv="Content-Type"
- content="text/html; charset=iso-8859-1">
-                                            
-  <meta name="GENERATOR"
- content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-  <title>Gui Module Documentation</title>
-</head>
-  <body bgcolor="#cccccc" text="#000000" link="#0000ee" alink="#0000ee"
- vlink="#551a8b">
-       
-<div align="center">    &nbsp;           
-<center>          
-<center>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp;&nbsp;</center>
-       
-<table width="96%" align="center">
-           <tbody>
-              <tr>
-           <td><a href="http://www.opencascade.com"><img
- src="tui/SUIT/sources/logocorp.gif" border="0" height="46" width="122">
-                </a></td>
-             <td>                                                       
-               
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
- src="tui/SUIT/sources/application.gif" border="0" height="46" width="108">
-                </a></div>
-           </td>
-           </tr>
-                                                      
-  </tbody>    
-</table>
-       
-<div align="center">    
-<center>    
-<hr width="100%" size="2">   
-<h1>GUI MODULE Documentation</h1>
-                                     </center>
-    </div>
-       
-<table width="96%">
-      <tbody>
-               
-  </tbody>    
-</table>
-    </center>
-       
-<div align="center">       
-<p> <img src="tui/SUIT/sources/Application-About.png"
- alt="Application-About.png" width="30%" height="20%">
-    &nbsp; &nbsp;&nbsp;          </p>
-             </div>
-       
-<center>    
-<table width="96%">
-      <tbody>
-                 
-  </tbody>    
-</table>
-   <br>
-   <br>
-   <br>
-   </center>
-     
-<address> </address>
-   
-<center><big><a href="gui/KERNEL/kernel.htm">GUI Documentation</a></big></center>
-      
-<address> </address>
-   
-<center></center>
-      
-<center><br>
-   </center>
-     
-<address> </address>
-   
-<center><big><a href="tui/SUIT/index.html">TUI Documentation</a></big></center>
-      
-<address> </address>
-   
-<center></center>
-      
-<center><br>
-   <br>
-    </center>
-    </div>
-     <br>
-  <br>
- <br>
-</body>
-</html>
diff --git a/doc/salome/GUI_index_v3.1.0.html b/doc/salome/GUI_index_v3.1.0.html
deleted file mode 100755 (executable)
index 465e3ea..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-                                            
-  <meta http-equiv="Content-Type"
- content="text/html; charset=iso-8859-1">
-                                            
-  <meta name="GENERATOR"
- content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-  <title>Gui Module Documentation</title>
-</head>
-  <body bgcolor="#cccccc" text="#000000" link="#0000ee" alink="#0000ee"
- vlink="#551a8b">
-       
-<div align="center">    &nbsp;           
-<center>          
-<center>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp;&nbsp;</center>
-       
-<table width="96%" align="center">
-           <tbody>
-              <tr>
-           <td><a href="http://www.opencascade.com"><img
- src="tui/SUIT/sources/logocorp.gif" border="0" height="46" width="122">
-                </a></td>
-             <td>                                                       
-               
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
- src="tui/SUIT/sources/application.gif" border="0" height="46" width="108">
-                </a></div>
-           </td>
-           </tr>
-                                                      
-  </tbody>    
-</table>
-       
-<div align="center">    
-<center>    
-<hr width="100%" size="2">   
-<h1>GUI MODULE Documentation</h1>
-                                     </center>
-    </div>
-       
-<table width="96%">
-      <tbody>
-               
-  </tbody>    
-</table>
-    </center>
-       
-<div align="center">       
-<p> <img src="tui/SUIT/sources/Application-About.png"
- alt="Application-About.png" width="30%" height="20%">
-    &nbsp; &nbsp;&nbsp;          </p>
-             </div>
-       
-<center>    
-<table width="96%">
-      <tbody>
-                 
-  </tbody>    
-</table>
-   <br>
-   <br>
-   <br>
-   </center>
-     
-<address> </address>
-   
-<center><big><a href="gui/KERNEL/kernel.htm">GUI Documentation</a></big></center>
-      
-<address> </address>
-   
-<center></center>
-      
-<center><br>
-   </center>
-     
-<address> </address>
-   
-<center><big><a href="tui/SUIT/index.html">TUI Documentation</a></big></center>
-      
-<address> </address>
-   
-<center></center>
-      
-<center><br>
-   <br>
-    </center>
-    </div>
-     <br>
-  <br>
- <br>
-</body>
-</html>
index ca1d6f2826c1a5198014aa244b03d8c43971244d..72b2d98ad9576821999a41c381d35c8cea99586f 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 
 # -* Makefile *- 
 #
@@ -12,33 +30,48 @@ srcdir=@srcdir@
 VPATH=.:@srcdir@
 
 SUBDIRS= tui gui
+SUBDIRSTUI= tui
+SUBDIRSGUI= gui
 
 @COMMENCE@
 
-docs:
-       @@SETX@; for d in $(SUBDIRS); do        \
+usr_docs:
+       @@SETX@; for d in $(SUBDIRSGUI); do     \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done; \
+
+docs: usr_docs
+
+dev_docs:
+       @@SETX@; for d in $(SUBDIRSTUI); do     \
           (cd $$d && $(MAKE) $@) || exit 1;    \
        done; \
-       cp -f $(srcdir)/GUI_index_v3.1.0.html GUI_index_v3.1.0.html
 
 clean:
        @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
+          if test -d $$d/GUI; then                     \
+             (cd $$d && $(MAKE) $@) || exit 1; \
+          fi;                                  \
        done
 
 distclean: clean
        @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
+          if test -d $$d/GUI; then             \
+             (cd $$d && $(MAKE) $@) || exit 1; \
+          fi;                                  \
        done
 
 install:
        $(MAKE) docs
-       (cd tui && $(MAKE) install);
-       (cd gui && $(MAKE) install);
-       cp -f GUI_index_v3.1.0.html $(docdir)
+       @@SETX@; for d in $(SUBDIRS); do        \
+          if test -d $$d/GUI; then             \
+             (cd $$d && $(MAKE) $@);           \
+          fi;                                  \
+       done
 
 uninstall:
        @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
+          if test -d $$d/GUI; then             \
+             (cd $$d && $(MAKE) $@) || exit 1; \
+          fi;                                  \
        done; \
-       rm -fr $(docdir)/GUI_index_v3.1.0.html
index 7b58330d50856e28562e8f9ed80dae72d6e6dda3..df0d5a187398c59271c45249950a92cd9cec68bb 100755 (executable)
Binary files a/doc/salome/tui/GUI/sources/Application-About.png and b/doc/salome/tui/GUI/sources/Application-About.png differ
index 0372e6a1f2e448628f6b4968c33fdeb9c4200686..dc94bcbb760d30843b9a6f4763b7a514845771d6 100644 (file)
@@ -1,11 +1,24 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#  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/ or email : webmaster.salome@opencascade.com
 #
 #  File   : Makefile.in
 #  Author : Vasily Rusyaev (Open Cascade NN)
 #  Module : doc
-#  $Header: 
 
 top_srcdir=@top_srcdir@
 top_builddir=../../..
@@ -16,18 +29,35 @@ doxygen=@DOXYGEN@
 
 @COMMENCE@
 
-docs:
-       cp -fr $(srcdir)/SUIT ./INPUT; \
+dev_docs:
+       cp -fr $(srcdir)/GUI ./INPUT; \
+       cp -f ./GUI/doxyfile ./INPUT; \
        cd INPUT; \
        sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
+       sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \
+       mv -f doxyfile2 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 ; \
+       cp -fr $(srcdir)/GUI/sources/ GUI ; \
        rm -fr INPUT
 
 clean:
-       rm -fr SUIT
+       rm -fr GUI
 
 distclean: clean
        rm -fr INPUT
@@ -35,7 +65,7 @@ distclean: clean
 install:
        $(INSTALL) -d $(docdir); \
        mkdir -p $(docdir)/tui
-       cp -fr SUIT $(docdir)/tui
+       cp -fr GUI $(docdir)/tui
 
 uninstall:
-       rm -fr $(docdir)/tui/SUIT
+       rm -fr $(docdir)/tui/GUI
diff --git a/doc/salome/tui/SUIT/doxyfile b/doc/salome/tui/SUIT/doxyfile
deleted file mode 100755 (executable)
index bb5e49f..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-# Doxyfile 1.3.7
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = "SALOME v.3.2.0a1"
-PROJECT_NUMBER         = id#1.1
-OUTPUT_DIRECTORY       = ../
-CREATE_SUBDIRS         = NO
-OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = NO
-STRIP_FROM_PATH        = 
-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
-TAB_SIZE               = 5
-ALIASES                = 
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = YES
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-EXTRACT_LOCAL_METHODS  = NO
-HIDE_UNDOC_MEMBERS     = YES
-HIDE_UNDOC_CLASSES     = YES
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = YES
-CASE_SENSE_NAMES       = YES
-HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = NO
-SORT_BRIEF_DOCS        = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 25
-SHOW_USED_FILES        = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_IF_DOC_ERROR      = YES
-WARN_FORMAT            = "$file:$line: $text"
-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
-RECURSIVE              = YES
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = YES
-IMAGE_PATH             = sources/
-INPUT_FILTER           = 
-FILTER_SOURCE_FILES    = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = NO
-INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = NO
-REFERENCES_RELATION    = YES
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = NO
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = SUIT
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = sources/myheader.html
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = YES
-TOC_EXPAND             = YES
-DISABLE_INDEX          = YES
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = YES
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = YES
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = NO
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = NO
-HAVE_DOT               = YES
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = NO
-UML_LOOK               = NO
-TEMPLATE_RELATIONS     = YES
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = NO
-CALL_GRAPH             = NO
-GRAPHICAL_HIERARCHY    = YES
-DOT_IMAGE_FORMAT       = jpg
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1200
-MAX_DOT_GRAPH_DEPTH    = 0
-GENERATE_LEGEND        = NO
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
diff --git a/doc/salome/tui/SUIT/sources/Application-About.png b/doc/salome/tui/SUIT/sources/Application-About.png
deleted file mode 100755 (executable)
index 7b58330..0000000
Binary files a/doc/salome/tui/SUIT/sources/Application-About.png and /dev/null differ
diff --git a/doc/salome/tui/SUIT/sources/application.gif b/doc/salome/tui/SUIT/sources/application.gif
deleted file mode 100755 (executable)
index 0b05d5c..0000000
Binary files a/doc/salome/tui/SUIT/sources/application.gif and /dev/null differ
diff --git a/doc/salome/tui/SUIT/sources/html_comments.gif b/doc/salome/tui/SUIT/sources/html_comments.gif
deleted file mode 100755 (executable)
index f0c0f0b..0000000
Binary files a/doc/salome/tui/SUIT/sources/html_comments.gif and /dev/null differ
diff --git a/doc/salome/tui/SUIT/sources/logocorp.gif b/doc/salome/tui/SUIT/sources/logocorp.gif
deleted file mode 100755 (executable)
index 7697e08..0000000
Binary files a/doc/salome/tui/SUIT/sources/logocorp.gif and /dev/null differ
diff --git a/doc/salome/tui/SUIT/sources/myheader.html b/doc/salome/tui/SUIT/sources/myheader.html
deleted file mode 100755 (executable)
index 83ca543..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-   <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-&nbsp;
-<center><table WIDTH="96%" >
-<tr>
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
-
-
-<td>
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
-</td>
-</tr>
-</table></center>
-
-
-</body>
-</html>
index d52b2eac219c91c9f8a145a78a4155513529e8fa..abce369ffeeaba7b52838504ac080015fd06584b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SalomeApp_Engine.idl
 //  Author : Alexander SLADKOV
index 0eee9465605b9e9d5109b2e799b328e8edb353de..d70c01d806f9f2871978cdd1411d9db191e43dbc 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAF_H
 #define CAF_H
index 823d09355ca235f1be9d4460911535d4686f7f23..78bc1d566264bd8a0184e385099a57f8b6a24c8a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAF_Application.h"
 
@@ -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;
index 1ec88331d43d39bfa8541c7693cbc70d6d388d73..81a16413d394766b3cb93d3438cf412c0af51fa4 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAF_APPLICATION_H
 #define 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
index 24bc5ecd876154a7ccc84286e4d56c9b3372bbfe..67fd2785fb1d6b6cb26453fcab5f5ec1f0a7bb81 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAF_Operation.h"
 
 
 #include <TDocStd_Document.hxx>
 
-//////////////////////////////////////////////////////////////////////
-// 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;
index f49e315d799076c7338e0fc324b2959b703c79c6..d6ae43694c3a49a0cb4585a8a8aae93057fa758e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAF_OPERATION_H
 #define CAF_OPERATION_H
 #include <Standard.hxx>
 
 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
index 176023a1f03492b444a7d914c05e37295eb90384..7acc291dc08eb735a5803efdddd9239cd095d494 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAF_Study.h"
 
 
 #include <Standard_ErrorHandler.hxx>
 
-//////////////////////////////////////////////////////////////////////
-// 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
 {
index fe47c5b0b9909b4c5538e955433c2ea9d707d38a..0e5980cc970e2e7ef4042b283c342f4b2ec56c6d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAF_STUDY_H
 #define 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
index c32d4a27e75441383622a9fcafd1c54edeec6242..f637a3e876e17be555459f03bdedc77262bf957f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : CAF_Tools.cxx
 //  Author : UI team
@@ -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 ),
index e04d1c9d89f4d9f301268ab426ebd0a790537561..c0183586e0975db7d74948e583eb3803d5b02036 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : CAF_Tools.h
 //  Author : UI team
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
 
+/*!
+  \class CAF_Tools
+  Prodives set of auxiliary static methods
+*/
 class CAF_EXPORT CAF_Tools : public SUIT_Tools
 {
 public:
index 8aae89d85b19815186bb044604ddfd6a3677e670..d50233a40b1ddb6b686cd99a0cff853cce0c370f 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : caf
index a624b35c78590be56789110b65e5723d97c0d3c7..083e775062b992c4b21fc1444a506176d514497e 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index 59119c2410415a24c5a9c083fe57e4f18eff4ad8..de9372fedfa49bfcdc5a6536b3355df9c06e4994 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index 427fb53ce28552ef09d6a522af1e9b83f3c36e0a..b953c9927be718401521753c6fc95a9a268c319a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_H
 #define CAM_H
index ef7cd09e4be7c0d002e0a5878432ee1ce0569f6c..baabb3970951a607f044d2959d9cc43957ecbc75 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_Application.h"
 
@@ -179,9 +179,13 @@ void CAM_Application::loadModules()
     CAM_Module* mod = loadModule( (*it).title );
     if ( mod )
       addModule( mod );
-    else
-      SUIT_MessageBox::error1( desktop(), tr( "Loading modules" ),
-                               tr( "Can not load module %1" ).arg( (*it).title ), tr( "Ok" ) );
+    else {
+      if ( desktop() && desktop()->isShown() )
+       SUIT_MessageBox::error1( desktop(), tr( "Loading modules" ),
+                                tr( "Can not load module %1" ).arg( (*it).title ), tr( "Ok" ) );
+      else
+       qWarning( tr( "Can not load module %1" ).arg( (*it).title ).latin1() ); 
+    }
   }
 }
 
@@ -250,13 +254,17 @@ CAM_Module* CAM_Application::loadModule( const QString& modName )
     module->setName( moduleName( modName ) );
   }
 
-  if ( !err.isEmpty() )
-    SUIT_MessageBox::warn1( desktop(), tr( "Error" ), err, tr( "Ok" ) );
+  if ( !err.isEmpty() ) {
+    if ( desktop() && desktop()->isShown() )
+      SUIT_MessageBox::warn1( desktop(), tr( "Error" ), err, tr( "Ok" ) );
+    else
+      qWarning( err.latin1() ); 
+  }
 
   return module;
 }
 
-/**@name Activate module group.*/
+/*! @name Activate module group. */
 //@{
 /*!Activate module with name \a modName.
  *\param modName - module name.
@@ -315,7 +323,10 @@ bool CAM_Application::activateModule( CAM_Module* mod )
     {
       myModule->setMenuShown( false );
       myModule->setToolShown( false );
-      SUIT_MessageBox::error1( desktop(), tr( "ERROR_TLT" ), tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ), tr( "BUT_OK" ) );
+      if ( desktop() && desktop()->isShown() )
+       SUIT_MessageBox::error1( desktop(), tr( "ERROR_TLT" ), tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ), tr( "BUT_OK" ) );
+      else
+       qWarning( tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ).latin1() ); 
       myModule = 0;
       return false;
     }
@@ -484,8 +495,12 @@ void CAM_Application::readModuleList()
     myInfoList.append( inf );
   }
 
-  if ( myInfoList.isEmpty() )
-    SUIT_MessageBox::error1( 0, tr( "Error" ), tr( "Can not load modules configuration file " ), tr( "Ok" ) );
+  if ( myInfoList.isEmpty() ) {
+    if ( desktop() && desktop()->isShown() )
+      SUIT_MessageBox::warn1( desktop(), tr( "Warning" ), tr( "Modules list is empty" ), tr( "&OK" ) );
+    else
+      qWarning( tr( "Modules list is empty" ).latin1() ); 
+  }
 }
 
 /*!Add common items for popup menu ( if they are exist )
@@ -503,7 +518,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();
 }
index d19bde6450c2daf423856443aaa649f0a6c21090..c31e9052352c41432110fd0072bb9aeca6dd11fe 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_APPLICATION_H
 #define 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
index 187ec63681e07b4bb996c9d5b4e8b38f8fceb8a2..559901279bba6ca09039c385a1090e9fff9f3c9b 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_DataModel.h"
 
@@ -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.
index 0724916cde1d17d4463268d07682139d0a56be97..4cbc8ab9328be761930c6069b56432621a33000e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_DATAMODEL_H
 #define 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
index 2109bccac6839568ac38928af2b3ab7499c60d09..62a3d3b134440b6fadebc2af3fb5440263f1a270 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_DataObject.h"
 
index 1b89a8e609263c1802f8c335cf234dd83a6f2b24..1e4e414b2ac23f15a870120068c72e767ac3b24d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_DATAOBJECT_H
 #define CAM_DATAOBJECT_H
 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:
index 885f6e05dd34d2c74495442c06caf22015920b78..9b37b334795b8786ddfe0982a41c59ea0199193e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_Module.h"
 
@@ -26,6 +26,9 @@
 #include <QtxActionMenuMgr.h>
 #include <QtxActionToolMgr.h>
 
+#include <SUIT_Session.h>
+#include <SUIT_Application.h>
+
 /*!Icon.*/
 static const char* ModuleIcon[] = {
 "20 20 2 1",
@@ -84,6 +87,11 @@ CAM_Module::~CAM_Module()
 void CAM_Module::initialize( CAM_Application* app )
 {
   myApp = app;
+  if (myApp) {
+    SUIT_Session* aSession = SUIT_Session::session();
+    connect(aSession, SIGNAL( applicationClosed( SUIT_Application* ) ),
+            this, SLOT( onApplicationClosed( SUIT_Application* ) ));
+  }
 }
 
 /*!\retval Module icon.*/
@@ -159,6 +167,13 @@ void CAM_Module::studyChanged( SUIT_Study* , SUIT_Study* )
 {
 }
 
+/*!Public slot, nullify application pointer if the application was closed.*/
+void CAM_Module::onApplicationClosed( SUIT_Application* theApp )
+{
+  if (myApp == theApp)
+    myApp = NULL;
+}
+
 /*!Create and return new instance of CAM_DataModel.*/
 CAM_DataModel* CAM_Module::createDataModel()
 { 
@@ -254,9 +269,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 +286,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.
@@ -299,12 +312,13 @@ int CAM_Module::createTool( const int id, const QString& tBar, const int idx )
  *\retval Return -1 if something wrong.
  */
 int CAM_Module::createMenu( const QString& subMenu, const int menu,
-                            const int id, const int group, const int index )
+                            const int id, const int group, const int index,
+                           const bool enableEmpty )
 {
   if ( !menuMgr() )
     return -1;
 
-  return menuMgr()->insert( subMenu, menu, group, index );
+  return menuMgr()->insert( subMenu, menu, group, id, index, enableEmpty );
 }
 
 /*! Create menu.
@@ -318,12 +332,13 @@ int CAM_Module::createMenu( const QString& subMenu, const int menu,
  *\retval Return -1 if something wrong.
  */
 int CAM_Module::createMenu( const QString& subMenu, const QString& menu,
-                            const int id, const int group, const int index )
+                            const int id, const int group, const int index,
+                           const bool enableEmpty )
 {
   if ( !menuMgr() )
     return -1;
 
-  return menuMgr()->insert( subMenu, menu, group, index );
+  return menuMgr()->insert( subMenu, menu, group, id, index, enableEmpty );
 }
 
 
@@ -572,6 +587,40 @@ int CAM_Module::registerAction( const int id, QAction* a )
   return ident;
 }
 
+/*! Unregister an action.
+ * \param id - id for action.
+ * \retval true if succeded, false if action is used
+ */
+bool CAM_Module::unregisterAction( const int id )
+{
+  return unregisterAction( action( id ) );
+}
+
+/*! Unregister an action.
+ * \param a  - action
+ * \retval true if succeded, false if action is used
+ */
+bool CAM_Module::unregisterAction( QAction* a )
+{
+  if ( !a )
+    return false;
+  if ( menuMgr() ) {
+    int id = menuMgr()->actionId( a );
+    if ( id != -1 && menuMgr()->containsMenu( id, -1 ) )
+      return false;
+  }
+  if ( toolMgr() ) {
+    int id = toolMgr()->actionId( a );
+    if ( id != -1 && toolMgr()->containsAction( id ) )
+      return false;
+  }
+  if ( menuMgr() )
+    menuMgr()->unRegisterAction( menuMgr()->actionId( a ) );
+  if ( toolMgr() )
+    toolMgr()->unRegisterAction( toolMgr()->actionId( a ) );
+  return true;
+}
+
 /*! Return qt action manager separator.*/
 QAction* CAM_Module::separator()
 {
index 7b525996c23e1c87d6bfcdc00b6a75b7c9218bb5..3409905e764e985401eb90cee97e9d4362754677 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_MODULE_H
 #define CAM_MODULE_H
@@ -28,6 +28,7 @@
 
 class QAction;
 class SUIT_Study;
+class SUIT_Application;
 class CAM_Study;
 class CAM_DataModel;
 class CAM_Application;
@@ -65,14 +66,14 @@ public:
 
   /** @name Set Menu Shown*/
   //@{
-  void                   setMenuShown( const bool );
+  virtual void           setMenuShown( const bool );
   void                   setMenuShown( QAction*, const bool );
   void                   setMenuShown( const int, const bool );
   //@}
 
   /** @name Set Tool Shown*/
   //@{
-  void                   setToolShown( const bool );
+  virtual void           setToolShown( const bool );
   void                   setToolShown( QAction*, const bool );
   void                   setToolShown( const int, const bool );
   //@}
@@ -86,6 +87,8 @@ public slots:
   virtual void           studyClosed( SUIT_Study* );
   virtual void           studyChanged( SUIT_Study*, SUIT_Study* );
 
+  virtual void           onApplicationClosed( SUIT_Application* );
+
 protected: 
   virtual CAM_DataModel* createDataModel();
 
@@ -106,8 +109,8 @@ protected:
 
   /** @name Create menu methods.*/
   //@{
-  int                    createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1 );
-  int                    createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1 );
+  int                    createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1, const bool = false );
   int                    createMenu( const int, const int, const int = -1, const int = -1 );
   int                    createMenu( const int, const QString&, const int = -1, const int = -1 );
   int                    createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1 );
@@ -123,6 +126,8 @@ protected:
   //@}
 
   int                    registerAction( const int, QAction* );
+  bool                   unregisterAction( const int );
+  bool                   unregisterAction( QAction* );
   QAction*               createAction( const int, const QString&, const QIconSet&, const QString&,
                                        const QString&, const int, QObject* = 0,
                                        const bool = false, QObject* = 0, const char* = 0 );
index a45fcadeb30c5f64a94301a75d0ab7f29b61c5eb..e1d9771e322c12085d9e6501d9e291b622680d59 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_RootObject.h"
 
index 3ab434021a4214a83f38d2a9421dc3e34dd20a46..8456e76284c413573f3ceccb3de0dac3f88bcf22 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_ROOTOBJECT_H
 #define CAM_ROOTOBJECT_H
index 26f7504b3e6db50be66e4ed90e5e497ac89357fd..d874e5a3fe2d4f0c6fce4b7892eceb73f854f49f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "CAM_Study.h"
 
index 29106776b0a089491ae6b806f5831afc644bd47e..18839617a2bafeebe297125a571b077cc719c0b4 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef CAM_STUDY_H
 #define CAM_STUDY_H
 #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
index 4473bc99fca8667b73ddd83c52081d71d2dac895..6c02e685b73d7b70af2cd3fdb95c8dabe3254bb9 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : CAM
index a1b9d08541796179af901497f80e32dbb131b04a..4377dfc5695b09e25d40f0282e54152a5741d002 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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"
index 35c38aaf49741f187f9626d71dec8d9f501f66b6..4e32211d2f8206798732fef50718651d8fbbe36c 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef DDS_H
 #define DDS_H
 
index ac7f4ad6bdf9038b407f1a5f3180cc710d3133a3..4ecf18b3eb27cc96661cdf0a062e4ddc6be566c0 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "DDS_DicGroup.h"
 
 #include "DDS_Dictionary.h"
@@ -76,7 +94,10 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM
     LDOM_NodeList systemList = systems.getElementsByTagName( DDS_Dictionary::KeyWord( "UNIT_SYSTEM" ) );
     for ( Standard_Integer i = 0; i < systemList.getLength(); i++ )
     {
-      LDOM_Element aSystem = (const LDOM_Element &)systemList.item( i );
+      //const LDOM_Element& aSystem = (const LDOM_Element &)systemList.item( i );
+      LDOM_Node aNode = systemList.item( i );
+      const LDOM_Element& anElem = (const LDOM_Element&) aNode;
+      LDOM_Element aSystem(anElem);
       TCollection_AsciiString aName = aSystem.getAttribute( DDS_Dictionary::KeyWord( "UNIT_SYSTEM_NAME" ) );
       TCollection_ExtendedString aLabel = aSystem.getAttribute( DDS_Dictionary::KeyWord( "UNIT_SYSTEM_LABEL" ) );
 
@@ -103,7 +124,10 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM
 
   for ( Standard_Integer i = 0; i < aData.getLength(); i++ )
   {
-    LDOM_Element aQuantity = (const LDOM_Element&)aData.item( i );
+    //LDOM_Element aQuantity = (const LDOM_Element&)aData.item( i );
+    LDOM_Node aNode = aData.item( i );
+    const LDOM_Element& anElem = (const LDOM_Element&) aNode;
+    LDOM_Element aQuantity(anElem);
 
     // 1. Attributes (id,label,units?,format?,required?)
     TCollection_AsciiString anID = aQuantity.getAttribute( DDS_Dictionary::KeyWord( "DATUM_ID" ) );
index d1c633fab89fa211dc09c10b30401a04ab3e452c..a804776eaac6d1b3bb550ed0bcaeafea6e002241 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef DDS_DICGROUP_H
 #define DDS_DICGROUP_H
 
index 0c8b01c6d03d97a55a7544c32cfd215e6257be09..1582aab3f881eacebac7058b645864a8fd52c788 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "DDS_DicItem.h"
 #include "DDS_Dictionary.h"
 
@@ -506,7 +524,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element
             if ( aListValueID.IsIntegerValue() )
             {
               //  Read the text in the element "value"
-              LDOM_Text aListItemTxt = (const LDOM_Text&)aListItemValue.getFirstChild();
+              //LDOM_Text aListItemTxt = (const LDOM_Text&)aListItemValue.getFirstChild();
+             LDOM_Node aNode = aListItemValue.getFirstChild();
+             const LDOM_Text& aText = (const LDOM_Text&) aNode;
+             LDOM_Text aListItemTxt(aText);
               if ( !aListItemTxt.isNull() )
               {
                 // adding ID and text value to sequence
@@ -533,7 +554,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element
     if ( !aShDescr.isNull() )
     {
       // text is always a sub-node of element, containing it
-      LDOM_Text aShDescrTxt = (const LDOM_Text&)aShDescr.getFirstChild();
+      //LDOM_Text aShDescrTxt = (const LDOM_Text&)aShDescr.getFirstChild();
+      LDOM_Node aNode = aShDescr.getFirstChild();
+      const LDOM_Text& aText = (const LDOM_Text&) aNode;
+      LDOM_Text aShDescrTxt(aText);
       if ( !aShDescrTxt.isNull() )
         aShortD = aShDescrTxt.getData();
     }
@@ -543,7 +567,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element
     if ( !aLDescr.isNull() )
     {
       // text is always a sub-node of element, containing it
-      LDOM_Text aLDescrTxt = (const LDOM_Text&)aLDescr.getFirstChild();
+      //LDOM_Text aLDescrTxt = (const LDOM_Text&)aLDescr.getFirstChild();
+      LDOM_Node aNode = aLDescr.getFirstChild();
+      const LDOM_Text& aText = (const LDOM_Text&) aNode;
+      LDOM_Text aLDescrTxt(aText);
       if ( !aLDescrTxt.isNull() )
         aLongD = aLDescrTxt.getData();
     }
index dbbedc0a7c126e6386bb7694b1e8ed43be4f041a..36b30811e5cf1d6ca317b1d48fd1031b9b1f4fa0 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef DDS_DICITEM_H
 #define DDS_DICITEM_H
 
index 3656a39495036bee802e41c03069a297339b7e85..adaff0469fd5df62b17e7ebabf10ba7a5708cd4e 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "DDS_Dictionary.h"
 
 #include "DDS_KeyWords.h"
index d58a15f76cfcc158ff7d943acc7d3134686b5646..427e08e1e6287d22e28f69099ff694077d1b93a5 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef DDS_DICTIONARY_H
 #define DDS_DICTIONARY_H
 
index 2f53d2a9258bf5ae3b32d98e317509b7910bd48b..8ea7f6a97915cee2a65e5b47ff203de93c76a243 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "DDS_KeyWords.h"
 
 IMPLEMENT_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared)
index 2c1faf914efb0da3f1e2a51a06ebf6870d6b9f74..daee727ba3c00dfe4270dc3f3f5225a89215d651 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef DDS_KEYWORDS_H
 #define DDS_KEYWORDS_H
 
index a3b9eb89f9b3135391fd555a2bb4b68881d6c135..1d42a6c753975f3e0e62ab8b8dc52e9cbb2eeac1 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Alexander SOLOVYOV (OCN)
 #  Module : DDS
index 9bed806afcef8cb51d80e9933e2938a2bd8bd139..8df1a71b19fffa1ebb06fbe2324cfe4e967e73e5 100755 (executable)
@@ -1,3 +1,23 @@
+//  Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
 // File:      SalomeApp.h
 // Created:   November, 2004
 // Author:    OCC team
index b9fde9c860ec9d789e159ee8cc152f2fd79dfce8..02aaa2bca59990c0e63ca206e6d5d626fe29877c 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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@
index 84928f6232cf5795667c1029dca4aa09a0ed7ab5..928cd2341c2f5954a344002f85e7e53b3cfac726 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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 = "<<this );
   // Prepare the semaphore 
@@ -84,12 +87,9 @@ SALOME_Event::SALOME_Event(){
   *mySemaphore += 2;
 }
 
-//===========================================================
 /*!
- *  SALOME_Event::~SALOME_Event
- *  Destructor
- */
-//===========================================================
+  Destructor
+*/
 SALOME_Event::~SALOME_Event(){
 //  if(MYDEBUG) MESSAGE( "SALOME_Event::~SALOME_Event(): this = "<<this );
   if ( mySemaphore->available() < mySemaphore->total() )
@@ -97,12 +97,9 @@ SALOME_Event::~SALOME_Event(){
   delete mySemaphore;
 }
 
-//===========================================================
 /*!
- *  SALOME_Event::process
- *  Posts the event and optionally waits for its completion
- */
-//===========================================================
+  Posts the event and optionally waits for its completion
+*/
 void SALOME_Event::process()
 {
   QThread::postEvent( qApp, new QCustomEvent( SALOME_EVENT, (void*)this ) );
@@ -111,12 +108,9 @@ void SALOME_Event::process()
 //  if(MYDEBUG) MESSAGE( "SALOME_Event::process(): this = "<<this<<" - COMPLETED" );
 }
 
-//===========================================================
 /*!
- *  SALOME_Event::processed
- *  Signals that this event has been processed
- */
-//===========================================================
+  Signals that this event has been processed
+*/
 void SALOME_Event::processed()
 {
 //  if(MYDEBUG) MESSAGE( "SALOME_Event::processed(): this = "<<this );
index 0ed96bd50970c344899970219950c8b4b0bd3af8..ba345a683a1e463dd958fea58513086ded98a3b6 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -36,9 +36,8 @@
 
 class QSemaphore;
 
-//===========================================================
 /*!
- *  Class: SALOME_Event
+ *  \class SALOME_Event
  *  Description: 
  *  This class encapsulates data and functionality required for 
  *  posting component-specific events to perform arbitrary operations in main GUI thread. 
@@ -66,7 +65,6 @@ class QSemaphore;
  *  Caveats: 
  *    There is no.
  */
-//===========================================================
 
 #include <Event.h>
 
@@ -93,10 +91,11 @@ private:
 };
 
 
-// Template classes for member function
-//-------------------------------------
-template<class TObject, typename TRes>
-class TMemFunEvent: public SALOME_Event{
+/*!
+  \class TMemFunEvent
+  \brief Template class for member function
+*/
+template<class TObject, typename TRes> class /*EVENT_EXPORT */TMemFunEvent: public SALOME_Event{
 public:
   typedef TRes TResult;
   TResult myResult;
@@ -116,8 +115,11 @@ private:
 };
 
 
-template<class TObject>
-class TVoidMemFunEvent: public SALOME_Event{
+/*!
+  \class TVoidMemFunEvent
+  \brief Template class for member function
+*/
+template<class TObject> class /*EVENT_EXPORT*/ TVoidMemFunEvent: public SALOME_Event{
 public:
   typedef void (TObject::* TAction)();
   TVoidMemFunEvent(TObject* theObject, TAction theAction):
@@ -133,11 +135,12 @@ private:
 };
 
 
-// Template for member function with one argument
-//-----------------------------------------------
-template<class TObject, typename TRes, 
-        typename TArg, typename TStoreArg = TArg>
-class TMemFun1ArgEvent: public SALOME_Event{
+/*!
+  \class TMemFun1ArgEvent
+  \brief Template for member function with one argument
+*/
+template<class TObject, typename TRes, typename TArg, typename TStoreArg = TArg> class /*EVENT_EXPORT*/ TMemFun1ArgEvent:
+public SALOME_Event{
 public:
   typedef TRes TResult;
   TResult myResult;
@@ -159,8 +162,11 @@ private:
 };
 
 
-template<class TObject, typename TArg, typename TStoreArg = TArg>
-class TVoidMemFun1ArgEvent: public SALOME_Event{
+/*!
+  \class TVoidMemFun1ArgEvent
+  \brief Template for member function with one argument
+*/
+template<class TObject, typename TArg, typename TStoreArg = TArg> class /*EVENT_EXPORT*/ TVoidMemFun1ArgEvent: public SALOME_Event{
 public:
   typedef void (TObject::* TAction)(TArg);
   TVoidMemFun1ArgEvent(TObject* theObject, TAction theAction, TArg theArg):
@@ -178,12 +184,12 @@ private:
 };
 
 
-// Template for member function with one argument
-//-----------------------------------------------
-template<class TObject, typename TRes,
-        typename TArg, typename TArg1, 
-        typename TStoreArg = TArg, typename TStoreArg1 = TArg1>
-class TMemFun2ArgEvent: public SALOME_Event{
+/*!
+  \class TMemFun2ArgEvent
+  \brief Template for member function with two arguments
+*/
+template<class TObject, typename TRes, typename TArg, typename TArg1, typename TStoreArg = TArg, typename TStoreArg1 = TArg1> class
+/*EVENT_EXPORT*/ TMemFun2ArgEvent: public SALOME_Event{
 public:
   typedef TRes TResult;
   TResult myResult;
@@ -208,9 +214,12 @@ private:
 };
 
 
-template<class TObject, typename TArg, typename TArg1, 
-        typename TStoreArg = TArg, typename TStoreArg1 = TArg1>
-class TVoidMemFun2ArgEvent: public SALOME_Event{
+/*!
+  \class TVoidMemFun2ArgEvent
+  \brief Template for member function with two arguments
+*/
+template<class TObject, typename TArg, typename TArg1, typename TStoreArg = TArg, typename TStoreArg1 = TArg1> class
+/*EVENT_EXPORT*/ TVoidMemFun2ArgEvent: public SALOME_Event{
 public:
   typedef void (TObject::* TAction)(TArg,TArg1);
   TVoidMemFun2ArgEvent(TObject* theObject, TAction theAction, TArg theArg, TArg1 theArg1):
@@ -230,7 +239,10 @@ private:
 };
 
 
-// Template function for processing events with result returing
+/*!
+  \fn ProcessEvent
+  \brief Template function for processing events with result returing
+*/
 template<class TEvent> inline typename TEvent::TResult ProcessEvent(TEvent* theEvent){
   typename TEvent::TResult aResult;
   if(SALOME_Event::IsSessionThread()){
@@ -245,7 +257,10 @@ template<class TEvent> inline typename TEvent::TResult ProcessEvent(TEvent* theE
 }
 
 
-// Template function for processing events without result
+/*!
+  \fn ProcessEvent
+  \brief Template function for processing events without result
+*/
 inline void ProcessVoidEvent(SALOME_Event* theEvent){
   if(SALOME_Event::IsSessionThread()){
     theEvent->Execute();
index 2f4ed3dcc3f8500e91e605cedf25b8abd6d60d40..bf34bae3afd044c105c26d471d47123b4899e916 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index 4df6041b3f230a36be94918767c55f02e569f81b..6a91af84c85739f4aaad587923822e308cbe3550 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // File:      GLViewer_AspectLine.cxx
 // Created:   26/05/2005 3:17:00 PM
 
-//================================================================
-// Class       : GLViewer_AspectLine
-// Description : Substitution of Prs2d_AspectLine for OpenGL
-//================================================================
 #include "GLViewer_AspectLine.h"
 
-//=======================================================================
-// Function: GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+  Default constructor
+*/
 GLViewer_AspectLine::GLViewer_AspectLine()
 {
     myNColor = QColor( 255, 255, 255 );
@@ -42,10 +37,11 @@ GLViewer_AspectLine::GLViewer_AspectLine()
     myLineType = 0;
 }
 
-//=======================================================================
-// Function: GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+  Constructor
+  \param type: 0 for normal line and 1 for strip line
+  \param width - width of line
+*/
 GLViewer_AspectLine::GLViewer_AspectLine( int type, float width )
 {
     myNColor = QColor( 255, 255, 255 );
@@ -59,18 +55,19 @@ GLViewer_AspectLine::GLViewer_AspectLine( int type, float width )
         myLineType = 0;
 }
 
-//=======================================================================
-// Function: ~GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+  Destructor
+*/
 GLViewer_AspectLine::~GLViewer_AspectLine()
 {
 }
 
-//=======================================================================
-// Function: setLineColors
-// Purpose :
-//=======================================================================
+/*!
+  Sets line color
+  \param nc - normal color
+  \param hc - hilighting color
+  \param sc - selection color
+*/
 void GLViewer_AspectLine::setLineColors( QColor nc, QColor hc, QColor sc )
 {
     myNColor = nc;
@@ -78,10 +75,10 @@ void GLViewer_AspectLine::setLineColors( QColor nc, QColor hc, QColor sc )
     mySColor = sc;
 }
 
-//=======================================================================
-// Function: setLineType
-// Purpose :
-//=======================================================================
+/*!
+  Sets type of line
+  \param type: 0 for normal line and 1 for strip line
+*/
 int GLViewer_AspectLine::setLineType( const int type )
 {
     if( type == 1 || type == 0 )
@@ -92,10 +89,10 @@ int GLViewer_AspectLine::setLineType( const int type )
     return 1;
 }
 
-//=======================================================================
-// Function: setLineWidth
-// Purpose :
-//=======================================================================
+/*!
+  Sets width of line
+  \param width - new width of line
+*/
 int GLViewer_AspectLine::setLineWidth( const float width )
 {
     if( width > 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 )
 {
 
index 800b166bb13d85815413628f59eea494cfff4989..99cdbcd97c87c216216e07e7bbf3a823f72331a3 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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 
 {
index a43a5930ed7d3f8407b13c94da9d093696db128d..80dfa1329399b9f08fa596d85d07368a64a5b546 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #include <GL/glx.h>
 #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<int>::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<GLViewer_Object*>::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<GLViewer_Object*>::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<GLViewer_Object*>::Iterator aObjectIt = myObjects.begin();
index ce98aa8679a561b7264b25536058fdd8ac0ce232..d06311cf38dfe9e806b3acd05e9f8854d1013cf0 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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
index e5489fdcb3314487a519436ea21173b4e88f9a47..338543ee3b8920c16c544ca433323e52fcffe29f 100644 (file)
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
-/***************************************************************************
-**  Class:   GLViewer_BaseObjects
-**  Descr:   Internal OpenGL Objects
-**  Module:  GLViewer
-**  Created: UI team, 02.09.02
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #include "GLViewer_BaseObjects.h"
 #include "GLViewer_BaseDrawers.h"
 //#include <cmath>
 //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<int>::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<int>& highlight,
                      QValueList<int>& unhighlight,
@@ -570,6 +646,10 @@ void GLViewer_MarkerSet::exportNumbers( QValueList<int>& 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<int>::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<int>::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<int>& highlight,
                      QValueList<int>& unhighlight,
@@ -1067,6 +1230,12 @@ void GLViewer_Polyline::exportNumbers( QValueList<int>& 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" )
index 6e464ef0451bbf976db82de177083e510b55c3f5..c0f45d3287f7ea982cf9abfed6be7720fb71b36f 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #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<int>& high, QValueList<int>& unhigh,
                                           QValueList<int>& sel, QValueList<int>& 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:  
index 919641e7c277e0255c94638cf517357836e4cb08..00fae1c1f601bdd3d33ca8eb0c4611eb0b78cb0c 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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;
index abdec0e01fe1682050fe4f9ebad372e0c59bb33e..62dd4f2573377429c733ae6e963617b1343e6aca 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #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:
index 7fc5fcf2068da08c15e09856fbd24afdb8e9481c..0383b0325519889905878c5c3b1b2052b4326402 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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"
 
 
 #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 ) )
index f8c76eb504552915db48553910d05e29ddfef817..5a9df2ceba1aefc49d8b06e2e381dae763067f9a 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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; }
index 947ac6036e5a4aefd5539a74a3cbe4b5acd715c4..3889bdfe5aeb3f69bc32db85efd9a580f72d5a99 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // File:      GLViewer_Context.cxx
 // Created:   November, 2004
 
-//================================================================
-// Class       : GLViewer_CoordSystem
-// Description : Class implementing mathematical model of 2D coordinate system 
-//================================================================
 #include "GLViewer_CoordSystem.h"
 #include <math.h>
 
-//=======================================================================
-// 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;
index ca571daab8e1a08f3171082a6f5aa0b710b317d7..6db89583bb3ab702818d15af1ec3db144d10819d 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #pragma warning( disable:4251 )
 #endif
 
+/*!
+  \class GLViewer_CoordSystem
+  \brief Class implementing mathematical model of 2D coordinate system 
+*/
 class GLVIEWER_API GLViewer_CoordSystem
 {
 public:
index 68d1f7d3f4059bab9df03be0de60344276406252..411fb4a7af45b349594d778831b272294f16f884 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index 2da8665128f6e48190976fb89d94420361d16b5c..d0001a49c18f42ab8c6efd5893e05358f4e056ab 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
 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_TexFindId,GLViewer_TexIdStored> GLViewer_TexFont::TexFontBase;
 QMap<GLViewer_TexFindId,GLuint>               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<GLViewer_TexFindId, GLuint>::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<GLViewer_TexFindId,GLViewer_TexIdStored>::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,
index 4b66e7b206a8cd7de9da250ecdf8fb2aed1a259e..21c6386cead663f2b9195bd5ab34701cf9566438 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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:
index cd0ef5cae9e4f4469450941fe400e8d1ca78b269..ebd777e22709dc72699a10bcbf128d0ed2de46fc 100644 (file)
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
-/***************************************************************************
-**  Class:   GLViewer_Geom
-**  Descr:   
-**  Module:  GLViewer
-**  Created: UI team, 16.11.04
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #include <GLViewer_Geom.h>
 
 #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 <thePnt> and directed
-//            along positive X axis direction (or Y axis if vertical )
-//================================================================
+/*!
+  constructs a ray starting at <thePnt> 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 <theOther>
-//================================================================
+/*!
+  detects intersection with segment <theOther>
+*/
 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, <myPoints> mustn't be deleted here!
-//================================================================
+/*!
+  destructor, <myPoints> mustn't be deleted here!
+*/
 GLViewer_Poly::~GLViewer_Poly()
 {
 }
 
-//================================================================
-// Function : IsIn
-// Purpose  : returns true if <thePnt> lies within this polygon
-//================================================================
+/*!
+  \return true if <thePnt> 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 <thePnt> lies within this polygon
+*/
 /*
-//================================================================
-// Function : IsIn
-// Purpose  : returns true if <thePnt> 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 <thePoly> covers this polygon
-//================================================================
+/*!
+  \return true if <thePoly> 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 <theRect> covers this polygon
-//================================================================
+/*!
+  \return true if <theRect> covers this polygon
+*/
 bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const
 {
     if ( !myPoints ) //needs check for <theRect>
@@ -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 )
index 3551ce86fd7f137312a3ba542dc53940e46d998a..7ba4db69fdbce65f63e6bed9e8bf4d9cf6020b97 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index 85dfac4ba336e601f94300768331679abc91a6fb..13a661cafc6d2d22048630644f0956f3b5b095cf 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -29,6 +29,9 @@
 #include <Precision.hxx>
 #include <qglobal.h>
 
+/*!
+  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;
index 39858916bdadb1efb395a62e615c6e45596c15a3..d4a4567e4a6bf334b847217165def24c5923b134 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index 6377e9ecda81c079f40a8e93b1d0760f31ddb0b5..64675049000c32e40a9fdfe00e29e4b02f8c21ad 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #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();
index 8856166a5f5d306e0963bf0b7b98997827513538..4382b06c93e65e4b06808279f968a9062b7b321b 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index e43ee5f51fd97385f1e2c1ab26c3b327b41db468..ca82fbacd0f04288439b39d27f634b24b0ccc777 100644 (file)
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
-/***************************************************************************
-**  Class:   GLViewer_MimeSource
-**  Descr:   Needs for a work with QClipboard
-**  Module:  GLViewer
-**  Created: UI team, 22.03.04
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #include "GLViewer_MimeSource.h"
 #include "GLViewer_BaseObjects.h"
 //#include <cmath>
 //using namespace std;
 
+/*!
+  Destructor
+*/
 GLViewer_MimeSource::~GLViewer_MimeSource()
 {
 }
 
+/*!
+  Translate objects to byte array
+  \param theObjects - list of objects
+*/
 bool GLViewer_MimeSource::setObjects( QValueList<GLViewer_Object*> theObjects )
 {
     if( !theObjects.empty() )
@@ -109,9 +109,12 @@ bool GLViewer_MimeSource::setObjects( QValueList<GLViewer_Object*> 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_Object*> GLViewer_MimeSource::getObjects( QByteArray theArray, QString theType )
 {
     if( !theArray.isEmpty() )
@@ -210,6 +218,10 @@ QValueList<GLViewer_Object*> GLViewer_MimeSource::getObjects( QByteArray theArra
     return QValueList<GLViewer_Object*>();    
 }
 
+/*!
+  \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" )
index 4fca3c9d793252e63985c52c2904addfe80f63a9..55262d1d13342f0c1a12b1f4fd974df73af08405 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
 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:
index 38124a22ec2623667fb4c051af11bc8ca315ba6c..cb0920108852214ac626f6387650484f307883db 100644 (file)
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
-/***************************************************************************
-**  Class:   GLViewer_Object
-**  Descr:   OpenGL Object
-**  Module:  GLViewer
-**  Created: UI team, 03.09.02
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #include "GLViewer_Object.h"
 #include "GLViewer_Drawer.h"
@@ -37,6 +30,9 @@
 //#include <cmath>
 //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;
index 6cd21b29458ce6bf052ba56c1cd870b8fdfa8e03..49373a8ccad7fe42674392d6de2fed26e6c527c1 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #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:
index 5df29eb89cc78bc3ca6f736cb88bdbe39cefc4e4..4e4c91aea3127bc7af36ecbc93241b9c38ade8ec 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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 <GLViewerAfx.h>
 #include "GLViewer_Selector.h"
 
index ad40ab124905f31f8e9f485836f8b3893812b129..6c0672843f44b5469784c03ce07c5e9a03059560 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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
 
 
 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
index e8a414d464425ddd34b3a3d855d89de0d72babe2..067b2954156ef7a6f33de4346c093f73c1f52b88 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // File:      GLViewer_Selector2d.cxx
 // Created:   November, 2004
 
-/****************************************************************************
-**  Class:   GLViewer_Selector2d 
-**  Descr:   OpenGL Selector 2D
-**  Module:  GLViewer
-**  Created: UI team, 20.09.02
-*****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #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();
index cce3cc37e7038a3e56c636f49ca691738b7fd90e..34da93d590e1cf4f6cc03f5e5eb617c546dcd273 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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
 {
index bafa33ec1eaea5f0893b93a6056c0fa4cb99dac7..f4dba3a4790e0a4b5c2d0b8d8fcce1e9ccf696c7 100644 (file)
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
-/***************************************************************************
-**  Class:   GLViewer_Text
-**  Descr:   Substitution of Prs3d_Text for OpenGL
-**  Module:  GLViewer
-**  Created: UI team, 10.07.03
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #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;
index ef3512ca90e1194ebe989ba0189eacd50c3a6851..edf680e7b1245e7150d4e3126d3bcb67ece40bcb 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #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:
index 0521ff19f05e210b101ff3d16b3fbaaa5cbcfb4f..c4449265c58e94bf4753629419fce9604c12a124 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 #include <qapplication.h>
 #include <qtooltip.h>
 
-/***************************************************************************
-**  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() )
index 9dcb71f6861862a5b50c5301ff41a4af6886dd47..508679b6a163eff76b015709ecd7737a910b6160 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
 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
index ec7c00920a3a02e9a29ac333fcea5444296c8690..1f270a253f9bff75c83d254c7021b4b265eb426e 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
 #include <iostream>
 
-/****************************************************************************
-**  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;
@@ -51,11 +49,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 )
@@ -157,6 +162,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)
@@ -168,6 +178,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 )
@@ -181,6 +195,10 @@ int GLViewer_LineList::contains( double thePoint ) const
 
 }
 
+/*!
+  Removes segment
+  \param theIndex - segment index
+*/
 bool GLViewer_LineList::removeSegment( int theIndex )
 {
   if( theIndex > mySegmentNumber || !myArray)
@@ -197,6 +215,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 )
@@ -349,12 +371,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()
 {
   std::cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::";
@@ -364,6 +392,10 @@ void GLViewer_LineList::print()
   std::cout << std::endl;
 }
 
+/*!
+  Draws line list with help of OpenGL 
+  \param theDim - dimension
+*/
 void GLViewer_LineList::show( FieldDim theDim )
 {
   if( !myArray )
@@ -392,12 +424,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;
@@ -411,6 +441,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;
@@ -442,6 +476,9 @@ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, c
   }
 }
 
+/*!
+  Destructor
+*/
 GLViewer_LineField::~GLViewer_LineField()
 {
   if( myXLineArray )
@@ -467,11 +504,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 );
@@ -480,7 +527,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 )
@@ -532,6 +584,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 );
@@ -540,7 +600,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 )
@@ -549,6 +611,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 )
@@ -572,6 +639,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 )
@@ -592,6 +664,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 )
@@ -611,6 +688,9 @@ void GLViewer_LineField::addRectangle( double top, double right, double bottom,
   }
 }
 
+/*!
+  Prints debug info about line field
+*/
 void GLViewer_LineField::print()
 {
   std::cout << "My X matrix Number: " << myXSize << std::endl;
@@ -622,6 +702,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++ )
@@ -643,6 +726,10 @@ void GLViewer_LineField::show()
   std::cout << "Show function" << std::endl;
 }
 
+/*!
+  \return size
+  \param theDim - dimension
+*/
 int GLViewer_LineField::getDimSize( FieldDim theDim )
 {
   if( theDim == FD_X )
@@ -653,6 +740,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;
@@ -677,7 +771,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 )
@@ -729,6 +827,9 @@ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY
     return false;
 }
 
+/*!
+  \return number of segments
+*/
 int GLViewer_LineField::segmentNumber()
 {
   if( !(myXLineArray || myYLineArray) )
@@ -742,6 +843,9 @@ int GLViewer_LineField::segmentNumber()
   return aNumber;
 }
 
+/*!
+  Removes all multiple segments
+*/
 void GLViewer_LineField::optimize()
 {
   if( !myXLineArray || !myYLineArray )
@@ -789,6 +893,10 @@ void GLViewer_LineField::optimize()
   }
 }
 
+/*!
+  Some prepare actions
+  Needs call setPoint before
+*/
 void GLViewer_LineField::initialize()
 {
   if( !myXLineArray || !myYLineArray )
@@ -842,6 +950,9 @@ void GLViewer_LineField::initialize()
   }
 }
 
+/*!
+  One iteration of algorithm
+*/
 void GLViewer_LineField::iteration()
 {
   int aParam = myCurCount;
@@ -873,6 +984,9 @@ void GLViewer_LineField::iteration()
   delete[] aNodes;
 }
 
+/*!
+  Checks for complete status
+*/
 GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete()
 {
   if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 )
@@ -923,6 +1037,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 )
@@ -947,6 +1064,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 )
@@ -968,6 +1088,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 )
@@ -989,6 +1112,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 )
@@ -1032,6 +1158,9 @@ double* GLViewer_LineField::solution( int& theSize )
   return anArray;
 }
 
+/*!
+  \return current solution array
+*/
 GraphNode* GLViewer_LineField::getCurArray()
 {
   if( !myGraphArray1 || !myGraphArray2 )
@@ -1043,6 +1172,9 @@ GraphNode* GLViewer_LineField::getCurArray()
     return myGraphArray2;
 }
 
+/*!
+  \return other solution array
+*/
 GraphNode* GLViewer_LineField::getSecArray()
 {
   if( !myGraphArray1 || !myGraphArray2 )
@@ -1054,6 +1186,9 @@ GraphNode* GLViewer_LineField::getSecArray()
     return myGraphArray1;
 }
 
+/*!
+  \return maximum segment number
+*/
 int GLViewer_LineField::maxSegmentNum()
 {
   if( !myXLineArray || !myYLineArray )
@@ -1073,6 +1208,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 )
index 3acdd879b365036efe66dd0220b036427411dce3..b9add1f19fceab755b5bdd572e75f9bef23156c2 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 
 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
index 6600bb35f6690cd3127030a756654761c9447426..d89922d48ed8b57249067d13789049393a6e8d1d 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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 <GLViewerAfx.h>
 #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 <windows.h>
 
+/*!
+  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() )
@@ -547,3 +562,39 @@ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e )
     break;
   }
 }
+
+/*!
+  \return the visual parameters of this view as a formated string
+*/
+QString GLViewer_ViewFrame::getVisualParameters()
+{
+  QString retStr;
+  if ( myVP && myVP->inherits( "GLViewer_ViewPort2d" ) ) {
+    GLViewer_ViewPort2d* vp2d = (GLViewer_ViewPort2d*)myVP;
+    GLfloat xSc, ySc, xPan, yPan;
+    vp2d->getScale( xSc, ySc );
+    vp2d->getPan( xPan, yPan );
+    retStr.sprintf( "%.12e*%.12e*%.12e*%.12e", xSc, ySc, xPan, yPan );
+  }
+  return retStr;
+}
+
+/*!
+  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 );
+  if ( myVP && myVP->inherits( "GLViewer_ViewPort2d" ) && paramsLst.size() == 4) {
+    GLViewer_ViewPort2d* vp2d = (GLViewer_ViewPort2d*)myVP;
+
+    GLfloat xSc, ySc, xPan, yPan;
+    xSc = paramsLst[0].toDouble();
+    ySc = paramsLst[1].toDouble();
+    xPan = paramsLst[2].toDouble();
+    yPan = paramsLst[3].toDouble();
+
+    vp2d->getGLWidget()->setScale( xSc, ySc, 1. );
+    vp2d->getGLWidget()->setPan( xPan, yPan, 0. );
+  }
+}
index d90dfd3f5ddcb6b4b25512bb245df9fb4cc9795c..76b9fe55b7ff9bdfdb98f7dbc2b070d882349f1e 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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
@@ -72,6 +67,9 @@ public:
   QSize                   sizeHint() const;
   
   virtual void            onUpdate( int );
+
+  virtual QString         getVisualParameters();
+  virtual void            setVisualParameters( const QString& parameters );  
   
 signals:
   void                    vfDrawExternal( QPainter* );
index 91150147a42875821d96d844ca9ce30f68d53053..b9cbff5aef4336c90bd1ba3522ff838edeb416e4 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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 );
index 82038d8d6a70eb48bab87d4ba538bd26cc3fa25a..cfc25f1f97084821e022a317a2445a80aa9775a3 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
index 78767afa14992d8fd2c8524f25c712ecb1030b12..07de20242a8ef9fbbe646db28c398f7255aa9c25 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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 <GLViewerAfx.h>
 
 #if !(defined WNT) && !(defined QT_CLEAN_NAMESPACE)
 #include <Xw_Window.hxx>
 #include <Graphic3d_GraphicDevice.hxx>
 
+/*!
+  \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 )
index 02ef4edaf21a7867e8c2282f98173387d32b9f0d..b7ceaf2dcf53131a63fe0efe0e8c07d97357ed5e 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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
index b44efbc329855b69046c468d15a102a111ff6a2d..3055726ec0eca88903758397465ce623d648825c 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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();
index 128cdbe06b176cbfda86ff3ee5e87d25ef8219e2..76b59b6d4d08a74b7e43c6d1f4c25a7a5a6e696d 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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();
index 9ca9ed73e950a188acd4ca9fc70a59c2d5a38d21..3363add169b5160859fbfac273458aba8526fef0 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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 <GLViewerAfx.h>
 #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;
 
 /*!
index dfd16c2fa247eaa1f3a4ff2fc1f038a64e428d88..0d68a450da8fb43ec6e3885adee7cd350340137d 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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:
index f98f5e2ae76818b2eb442a7073f335559ca02421..7d03218ba75fd020f4fddc20baf649323a817ff6 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // File:      GLViewer_Viewer2d.cxx
 // Created:   November, 2004
 
-/***************************************************************************
-**  Class:   GLViewer_Viewer2d
-**  Descr:   OpenGL Viewer 2D
-**  Module:  GLViewer
-**  Created: UI team, 04.09.02
-****************************************************************************/
-
 //#include <GLViewerAfx.h>
 #include "GLViewer_Viewer2d.h"
 #include "GLViewer_Object.h"
 #include <qpointarray.h>
 #include <qcolordialog.h>
 
+/*!
+  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<SUIT_ViewWindow> views = getViewManager()->getViews();
@@ -140,6 +157,9 @@ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect )
   }
 }
 
+/*!
+  Recomputes global scene rect
+*/
 void GLViewer_Viewer2d::updateBorders()
 {
     QPtrVector<SUIT_ViewWindow> 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<GLViewer_Object*>& theObjects, bool onlyUpdate, GLboolean swap )
 {
     //cout << "GLViewer_Viewer2d::activateDrawers " << (int)onlyUpdate << " " << (int)swap << endl;
@@ -282,6 +311,9 @@ void GLViewer_Viewer2d::activateDrawers( QValueList<GLViewer_Object*>& 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 )
index 21840335fe29f0bdabb5ca5ccfa3120f07cdcc2a..93c9d30f00b1bb604d2bf47492f9023192594ac1 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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:
index b29a9fb5230e559be84dcc84eee62e7c6da2169d..1fc069d204406a7481a7b1eaa4953716c3bf86dc 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
 // 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 <qsize.h>
 #include <qtooltip.h>
 
-//=======================================================================
-// 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; 
index c580a9a848e9713cbb1770998eac5fd2d9bade32..637beb5fb58c22654955f8f2ad0ff4b6817781cc 100644 (file)
@@ -14,7 +14,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  Author : OPEN CASCADE
 //
@@ -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
 
 class GLViewer_ViewPort2d;
 class GLViewer_CoordSystem;
 
+/*!
+  \class GLViewer_Widget
+  Widget for visualization of OpenGL scene
+*/
 class GLVIEWER_API GLViewer_Widget : public QGLWidget
 {
   Q_OBJECT
index d921dd29453b57fb2c8bfff6c6f180c3655850ca..76869431aa394b2b4ef6bd4bf502279c9c820b71 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  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@
index 53bac630c856576fa28d8edd69e61b7390e6e5f7..256c033175c8d4c841035b5cc2fd92c7db5bcfd1 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      GLViewer_images.po
 // Created:   10/25/2004 12:46:36 PM
 // Author:    Sergey Anikin
index 32d5f88cbc9ccffd780c425b64e0aa51f95fe9c2..d51c7d3a381f95dc0790ea8177ced823bc5c222b 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      GLViewer_msg_en.po
 // Created:   10/25/2004 12:46:36 PM
 // Author:    Sergey Anikin
@@ -74,9 +92,6 @@ msgstr "Cannot save file"
 msgid "ERROR"
 msgstr "Error"
 
-msgid "BUT_OK"
-msgstr "Ok"
-
 msgid "CHANGE_BGCOLOR"
 msgstr "Change background..."
 
index 1d0f5e196e15b9285b1f9c9ab520dbf66f5fc4e9..0fbeb1497b22e1c38c3684baaead94968727d41e 100644 (file)
@@ -1,7 +1,24 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp.h
 // Created:   June, 2005
 // Author:    OCC team
-// Copyright (C) CEA 2005
 
 
 // The following ifdef block is the standard way of creating macros which make exporting 
index 689d4165cbab78017d36df04d391fc9320a6c53d..7dc4a48ae8d3f3ae18970b3f9e81f0fcd2a45952 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_AboutDlg.cxx
 // Created:   03.06.2005 13:52:45
 // Author:    Sergey TELKOV
index c59cc938bd6e3d5f0915409c74fa71b5c3ff7bf4..8fb3b97f214e71b70c9460cd34380e501846f250 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_AboutDlg.h
 // Created:   03.06.2005 13:49:25
 // Author:    Sergey TELKOV
 
 #include <QtxDialog.h>
 
-/*!
-  Descr: LightApp help about dialog
-*/
-
 class QLabel;
 
+/*!
+  \class LightApp_AboutDlg
+  LightApp help about dialog
+*/
 class LIGHTAPP_EXPORT LightApp_AboutDlg : public QtxDialog
 {
   Q_OBJECT
index ca93892ffb85bea1649da40e1bfda431a2d97cb9..0ccc31bb46ba2b75ba10bd87e6c4a26b8fa62b91 100644 (file)
@@ -1,9 +1,30 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_Application.cxx
 // Created:   6/20/2005 18:39:45 PM
 // Author:    Natalia Donis
 // Copyright (C) CEA 2005
 
-#include "PythonConsole_PyInterp.h" // WARNING! This include must be the first!
+#ifndef DISABLE_PYCONSOLE
+  #include "PythonConsole_PyInterp.h" // WARNING! This include must be the first!
+  #include <PythonConsole_PyConsole.h>
+#endif
 
 #include "LightApp_Application.h"
 #include "LightApp_WidgetContainer.h"
 
 #include "LightApp_OBFilter.h"
 
-#include "LightApp_GLSelector.h"
 #include "LightApp_OBSelector.h"
-#include "LightApp_OCCSelector.h"
-#include "LightApp_VTKSelector.h"
 #include "LightApp_SelectionMgr.h"
 
 #include <CAM_Module.h>
 #include <LogWindow.h>
 #include <OB_Browser.h>
 #include <OB_ListView.h>
-#include <PythonConsole_PyConsole.h>
 
-#include <GLViewer_Viewer.h>
-#include <GLViewer_ViewManager.h>
+#ifndef DISABLE_GLVIEWER
+  #include <GLViewer_Viewer.h>
+  #include <GLViewer_ViewManager.h>
+  #include "LightApp_GLSelector.h"
+#endif
 
-#include <Plot2d_ViewManager.h>
-#include <Plot2d_ViewModel.h>
-#include <SPlot2d_ViewModel.h>
+#ifndef DISABLE_PLOT2DVIEWER
+  #include <Plot2d_ViewManager.h>
+  #include <Plot2d_ViewModel.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SPlot2d_ViewModel.h>
+#else
+  #include <Plot2d_ViewModel.h>
+#endif
+#endif
 
-#include <OCCViewer_ViewManager.h>
-#include <SOCC_ViewModel.h>
+#ifndef DISABLE_OCCVIEWER
+  #include <OCCViewer_ViewManager.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SOCC_ViewModel.h>
+#else
+  #include <OCCViewer_ViewModel.h>
+#endif
+  #include "LightApp_OCCSelector.h"
+#endif
 
-#include <SVTK_ViewModel.h>
-#include <SVTK_ViewManager.h>
-#include <VTKViewer_ViewModel.h>
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SVTK_ViewModel.h>
+  #include <SVTK_ViewManager.h>
+  #include "LightApp_VTKSelector.h"
+#else
+  #include <VTKViewer_ViewModel.h>
+  #include <VTKViewer_ViewManager.h>
+#endif
+  #include <VTKViewer_ViewModel.h>
+#endif
 
-#include <SUPERVGraph_ViewModel.h>
-#include <SUPERVGraph_ViewFrame.h>
-#include <SUPERVGraph_ViewManager.h>
+//#ifndef DISABLE_SUPERVGRAPHVIEWER
+//  #include <SUPERVGraph_ViewModel.h>
+//  #include <SUPERVGraph_ViewFrame.h>
+//  #include <SUPERVGraph_ViewManager.h>
+//#endif
 
 #include <QtxWorkstack.h>
 
 #include <qcombobox.h>
 #include <qinputdialog.h>
 #include <qmessagebox.h>
+#include <qfontdatabase.h>
 
 #define FIRST_HELP_ID 1000000
 
-#include "SALOME_InteractiveObject.hxx"
-#include "SALOME_ListIO.hxx"
+#ifndef DISABLE_SALOMEOBJECT
+  #include "SALOME_InteractiveObject.hxx"
+  #include "SALOME_ListIO.hxx"
+#endif
 
 static const char* imageEmptyIcon[] = {
 "20 20 1 1",
@@ -108,17 +154,28 @@ static const char* imageEmptyIcon[] = {
 "....................",
 "...................."};
 
+int LightApp_Application::lastStudyId = 0;
+
+/*!
+  \return last global id of study
+*/
+int LightApp_Application::studyId()
+{
+  return LightApp_Application::lastStudyId;
+}
+
 /*!Create new instance of LightApp_Application.*/
 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.*/
@@ -146,7 +203,9 @@ myPrefs( 0 )
 
   mySelMgr = new LightApp_SelectionMgr( this );
 
-  myAccel = new SUIT_Accel( desktop() );
+  myAccel = SUIT_Accel::getAccel();
+
+#ifndef DISABLE_OCCVIEWER
   myAccel->setActionKey( SUIT_Accel::PanLeft,     CTRL+Key_Left,     OCCViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::PanRight,    CTRL+Key_Right,    OCCViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::PanUp,       CTRL+Key_Up,       OCCViewer_Viewer::Type() );
@@ -158,6 +217,8 @@ myPrefs( 0 )
   myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right,     OCCViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::RotateUp,    ALT+Key_Up,        OCCViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::RotateDown,  ALT+Key_Down,      OCCViewer_Viewer::Type() );
+#endif
+#ifndef DISABLE_VTKVIEWER
   myAccel->setActionKey( SUIT_Accel::PanLeft,     CTRL+Key_Left,     VTKViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::PanRight,    CTRL+Key_Right,    VTKViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::PanUp,       CTRL+Key_Up,       VTKViewer_Viewer::Type() );
@@ -169,8 +230,33 @@ myPrefs( 0 )
   myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right,     VTKViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::RotateUp,    ALT+Key_Up,        VTKViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::RotateDown,  ALT+Key_Down,      VTKViewer_Viewer::Type() );
+#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.
@@ -181,14 +267,6 @@ myPrefs( 0 )
  */
 LightApp_Application::~LightApp_Application()
 {
-  saveWindowsGeometry();
-
-  if ( resourceMgr() )
-  {
-    if ( desktop() )
-      desktop()->saveGeometry( resourceMgr(), "desktop" );
-    resourceMgr()->save();
-  }
   delete mySelMgr;
 }
 
@@ -302,6 +380,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();
@@ -320,6 +402,19 @@ LightApp_SelectionMgr* LightApp_Application::selectionMgr() const
   return mySelMgr;
 }
 
+/*!Creat action "New window" for certain type of viewer:*/
+void LightApp_Application::createActionForViewer( const int id,
+                                                  const int parentId,
+                                                  const QString& suffix,
+                                                  const int accel )
+{
+  QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ), QIconSet(),
+                              tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ),
+                              tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ),
+                              accel, desktop(), false, this, SLOT( onNewWindow() ) );
+  createMenu( a, parentId, -1 );
+}
+
 /*!Create actions:*/
 void LightApp_Application::createActions()
 {
@@ -344,22 +439,36 @@ void LightApp_Application::createActions()
   int id = LightApp_Application::UserID + FIRST_HELP_ID;
   // help for KERNEL and GUI
   QCString dir;
-  QString aFileName;
+  QString aFileName = "index.htm";
   QString root;
   QAction* a;
   if (dir = getenv("GUI_ROOT_DIR")) {
-    aFileName = "GUI_index_v3.1.0.html";
-    root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") );
+    root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") + 
+                         Qtx::addSlash("gui") +  Qtx::addSlash("GUI") );
     if ( QFileInfo( root + aFileName ).exists() ) {
-      a = createAction( id, tr( QString("Kernel & GUI Help") ), QIconSet(),
-                       tr( QString("Kernel && GUI Help") ),
-                       tr( QString("Kernel & GUI Help") ),
+      a = createAction( id, tr( QString("GUI Help") ), QIconSet(),
+                       tr( QString("GUI Help") ),
+                       tr( QString("GUI Help") ),
                        0, desk, false, this, SLOT( onHelpContentsModule() ) );
       a->setName( QString("GUI") );
       createMenu( a, helpModuleMenu, -1 );
       id++;
     }
   }
+  if (dir = getenv("KERNEL_ROOT_DIR")) {
+    QString aFN = "index.html";
+    root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + 
+                         Qtx::addSlash("salome") );
+    if ( QFileInfo( root + aFN ).exists() ) {
+      a = createAction( id, tr( QString("KERNEL Help") ), QIconSet(),
+                       tr( QString("KERNEL Help") ),
+                       tr( QString("KERNEL Help") ),
+                       0, desk, false, this, SLOT( onHelpContentsModule() ) );
+      a->setName( QString("KERNEL") );
+      createMenu( a, helpModuleMenu, -1 );
+      id++;
+    }
+  }
   // help for other existing modules
   QStringList::Iterator it;
   for ( it = aModuleList.begin(); it != aModuleList.end(); ++it )
@@ -368,10 +477,10 @@ void LightApp_Application::createActions()
       continue;
 
     QString modName = moduleName( *it );
-    aFileName = modName + "_index_v3.1.0.html";
     
     if (dir = getenv( modName + "_ROOT_DIR")) {
-      root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") );
+      root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") + 
+                           Qtx::addSlash("gui") +  Qtx::addSlash(modName) );
       if ( QFileInfo( root + aFileName ).exists() ) {
 
        QAction* a = createAction( id, tr( moduleTitle(modName) + QString(" Help") ), QIconSet(),
@@ -434,8 +543,11 @@ void LightApp_Application::createActions()
 
   for ( it = modList.begin(); it != modList.end(); ++it )
   {
-    if ( (*it).isEmpty() )
+    if ( !isLibExists( *it ) )
+    {
+      qDebug( QString( "Library '%1' cannot be found" ).arg( *it ) );
       continue;
+    }
 
     QString iconName;
     if ( iconMap.contains( *it ) )
@@ -459,24 +571,24 @@ void LightApp_Application::createActions()
   SUIT_Tools::simplifySeparators( modTBar );
 
   // New window
-  int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, 100 );
+  int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, MenuWindowId, 100 );
   int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 );
   createMenu( separator(), windowMenu, -1, 1 );
 
-  QMap<int, int> accelMap;
-  accelMap[NewGLViewId]  = ALT+Key_G;
-  accelMap[NewPlot2dId]  = ALT+Key_P;
-  accelMap[NewOCCViewId] = ALT+Key_O;
-  accelMap[NewVTKViewId] = ALT+Key_K;
 
-  for ( id = NewGLViewId; id <= NewVTKViewId; id++ )
-  {
-    QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), QIconSet(),
-                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                              accelMap.contains( id ) ? accelMap[id] : 0, desk, false, this, SLOT( onNewWindow() ) );
-    createMenu( a, newWinMenu, -1 );
-  }
+#ifndef DISABLE_GLVIEWER
+  createActionForViewer( NewGLViewId, newWinMenu, QString::number( 0 ), ALT+Key_G );
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
+  createActionForViewer( NewPlot2dId, newWinMenu, QString::number( 1 ), ALT+Key_P );
+#endif
+#ifndef DISABLE_OCCVIEWER
+  createActionForViewer( NewOCCViewId, newWinMenu, QString::number( 2 ), ALT+Key_O );
+#endif
+#ifndef DISABLE_VTKVIEWER
+  createActionForViewer( NewVTKViewId, newWinMenu, QString::number( 3 ), ALT+Key_K );
+#endif
+
 
   createAction( RenameId, tr( "TOT_RENAME" ), QIconSet(), tr( "MEN_DESK_RENAME" ), tr( "PRP_RENAME" ),
                SHIFT+Key_R, desk, false, this, SLOT( onRenameWindow() ) );
@@ -560,28 +672,35 @@ void LightApp_Application::onNewWindow()
   int id = actionId( (QAction*)obj );
   switch ( id )
   {
+#ifndef DISABLE_GLVIEWER
   case NewGLViewId:
     type = GLViewer_Viewer::Type();
     break;
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
   case NewPlot2dId:
     type = Plot2d_Viewer::Type();
     break;
+#endif
+#ifndef DISABLE_OCCVIEWER
   case NewOCCViewId:
     type = OCCViewer_Viewer::Type();
     break;
+#endif
+#ifndef DISABLE_VTKVIEWER
   case NewVTKViewId:
     type = VTKViewer_Viewer::Type();
     break;
+#endif
   }
 
   if ( !type.isEmpty() )
     createViewManager( type );
 }
 
-//=======================================================================
-//  name    : onNewDoc
-/*! Purpose : SLOT. Create new document*/
-//=======================================================================
+/*!
+  SLOT: Creates new document
+*/
 void LightApp_Application::onNewDoc()
 {
   SUIT_Study* study = activeStudy();
@@ -597,10 +716,9 @@ void LightApp_Application::onNewDoc()
   }
 }
 
-//=======================================================================
-// name    : onOpenDoc
-/*! Purpose : SLOT. Open new document*/
-//=======================================================================
+/*!
+  SLOT: Opens new document
+*/
 void LightApp_Application::onOpenDoc()
 {
   SUIT_Study* study = activeStudy();
@@ -616,7 +734,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;
@@ -683,10 +805,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() );
@@ -694,7 +815,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 );
@@ -711,7 +835,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();
@@ -720,9 +847,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 );
@@ -730,34 +858,57 @@ 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();
+  QAction* a = 0;
 
-  for ( int id = NewGLViewId; id <= NewVTKViewId; id++ )
-  {
-    QAction* a = action( id );
-    if ( a )
-      a->setEnabled( activeStudy() );
-  }
+#ifndef DISABLE_GLVIEWER
+  a = action( NewGLViewId );
+  if( a )
+    a->setEnabled( activeStudy() );
+#endif
+
+#ifndef DISABLE_PLOT2DVIEWER
+  a = action( NewPlot2dId );
+  if( a )
+    a->setEnabled( activeStudy() );
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+  a = action( NewOCCViewId );
+  if( a )
+    a->setEnabled( activeStudy() );
+#endif
+
+#ifndef DISABLE_VTKVIEWER
+  a = action( NewVTKViewId );
+  if( a )
+    a->setEnabled( activeStudy() );
+#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()
   {
@@ -769,18 +920,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:
@@ -788,49 +933,80 @@ 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();
 
   QString aComponentName = obj->name();
-  QString aFileName = aComponentName + "_index_v3.1.0.html";
+  QString aFileName = "index.htm";
+  QString aFileNameKernel = "index.html";
 
   QCString dir = getenv( aComponentName + "_ROOT_DIR");
-  QString homeDir = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") );
+  QString homeDir = !aComponentName.compare(QString("KERNEL")) ? 
+    Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + Qtx::addSlash("salome") ) : 
+    Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") + Qtx::addSlash("gui") +  Qtx::addSlash(aComponentName) );
+  
+  QString helpFile = QFileInfo( homeDir + (!aComponentName.compare(QString("KERNEL")) ? aFileNameKernel : aFileName) ).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 {
+    if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"),
+                           tr("DEFINE_EXTERNAL_BROWSER"),
+                           tr("BUT_OK"),tr("BUT_CANCEL"),0,1,0 )==0 )
+      onPreferences();
+  }
+}
 
-  QString helpFile = QFileInfo( homeDir + aFileName ).absFilePath();
+/*!
+  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(anApp, aParams, helpFile);
+    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;
@@ -850,12 +1026,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 )
@@ -877,6 +1054,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] );
@@ -889,17 +1068,19 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st
   }
 
   QFont f;
+#ifndef DISABLE_PYCONSOLE
   if( wid->inherits( "PythonConsole" ) )
   {
     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
     f = wid->font();
 
   myWindows[flag]->insert( sId, wid );
@@ -908,11 +1089,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 ) )
@@ -934,11 +1116,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 );
@@ -948,7 +1131,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;
@@ -960,10 +1146,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 ) )
@@ -971,10 +1158,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;
@@ -984,7 +1179,9 @@ OB_Browser* LightApp_Application::objectBrowser()
   return ob;
 }
 
-/*!Gets "LogWindow".*/
+/*!
+  \return Log Window
+*/
 LogWindow* LightApp_Application::logWindow()
 {
   LogWindow* lw = 0;
@@ -994,7 +1191,10 @@ LogWindow* LightApp_Application::logWindow()
   return lw;
 }
 
-/*!Get "PythonConsole"*/
+#ifndef DISABLE_PYCONSOLE
+/*!
+  \return Python Console
+*/
 PythonConsole* LightApp_Application::pythonConsole()
 {
   PythonConsole* console = 0;
@@ -1003,13 +1203,21 @@ PythonConsole* LightApp_Application::pythonConsole()
     console = (PythonConsole*)wid;
   return console;
 }
+#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<LightApp_Study*>(activeStudy());
     if ( study ) {
       CAM_Study::ModelList dm_list;
@@ -1020,6 +1228,9 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels )
           ((LightApp_DataModel*)camDM)->update();
       }
     }
+
+    if( objectBrowser() )
+      objectBrowser()->setAutoUpdate( isAutoUpdate );
   }
   if ( objectBrowser() )
   {
@@ -1028,13 +1239,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 );
@@ -1056,21 +1273,32 @@ 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();
 
   SUIT_ViewManager* viewMgr = 0;
+#ifndef DISABLE_GLVIEWER
   if( vmType == GLViewer_Viewer::Type() )
   {
     viewMgr = new GLViewer_ViewManager( activeStudy(), desktop() );
     new LightApp_GLSelector( (GLViewer_Viewer2d*)viewMgr->getViewModel(), mySelMgr );
   }
-  else if( vmType == Plot2d_Viewer::Type() )
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
+  if( vmType == Plot2d_Viewer::Type() )
   {
     viewMgr = new Plot2d_ViewManager( activeStudy(), desktop() );
-    SPlot2d_Viewer* vm = new SPlot2d_Viewer();
+    Plot2d_Viewer* vm;
+#ifndef DISABLE_SALOMEOBJECT
+    vm = new SPlot2d_Viewer();
+#else
+    vm = new Plot2d_Viewer();
+#endif
     viewMgr->setViewModel( vm  );// custom view model, which extends SALOME_View interface 
     Plot2d_ViewWindow* wnd = dynamic_cast<Plot2d_ViewWindow*>( viewMgr->getActiveView() );
     if( wnd )
@@ -1079,18 +1307,23 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType
       frame->setBackgroundColor( resMgr->colorValue( "Plot2d", "Background", frame->backgroundColor() ) );
     }
   }
-  else if( vmType == SUPERVGraph_Viewer::Type() )
-  {
-    viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop() );
-    SUPERVGraph_Viewer* vm = new SUPERVGraph_Viewer();
-    SUPERVGraph_ViewFrame* view = dynamic_cast<SUPERVGraph_ViewFrame*>( vm->getViewManager()->getActiveView() );
-    if( view )
-      view->setBackgroundColor( resMgr->colorValue( "SUPERVGraph", "Background", view->backgroundColor() ) );
-  }
-  else if( vmType == OCCViewer_Viewer::Type() )
+#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() )
   {
     viewMgr = new OCCViewer_ViewManager( activeStudy(), desktop() );
-    SOCC_Viewer* vm = new SOCC_Viewer();
+    OCCViewer_Viewer* vm;
+#ifndef DISABLE_SALOMEOBJECT
+    vm = new SOCC_Viewer();
+#else
+    vm = new OCCViewer_Viewer();
+#endif
     vm->setBackgroundColor( resMgr->colorValue( "OCCViewer", "background", vm->backgroundColor() ) );
     vm->setTrihedronSize( resMgr->integerValue( "OCCViewer", "trihedron_size", vm->trihedronSize() ) );
     int u( 1 ), v( 1 );
@@ -1101,17 +1334,32 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType
     viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface
     new LightApp_OCCSelector( (OCCViewer_Viewer*)viewMgr->getViewModel(), mySelMgr );
   }
-  else if ( vmType == SVTK_Viewer::Type() )
+#endif
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+  if ( vmType == SVTK_Viewer::Type() )
+#else
+  if ( vmType == VTKViewer_Viewer::Type() )
+#endif
   {
+#ifndef DISABLE_SALOMEOBJECT
     viewMgr = new SVTK_ViewManager( activeStudy(), desktop() );
     SVTK_Viewer* vm = dynamic_cast<SVTK_Viewer*>( viewMgr->getViewModel() );
     if( vm )
     {
       vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) );
-      vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ) );
+      vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ),
+                           resMgr->booleanValue( "VTKViewer", "relative_size", vm->trihedronRelative() ) );
       new LightApp_VTKSelector( vm, mySelMgr );
     }
+#else
+    viewMgr = new VTKViewer_ViewManager( activeStudy(), desktop() );
+    VTKViewer_Viewer* vm = dynamic_cast<VTKViewer_Viewer*>( viewMgr->getViewModel() );
+    if ( vm )
+      vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) );
+#endif
   }
+#endif
 
   if ( !viewMgr )
     return 0;
@@ -1122,22 +1370,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;
@@ -1155,7 +1402,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;
@@ -1209,12 +1459,14 @@ void LightApp_Application::onDesktopActivated()
  */
 QString LightApp_Application::getFileFilter() const
 {
-  return "(*.bin)";
-  // HDF persistence not yet completed - to be uncommented later
-  //return "(*.hdf)";
+  //return "(*.bin)";
+  // HDF persistence
+  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 )
 {
@@ -1304,12 +1556,13 @@ void LightApp_Application::updateActions()
   updateCommandsStatus();
 }
 
-//=======================================================================
-// name    : createNewStudy
-/*! Purpose : Create new study*/
-//=======================================================================
+/*!
+  Creates new study
+*/
 SUIT_Study* LightApp_Application::createNewStudy()
 {
+  LightApp_Application::lastStudyId++;
+
   LightApp_Study* aStudy = new LightApp_Study( this );
 
   // Set up processing of major study-related events
@@ -1321,7 +1574,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;
@@ -1329,7 +1585,7 @@ QWidget* LightApp_Application::createWindow( const int flag )
   {
     OB_Browser* ob = new OB_Browser( desktop() );
     ob->setAutoUpdate( true );
-    ob->setAutoOpenLevel( 1 );
+    //ob->setAutoOpenLevel( 1 ); // commented by ASV as a fix to bug IPAL10107
     ob->setCaption( tr( "OBJECT_BROWSER" ) );
 
     OB_ListView* ob_list = dynamic_cast<OB_ListView*>( const_cast<QListView*>( ob->listView() ) );
@@ -1346,6 +1602,7 @@ QWidget* LightApp_Application::createWindow( const int flag )
 
     ob->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
   }
+#ifndef DISABLE_PYCONSOLE
   else  if ( flag == WT_PyConsole )
   {
     PythonConsole* pyCons = new PythonConsole( desktop() );
@@ -1353,6 +1610,7 @@ QWidget* LightApp_Application::createWindow( const int flag )
     wid = pyCons;
     //    pyCons->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
   }
+#endif
   else if ( flag == WT_LogWindow )
   {
     LogWindow* logWin = new LogWindow( desktop() );
@@ -1363,25 +1621,29 @@ 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<int, int>& aMap ) const
 {  
   aMap.insert( WT_ObjectBrowser, Qt::DockLeft );
+#ifndef DISABLE_PYCONSOLE
   aMap.insert( WT_PyConsole, Qt::DockBottom );
+#endif
   //  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 )
@@ -1438,7 +1700,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 );
@@ -1455,7 +1719,9 @@ void LightApp_Application::moduleAdded( CAM_Module* mod )
   }
 }
 
-/*!Create preferences.*/
+/*!
+  Create preferences
+*/
 void LightApp_Application::createPreferences( LightApp_Preferences* pref )
 {
   if ( !pref )
@@ -1469,9 +1735,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 );
@@ -1507,7 +1770,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" );
@@ -1614,13 +1877,18 @@ 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();
   if ( !resMgr )
     return;
 
+#ifndef DISABLE_OCCVIEWER
   if ( sec == QString( "OCCViewer" ) && param == QString( "trihedron_size" ) )
   {
     int sz = resMgr->integerValue( sec, param, -1 );
@@ -1637,11 +1905,15 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
       occVM->getAISContext()->UpdateCurrentViewer();
     }
   }
+#endif
 
+#ifndef DISABLE_VTKVIEWER
   if ( sec == QString( "VTKViewer" ) && (param == QString( "trihedron_size" ) || param == QString( "relative_size" )) )
   {
     int sz = resMgr->integerValue( "VTKViewer", "trihedron_size", -1 );
+    bool isRelative = resMgr->booleanValue( "VTKViewer", "relative_size", true );
     QPtrList<SUIT_ViewManager> lst;
+#ifndef DISABLE_SALOMEOBJECT
     viewManagers( SVTK_Viewer::Type(), lst );
     for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current() && sz >= 0; ++it )
     {
@@ -1652,12 +1924,15 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
       SVTK_Viewer* vtkVM = dynamic_cast<SVTK_Viewer*>( vm );
       if( vtkVM )
       {
-       vtkVM->setTrihedronSize( sz );
+       vtkVM->setTrihedronSize( sz, isRelative );
        vtkVM->Repaint();
       }
     }
+#endif
   }
+#endif
 
+#ifndef DISABLE_OCCVIEWER
   if ( sec == QString( "OCCViewer" ) && ( param == QString( "iso_number_u" ) || param == QString( "iso_number_v" ) ) )
   {
     QPtrList<SUIT_ViewManager> lst;
@@ -1671,6 +1946,7 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
        mgr->getOCCViewer()->setIsos( u, v );
     }
   }
+#endif
 
   if( sec=="ObjectBrowser" )
   {
@@ -1684,6 +1960,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; i<ob->listView()->columns(); i++ )
+         if( ob->listView()->columnWidth( i )>0 )
+           ob->listView()->adjustColumn( i );
       updateObjectBrowser( false );
     }
   }
@@ -1694,25 +1974,51 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
       updateWindows();
   }
 
+#ifndef DISABLE_PYCONSOLE
   if( sec=="PyConsole" )
   {
     if( param=="font" )
       if( pythonConsole() )
        pythonConsole()->setFont( resMgr->fontValue( "PyConsole", "font" ) );
   }
+#endif
 }
 
-/*!Update desktop title.*/
+/*!
+  Saves preferences
+*/
+void LightApp_Application::savePreferences()
+{
+  saveWindowsGeometry();
+  
+  if ( resourceMgr() )
+    {
+      if ( desktop() )
+       desktop()->saveGeometry( resourceMgr(), "desktop" );
+      resourceMgr()->save();
+    }
+}
+
+/*!
+  Updates desktop title
+*/
 void LightApp_Application::updateDesktopTitle() {
   QString aTitle = applicationName();
   QString aVer = applicationVersion();
   if ( !aVer.isEmpty() )
     aTitle += QString( " " ) + aVer;
 
+  if ( activeStudy() ) {
+    QString sName = SUIT_Tools::file( activeStudy()->studyName().stripWhiteSpace(), false );
+    aTitle += QString( " - [%1]" ).arg( sName );
+  }
+
   desktop()->setCaption( aTitle );
 }
 
-/*!Update windows after close document.*/
+/*!
+  Updates windows after close document
+*/
 void LightApp_Application::afterCloseDoc()
 {
   updateWindows();
@@ -1720,7 +2026,9 @@ void LightApp_Application::afterCloseDoc()
   CAM_Application::afterCloseDoc();
 }
 
-/*!Update module action.*/
+/*!
+  Updates actions of active module
+*/
 void LightApp_Application::updateModuleActions()
 {
   QString modName;
@@ -1731,9 +2039,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<int, int>& winMap ) const
 {
   winMap.clear();
@@ -1746,9 +2055,10 @@ void LightApp_Application::currentWindows( QMap<int, int>& 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();
@@ -1761,22 +2071,36 @@ void LightApp_Application::currentViewManagers( QStringList& lst ) const
     defaultViewManagers( lst );
 }
 
-/*!Update windows.*/
+/*!
+  Updates windows
+*/
 void LightApp_Application::updateWindows()
 {
   QMap<int, int> winMap;
   currentWindows( winMap );
 
-  for ( QMap<int, int>::ConstIterator it = winMap.begin(); it != winMap.end(); ++it )
-    getWindow( it.key() );
+  if ( activeStudy() ) {
+    for ( QMap<int, int>::ConstIterator it = winMap.begin(); it != winMap.end(); ++it )
+      getWindow( it.key() );
 
-  loadWindowsGeometry();
+    loadWindowsGeometry();
+  }
+
+  // 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 ) {
+    
+    if ( myWindowsVisible.contains( itr.key() ) && 
+        !myWindowsVisible[ itr.key() ] )
+      continue;
 
-  for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr )
     setWindowShown( itr.key(), !itr.data()->isEmpty() && winMap.contains( itr.key() ) );
+  }
 }
 
-/*!Update view managers.*/
+/*!
+  Updates view managers
+*/
 void LightApp_Application::updateViewManagers()
 {
   QStringList lst;
@@ -1786,7 +2110,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 );
@@ -1814,7 +2140,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 );
@@ -1842,7 +2170,9 @@ void LightApp_Application::saveWindowsGeometry()
   dockMgr->saveGeometry( resourceMgr(), section, false );
 }
 
-/*!Activate windows.*/
+/*!
+  Activates windows
+*/
 void LightApp_Application::activateWindows()
 {
   if ( activeStudy() )
@@ -1852,7 +2182,9 @@ void LightApp_Application::activateWindows()
   }
 }
 
-/*!Adds icon names for modules.*/
+/*!
+  Adds icon names for modules
+*/
 void LightApp_Application::moduleIconNames( QMap<QString, QString>& iconMap ) const
 {
   iconMap.clear();
@@ -1880,7 +2212,9 @@ void LightApp_Application::moduleIconNames( QMap<QString, QString>& 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 );
@@ -1893,7 +2227,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();
@@ -1901,7 +2237,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 );
@@ -1910,13 +2249,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
@@ -1931,7 +2274,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* ) ),
@@ -1940,7 +2295,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() )
@@ -1955,3 +2312,80 @@ void LightApp_Application::onRenameWindow()
   if( ok && !name.isEmpty() )
     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() )
+    return false;
+
+  QString lib = moduleLibrary( moduleTitle );
+  QStringList paths;
+#ifdef WIN32
+  paths = QStringList::split( ";", ::getenv( "PATH" ) );
+#else
+  paths = QStringList::split( ":", ::getenv( "LD_LIBRARY_PATH" ) );
+#endif
+
+  QStringList::const_iterator anIt = paths.begin(), aLast = paths.end();
+  for( ; anIt!=aLast; anIt++ )
+  {
+    QFileInfo inf( Qtx::addSlash( *anIt ) + lib );
+    if( inf.exists() )
+      return true;
+  }
+  return false;
+}
+
+/*!
+  \return default name for an active study
+*/
+void LightApp_Application::setDefaultStudyName( const QString& theName )
+{
+  QStringList anInfoList;
+  modules( anInfoList, false );
+
+  LightApp_Study* aStudy = (LightApp_Study*)activeStudy();
+  if( anInfoList.count() == 1 && // to avoid a conflict between different modules
+      !aStudy->isSaved() )
+  {
+    aStudy->setStudyName( 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 );
+}
index 14d2e4c23cc6cd00ad045c63543588e52377e9a1..b7131da99d959aaf112ed86ee6c97fa9d07653a0 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_Application.h
 // Created:   6/20/2005 18:39:25 PM
 // Author:    OCC team
@@ -15,7 +33,9 @@
 
 class LogWindow;
 class OB_Browser;
-class PythonConsole;
+#ifndef DISABLE_PYCONSOLE
+  class PythonConsole;
+#endif
 class STD_Application;
 class LightApp_WidgetContainer;
 class LightApp_Preferences;
@@ -42,10 +62,35 @@ class LIGHTAPP_EXPORT LightApp_Application : public CAM_Application
   Q_OBJECT
 
 public:
-  typedef enum { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, WT_User } WindowTypes;
+  typedef enum { WT_ObjectBrowser, 
+#ifndef DISABLE_PYCONSOLE
+                 WT_PyConsole,
+#endif
+                 WT_LogWindow,
+                 WT_User }
+  WindowTypes;
+
+  enum { MenuWindowId = 6 };
 
-  enum { NewGLViewId = CAM_Application::UserID, NewPlot2dId, NewOCCViewId, NewVTKViewId,
-         PreferencesId, MRUId, RenameId, UserID };
+  enum { RenameId = CAM_Application::UserID,
+
+#ifndef DISABLE_GLVIEWER
+         NewGLViewId ,
+#endif
+
+#ifndef DISABLE_PLOT2DVIEWER
+         NewPlot2dId,
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+         NewOCCViewId,
+#endif
+
+#ifndef DISABLE_VTKVIEWER
+         NewVTKViewId,
+#endif
+
+         PreferencesId, MRUId, UserID };
 public:
   LightApp_Application();
   virtual ~LightApp_Application();
@@ -62,7 +107,9 @@ public:
   
   LogWindow*                          logWindow();
   OB_Browser*                         objectBrowser();
+#ifndef DISABLE_PYCONSOLE
   PythonConsole*                      pythonConsole(); 
+#endif
 
   virtual void                        updateObjectBrowser( const bool = true );
 
@@ -79,6 +126,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;
@@ -96,6 +144,12 @@ public:
 
   SUIT_Accel*                         accel() const;
 
+  void                                setDefaultStudyName( const QString& theName );
+
+  static int                          studyId();
+
+  virtual bool                        event( QEvent* );
+
 signals:
   void                                studyOpened();
   void                                studySaved();
@@ -103,6 +157,7 @@ signals:
 
 public slots:
   virtual void                        onHelpContentsModule();
+  virtual void                        onHelpContextModule( const QString&, const QString& );
   virtual void                        onNewDoc();
   virtual void                        onOpenDoc();
   virtual void                        onHelpAbout();
@@ -111,6 +166,10 @@ public slots:
 
 protected:
   virtual void                        createActions();
+  virtual void                        createActionForViewer( const int id,
+                                                             const int parentId,
+                                                             const QString& suffix,
+                                                             const int accel );
   virtual SUIT_Study*                 createNewStudy();
   virtual QWidget*                    createWindow( const int );
   virtual void                        defaultWindows( QMap<int, int>& ) const;
@@ -128,6 +187,7 @@ protected:
   LightApp_Preferences*               preferences( const bool ) const;
   virtual void                        createPreferences( LightApp_Preferences* );
   virtual void                        preferencesChanged( const QString&, const QString& );
+  virtual void                        savePreferences();
   virtual void                        updateDesktopTitle();
 
 protected slots:
@@ -151,6 +211,7 @@ private slots:
   void                                onMRUActivated( QString );
   void                                onPreferenceChanged( QString&, QString&, QString& );
   void                                onRenameWindow();
+  void                                onVisibilityChanged( bool );
 
 protected:
   void                                updateWindows();
@@ -169,20 +230,25 @@ protected:
   void                                moduleIconNames( QMap<QString, QString>& ) const;
 
   void                                activateWindows();
+  bool                                isLibExists( const QString& ) const;
 
 protected:
   typedef QMap<QString, QAction*>              ActionMap;
   typedef QMap<int, LightApp_WidgetContainer*> WindowMap;
+  typedef QMap<int, bool>                      WindowVisibilityMap;
 
 protected:
   LightApp_Preferences*               myPrefs;
   LightApp_SelectionMgr*              mySelMgr;
   ActionMap                           myActions;
   WindowMap                           myWindows;
+  WindowVisibilityMap                 myWindowsVisible;
 
   SUIT_Accel*                         myAccel;
 
   static LightApp_Preferences*        _prefs_;
+
+  static int                          lastStudyId;
 };
 
 #ifdef WIN32
index 6ccba618b63040647a3148a455a722642723cc78..9fe3b086adcae75c24f3cbfe3812f1e0f818b1e7 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_DataModel.cxx
 // Created:   10/25/2004 10:36:06 AM
 // Author:    Sergey LITONIN
 #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 <CAM_DataObject.h>
+#include <OB_Browser.h>
 
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_Session.h>
 #include <SUIT_DataObject.h>
 
-//=======================================================================
-// 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<LightApp_Application*>( 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<LightApp_ModuleObject*>( 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<LightApp_Module*>( module() );
 }
 
-//================================================================
-// Function : getStudy
-/*! Purpose  : gets study */
-//================================================================
+/*!
+  \return corresponding  study
+*/
 LightApp_Study* LightApp_DataModel::getStudy() const
 {
   LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>( root()->root() );
@@ -103,19 +141,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;
index 7b1f92d6cbcee746f5a6ff73ecfecb0c0e1951d3..c2eb2d6e703e414b7950bf37efa5e1b007548007 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_DataModel.h
 // Created:   10/25/2004 10:32:33 AM
 // Author:    Sergey LITONIN
@@ -47,7 +65,8 @@ signals:
 
 protected:
   LightApp_Study*                     getStudy() const;
-
+  virtual void                        build();
+  virtual void                        updateWidgets();
 };
 
 #endif 
index 831385908709ea9eb99aa8db86036be52e57fff7..a4df6dfa84351391b9a62aa2028cd1fbfbfa9c5a 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_DataObject.h"
 
@@ -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 )
index 1f194ffc2306e03662d839100616d02ed070e2c6..4d3613dad736369fd8bb02f1e7de238598fdd6b6 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_DATAOBJECT_H
 #define LIGHTAPP_DATAOBJECT_H
index add34d91ff680a183bce3dae891f606e234d17f2..dea72f88c94120a8c6813d8c640264d45f8ab860 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_DataOwner.h"
 
@@ -37,6 +37,7 @@ LightApp_DataOwner
 {
 }
 
+#ifndef DISABLE_SALOMEOBJECT
 /*!Constructor. Initialize by \a SALOME_InteractiveObject.*/
 LightApp_DataOwner
 ::LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO ):
@@ -44,6 +45,7 @@ LightApp_DataOwner
   myIO(theIO)
 {
 }
+#endif
 
 /*!Destructor. Do nothing.*/
 LightApp_DataOwner
@@ -61,6 +63,12 @@ LightApp_DataOwner
   return other && entry() == other->entry();
 }
 
+bool LightApp_DataOwner::operator<( const SUIT_DataOwner& obj ) const
+{
+  const LightApp_DataOwner* other = dynamic_cast<const LightApp_DataOwner*>( &obj );
+  return entry() < other->entry();
+}
+
 /*!Gets entry.*/
 QString
 LightApp_DataOwner
@@ -69,6 +77,7 @@ LightApp_DataOwner
   return myEntry;
 }
 
+#ifndef DISABLE_SALOMEOBJECT
 /*!Gets SALOME_InteractiveObject.*/
 const Handle(SALOME_InteractiveObject)&
 LightApp_DataOwner
@@ -76,3 +85,4 @@ LightApp_DataOwner
 {
   return myIO;
 }
+#endif
index d76e6d411c98cd530c4ffbac39240d44b2e6b67c..7fd43eedceb14560da1c81f0194f6efd13f5ef07 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef LIGHTAPP_DATAOWNER_H
 
 #include "LightApp.h"
 #include "SUIT_DataOwner.h"
-#include "SALOME_InteractiveObject.hxx"
+
+#ifndef DISABLE_SALOMEOBJECT
+  #include "SALOME_InteractiveObject.hxx"
+#endif
 
 /*!
   This class provide data owner objects.
 class LIGHTAPP_EXPORT LightApp_DataOwner : public SUIT_DataOwner
 {
 public:
+#ifndef DISABLE_SALOMEOBJECT
     LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO );
+#endif
     LightApp_DataOwner( const QString& );
     virtual ~LightApp_DataOwner();
 
     virtual bool isEqual( const SUIT_DataOwner& ) const;
+    virtual bool operator<( const SUIT_DataOwner& ) const;
+
+#ifndef DISABLE_SALOMEOBJECT
     const Handle(SALOME_InteractiveObject)& IO() const;
+#endif
     QString entry() const;
 
 private:
     QString  myEntry;
+#ifndef DISABLE_SALOMEOBJECT
     Handle(SALOME_InteractiveObject) myIO;
+#endif
 };
 
 typedef SMART(LightApp_DataOwner) LightApp_DataOwnerPtr;
index c5a6703a401f280d086779c2932b9d29fab5472c..aaf1d3613ab45707fb33cf6ce8e211b0bf98e565 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_DataSubOwner.h"
 
index 507684d5fd57427da29f3dc0fcd250a9f71a65ce..0bd219c4287c5966c48155fa469891d0acf94545 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef LIGHTAPP_DATASUBOWNER_H
index b77f62f01748c5ccbe5244234284086948a69c56..27219f5f1d8f7a7c7159c3e1d183e47640428986 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_Dialog.cxx
 // Author:    Alexander SOLOVYOV
 #include <qlineedit.h>
 #include <qlabel.h>
 
-/*
-  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<int, int> 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 )
index 12fd5015454bcb61d649b538c5cf164f8a25cd22..a862d63887eed5cccf10a9df7b5d2a1cdef6e32d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_Dialog.h
 // Author:    Alexander SOLOVYOV
@@ -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
 {
index 65ce0fa3c49453b3f4bf5a35d6b5ed3cdcee0ccb..0845d5cc9c3c9743255aada72a3ad1f5b30c12e5 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "LightApp_Displayer.h"
@@ -23,8 +23,6 @@
 
 #include <CAM_Study.h>
 
-#include <SALOME_InteractiveObject.hxx>
-
 #include <SUIT_Session.h>
 #include <SUIT_Desktop.h>
 #include <SUIT_ViewManager.h>
 #include <SUIT_ViewWindow.h>
 
 #include <qstring.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #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();
@@ -62,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 (<forced> == true)
@@ -92,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 )
 {
@@ -108,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();
@@ -119,19 +150,29 @@ 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();
+  bool res = false;
   if( vf )
   {
+#ifndef DISABLE_SALOMEOBJECT
     Handle( SALOME_InteractiveObject ) temp = new SALOME_InteractiveObject();
     temp->setEntry( entry.latin1() );
-    return vf->isVisible( temp );
+    res = vf->isVisible( temp );
+#endif
   }
-  else
-    return false;
+  return res;
 }
 
+/*!
+  Updates active view
+*/
 void LightApp_Displayer::UpdateViewer() const
 {
   SALOME_View* vf = GetActiveView();
@@ -139,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;
@@ -151,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();
@@ -165,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;
@@ -182,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();
index aef78d214c2325d44e49e64b1f9158f25a41f05e..5b4318965931b21d727f29949daa60a5ec25b43b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef LIGHTAPP_DISPLAYER_HEADER
 
 class QString;
 
+/*!
+  \class LightApp_Displayer
+  Uniform mechanism of display/erase of objects in different views.
+  Objects are specified by string entry
+*/
 class LIGHTAPP_EXPORT LightApp_Displayer : public SALOME_Displayer
 {
 public:
index 122890390b9f88c84a8a79bdb4f69d9bf04d7a21..e8e161dc589871db13c8262c2d99786a890989f0 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_Driver.h"
 
@@ -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 <theModuleName> into a byte sequence unsigned char*/
-//============================================================================
+/*!
+  Converts files which was created from module <theModuleName> 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 <theBuffer> to files and return list of them*/
-//============================================================================
+/*!
+  Converts a byte sequence <theBuffer> 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 <theFiles> is a directory with slash at the end.
-               Other items are names of files. If <IsDirDeleted> is true,
-              then the directory is also deleted.
+/*!
+  Remove files. First item in <theFiles> is a directory with slash at the end.
+  Other items are names of files. If <IsDirDeleted> 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 
-               <IsDirDeleted> is true tmp directory is also deleted if it is empty*/
-//============================================================================
+/*!
+  Removes files which was created from module theModuleName if 
+  <IsDirDeleted> 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<std::string, ListOfFiles>::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 "";
index f995ce27d43e7a76b49858978010ad4a02239d77..e130b86dae6ed683ba999d9922981e570fe1e693 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_DRIVER_H
 #define LIGHTAPP_DRIVER_H
index 7913b4edf34bf62f3bb12e05704b9faa605d4b05..ceebdeeb41d880fc85993ff72d6a2eba9a4f7e23 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_GLSelector.h"
 
 #include "LightApp_DataOwner.h"
 
-#include <SALOME_GLOwner.h>
-
 #include <GLViewer_Context.h>
 
 /*!Constructor. Initialize by GLViewer_Viewer2d and SUIT_SelectionMgr.*/
@@ -66,7 +64,7 @@ void LightApp_GLSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
     GLViewer_Object* obj = cont->SelectedObject();
     if ( obj )
     {
-      SALOME_GLOwner* owner = dynamic_cast< SALOME_GLOwner* >( obj->owner() );
+      LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() );
       if( owner )
         aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( owner->entry() ) ) );
     }
@@ -90,7 +88,7 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
     GLViewer_Object* obj = *it;
     if ( obj && obj->getVisible() )
     {
-      SALOME_GLOwner* owner = dynamic_cast< SALOME_GLOwner* >( obj->owner() );
+      LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() );
       if ( owner )
        aDisplayed.insert( owner->entry(), obj );
     }
@@ -115,3 +113,38 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
   if ( Nb > 0 )
     myViewer->updateAll();
 }
+
+
+/*!
+  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;
+}
index 069669a872dbc119aff31c88813e099eded56431..13cb191beea846b702c16c31dd6730262eb4b664 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_GLSELECTOR_H
 #define LIGHTAPP_GLSELECTOR_H
 
 #include <GLViewer_Viewer2d.h>
 
+#include <string>
+#include <GLViewer_Object.h>
+
+/*!
+  \class LightApp_GLSelector
+  Custom selector to get/set selection from GL viewer
+*/
 class LIGHTAPP_EXPORT LightApp_GLSelector : public SUIT_Selector
 {
   Q_OBJECT
@@ -48,4 +55,21 @@ private:
   GLViewer_Viewer2d*  myViewer;
 };
 
+
+/*!
+  This class provide data owner objects for GLViewer.
+*/
+class LIGHTAPP_EXPORT LightApp_GLOwner : public GLViewer_Owner
+{
+public:
+  LightApp_GLOwner( const char* );
+  ~LightApp_GLOwner();
+
+  const char*       entry() const;
+  void              setEntry( const char* );
+
+private:
+  std::string       myEntry;
+};
+
 #endif
index 6b4de40b649e25cdae499bd90b535b894043cde6..9c1a71335ff97e3508ff2a8a8b709f7f9eee32e0 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_Module.cxx
 // Created:   6/20/2005 16:30:56 AM
 // Author:    OCC team
 #include <SUIT_DataObject.h>
 #include <SUIT_ResourceMgr.h>
 
-#include <SVTK_ViewWindow.h>
-#include <SVTK_ViewModel.h>
-#include <OCCViewer_ViewWindow.h>
-#include <OCCViewer_ViewPort3d.h>
-#include <SOCC_ViewModel.h>
-#include <GLViewer_ViewFrame.h>
-#include <GLViewer_ViewPort.h>
-#include <Plot2d_ViewWindow.h>
-#include <Plot2d_ViewFrame.h>
-#include <SPlot2d_ViewModel.h>
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SVTK_ViewWindow.h>
+  #include <SVTK_ViewModel.h>
+#else
+  #include <VTKViewer_ViewWindow.h>
+#endif
+  #include <VTKViewer_ViewModel.h>
+#endif
+#ifndef DISABLE_OCCVIEWER
+  #include <OCCViewer_ViewWindow.h>
+  #include <OCCViewer_ViewPort3d.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SOCC_ViewModel.h>
+#else
+  #include <OCCViewer_ViewModel.h>
+#endif
+#endif
+#ifndef DISABLE_GLVIEWER
+  #include <GLViewer_ViewFrame.h>
+  #include <GLViewer_ViewPort.h>
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
+  #include <Plot2d_ViewWindow.h>
+  #include <Plot2d_ViewFrame.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SPlot2d_ViewModel.h>
+#else
+  #include <Plot2d_ViewModel.h>
+#endif
+#endif
 
 #include <OB_Browser.h>
 
@@ -96,6 +135,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() ){
@@ -113,7 +155,8 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel,
       }
     }
   }
-  getApp()->objectBrowser()->updateTree( aDataObject );
+  getApp()->objectBrowser()->setAutoUpdate( upd );
+  getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ );
 }
 
 /*!NOT IMPLEMENTED*/
@@ -129,6 +172,11 @@ bool LightApp_Module::activateModule( SUIT_Study* study )
   if ( res && application() && application()->resourceMgr() )
     application()->resourceMgr()->raiseTranslators( name() );
 
+  connect( application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
+           this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
+  connect( application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ),
+           this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) );
+
   if ( mySwitchOp == 0 )
     mySwitchOp = new LightApp_SwitchOp( this );
 
@@ -141,6 +189,11 @@ bool LightApp_Module::deactivateModule( SUIT_Study* study )
   delete mySwitchOp;
   mySwitchOp = 0;
 
+  disconnect( application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
+             this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
+  disconnect( application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ),
+             this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) );
+
   // abort all operations
   MapOfOperation::const_iterator anIt;
   for( anIt = myOperations.begin(); anIt != myOperations.end(); anIt++ ) {
@@ -196,14 +249,27 @@ void LightApp_Module::update( const int theFlags )
     if ( SUIT_ViewManager* viewMgr = getApp()->activeViewManager() )
       if ( SUIT_ViewWindow* viewWnd = viewMgr->getActiveView() )
       {
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
         if ( viewWnd->inherits( "SVTK_ViewWindow" ) )
           ( (SVTK_ViewWindow*)viewWnd )->Repaint();
-        else if ( viewWnd->inherits( "OCCViewer_ViewWindow" ) )
+#else
+        if ( viewWnd->inherits( "VTKViewer_ViewWindow" ) )
+          ( (VTKViewer_ViewWindow*)viewWnd )->Repaint();
+#endif
+#endif
+#ifndef DISABLE_OCCVIEWER
+        if ( viewWnd->inherits( "OCCViewer_ViewWindow" ) )
           ( (OCCViewer_ViewWindow*)viewWnd )->getViewPort()->onUpdate();
-        else if ( viewWnd->inherits( "Plot2d_ViewWindow" ) )
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
+        if ( viewWnd->inherits( "Plot2d_ViewWindow" ) )
           ( (Plot2d_ViewWindow*)viewWnd )->getViewFrame()->Repaint();
-        else if ( viewWnd->inherits( "GLViewer_ViewFrame" ) )
+#endif
+#ifndef DISABLE_GLVIEWER
+        if ( viewWnd->inherits( "GLViewer_ViewFrame" ) )
           ( (GLViewer_ViewFrame*)viewWnd )->getViewPort()->onUpdate();
+#endif
       }
   }
 }
@@ -280,9 +346,40 @@ QtxPopupMgr* LightApp_Module::popupMgr()
     myPopupMgr->setRule( disp, /*QString( "( not isVisible ) and " ) + */ uniform, true );
     myPopupMgr->setRule( erase, /*QString( "( isVisible ) and " ) + */ uniform, true );
     myPopupMgr->setRule( dispOnly, uniform, true );
-    QString viewers = "{ '%1' '%2' '%3' }";
-    viewers = viewers.arg( SOCC_Viewer::Type() ).arg( SVTK_Viewer::Type() ).arg( SPlot2d_Viewer::Type() );
-    myPopupMgr->setRule( eraseAll, QString( "client in %1" ).arg( viewers ), true );
+
+    QStringList viewers;
+
+#ifndef DISABLE_OCCVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+    viewers.append( SOCC_Viewer::Type() );
+#else
+    viewers.append( OCCViewer_Viewer::Type() );
+#endif
+#endif
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+    viewers.append( SVTK_Viewer::Type() );
+#else
+    viewers.append( VTKViewer_Viewer::Type() );
+#endif
+#endif
+#ifndef DISABLE_PLOT2DVIEWER
+#ifndef DISABLE_SALOMEOBJECT
+    viewers.append( SPlot2d_Viewer::Type() );
+#else
+    viewers.append( Plot2d_Viewer::Type() );
+#endif
+#endif
+
+    if( !viewers.isEmpty() )
+    {
+      QString strViewers = "{ ", temp = "'%1' ";
+      QStringList::const_iterator anIt = viewers.begin(), aLast = viewers.end();
+      for( ; anIt!=aLast; anIt++ )
+        strViewers+=temp.arg( *anIt );
+      strViewers+="}";
+      myPopupMgr->setRule( eraseAll, QString( "client in %1" ).arg( strViewers ), true );
+    }
   }
   return myPopupMgr;
 }
@@ -434,11 +531,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() )
@@ -449,3 +553,17 @@ void LightApp_Module::onShowHide()
   if( id!=-1 )
     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* )
+{
+}
index 8c4c3034c24ee8bb300ae039e25f7d70d41ab22b..79fd77fe98bd81dc5411632c581480eb23a31ddd 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_Module.h
 // Created:   6/20/2005 16:25:06 AM
 // Author:    OCC team
@@ -22,6 +40,7 @@ class LightApp_Displayer;
 class SUIT_Study;
 class SUIT_DataObject;
 class SUIT_Operation;
+class SUIT_ViewManager;
 class CAM_Application;
 
 class QtxPopupMgr;
@@ -29,9 +48,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
@@ -82,6 +101,8 @@ protected slots:
   virtual void                        onOperationStopped( SUIT_Operation* );
   virtual void                        onOperationDestroyed();
   virtual void                        onShowHide();
+  virtual void                        onViewManagerAdded( SUIT_ViewManager* );
+  virtual void                        onViewManagerRemoved( SUIT_ViewManager* );
 
 protected:
   virtual QtxPopupMgr*                popupMgr();
index b067b0e5d9d2b89f1efafa52f1edb6526fe5c1be..d7777bdaae4b58942a99f9a3a33c8746772f757f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LightApp_ModuleDlg.cxx
 //  Author : Michael Zorin (mzn)
index 526f16f22f2167decc44119f477c4139d636d047..9b818344c71509e8c3ad43c1119903b5d7109e41 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : LightApp_ModuleDlg.h
 //  Author : Michael ZORIN (mzn)
@@ -19,6 +33,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
index 60992730505e867abccb8600e633211ebdcf9b90..e1bca58ce061033a15e794fa930828c4cc2ac1b1 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LightApp_NameDlg.cxx
 //  Author : Vadim SANDLER
@@ -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() )
index c0309c0f2ee64a092618bee7b4fc8d719158fba0..45f64c15bf382284d712884cf8ddd07fc6ffd052 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SalomeApp : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SalomeApp : implementation of desktop and GUI kernel
 //
 //  File   : LightApp_NameDlg.h
 //  Author : Vadim SANDLER
 class QLineEdit;
 class QPushButton;
 
-//=================================================================================
-// class    : LightApp_NameDlg
-/*! purpose  : Common <Rename> dialog box class*/
-//=================================================================================
+/*!
+  \class LightApp_NameDlg
+  Common <Rename> dialog box class
+*/
 class LIGHTAPP_EXPORT LightApp_NameDlg : public QDialog
 { 
   Q_OBJECT
index 90a3ce940c932e3ee735c7edd3f49c7bf061d033..b157202718687b152fd1d44b51c5c67b908ef9db 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_OBFilter.h"
 
index 4ea2921324871a5085d677c699490aa790fe84fe..79e010c14cc82c9664aa1ed646f4f7497264bd54 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_OBFILTER_H
 #define LIGHTAPP_OBFILTER_H
 
 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:
index 76317bf952a69d6fe2dcd6ece633e53e6986b64e..0b762d4200fcd363fbc34e4fc90f483e4156610e 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_OBSelector.h"
 
@@ -74,9 +74,13 @@ void LightApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& theList ) const
       LightApp_DataObject* obj = dynamic_cast<LightApp_DataObject*>( it.current() );
       if ( obj )
       {
+#ifndef DISABLE_SALOMEOBJECT
         Handle(SALOME_InteractiveObject) aSObj = new SALOME_InteractiveObject
           ( obj->entry(), obj->componentDataType(), obj->name() );
         LightApp_DataOwner* owner = new LightApp_DataOwner( aSObj  );
+#else
+        LightApp_DataOwner* owner = new LightApp_DataOwner( obj->entry() );
+#endif
         that->mySelectedList.append( SUIT_DataOwnerPtr( owner ) );
       }
     }
@@ -103,6 +107,7 @@ void LightApp_OBSelector::setSelection( const SUIT_DataOwnerPtrList& theList )
   }
 
   myBrowser->setSelected( objList );
+  mySelectedList.clear();
 }
 
 /*!On selection changed.*/
index e8fc44371690890a5b4cdf2491e3c215cfb4102a..f6811946c67092dc170e9b2e6bc2c98ddcbd76cc 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_OBSELECTOR_H
 #define LIGHTAPP_OBSELECTOR_H
 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
index d0b07bb7b55fa30c9272dd2a86fbb0d8f290cba9..446ae593bf46bdbea8381408e4d4823d1f35c556 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "LightApp_DataOwner.h"
 #include "LightApp_OCCSelector.h"
 
-#include <SALOME_InteractiveObject.hxx>
-
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SALOME_InteractiveObject.hxx>
+#endif
 #include <AIS_ListOfInteractive.hxx>
 #include <AIS_ListIteratorOfListOfInteractive.hxx>
 
@@ -68,9 +69,13 @@ void LightApp_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
   for ( AIS_ListIteratorOfListOfInteractive anIt( aSelList ); anIt.More(); anIt.Next() )
     if ( !anIt.Value().IsNull() )
     {
+#ifndef DISABLE_SALOMEOBJECT
       Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anIt.Value()->GetOwner());
       if( !anObj.IsNull() )
         aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( anObj ) ) );
+#else
+      aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( entry( anIt.Value() ) ) ) );
+#endif
     }
 }
 
@@ -112,10 +117,13 @@ QString LightApp_OCCSelector::entry( const Handle(AIS_InteractiveObject)& anAIS
   if ( anAIS.IsNull() || !anAIS->HasOwner() )
     return QString::null;
 
-  Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anAIS->GetOwner());
-
   QString res;
+
+#ifndef DISABLE_SALOMEOBJECT
+  Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anAIS->GetOwner());
   if ( !anObj.IsNull() )
     res = QString( anObj->getEntry() );
+#endif
+
   return res;
 }
index 5a53992e0e492748879ec8fddb8483ddd337329c..c358efe8aa48fd387c1442201afb0a880a17783d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_OCCSELECTOR_H
 #define LIGHTAPP_OCCSELECTOR_H
 
 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
index 197eb93ee0c560c0475ae364a6ea3fba7b7eebe1..86450eb81e0ff19308b49dd49e52c1095313574b 100755 (executable)
@@ -1,12 +1,24 @@
-//  LIGHT LightApp
-//
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LightApp_Operation.h
 //  Author : Sergey LITONIN
-//  Module : LIGHT
+//  Module : LightApp
 
 #include <LightApp_Operation.h>
 #include <LightApp_Module.h>
@@ -121,10 +133,6 @@ void LightApp_Operation::suspendOperation()
   setDialogActive( false );
 }
 
-//=======================================================================
-// name    : abortOperation
-// Purpose : Hide dialog box (if it is exists)
-//=======================================================================
 /*!
  * \brief Performs actions needed for aborting operation
 *
index 4b07bd7b262e92d1bbc94e3ad060715771450a87..8afcda91a0c8fe0cd78785a6017c50343fd3ad42 100755 (executable)
@@ -1,8 +1,20 @@
-//  LIGHT LightApp
-//
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LightApp_Operation.h
 //  Author : Sergey LITONIN
@@ -22,15 +34,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
 {
index 96d6abcb2447a427206c5b02e2d722f4861a901d..65a7ef490f1b8c8d9e747cbc51d88eaf8ae30d02 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_Preferences.cxx
 // Author:    Sergey TELKOV
@@ -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
index 2aa97f143ad1f27e1aabe1d0d3f92bf5d3cc9061..f3d791986fed729525f384f3018c00f625c7e161 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_Preferences.h
 // Author:    Sergey TELKOV
 
 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
index af26451f77480b37987b1492a9bda51582ba82f1..e15c168322a2e160e4607529b1d7c0d0de8b4e59 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_PreferencesDlg.cxx
 // Author:    Sergey TELKOV
 
 #include "LightApp_PreferencesDlg.h"
-
 #include "LightApp_Preferences.h"
 
 #include "QtxResourceMgr.h"
 #include <qlayout.h>
 #include <qmessagebox.h>
 #include <qvbox.h>
+#include <qfiledialog.h>
 
 /*!
   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();
+  }
+}
index 771714519db6cfd8677e06e9934395a5569a46a5..4c7f20f305ddc50d5a334e74b5c7b55db8bfd4de 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      LightApp_PreferencesDlg.h
 // Author:    Sergey TELKOV
 
 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;
index f5daff71cbb9a9c4d12ab77c1c0392f64b9f80c6..1c1543a461ed0d27bb3117d5cf0dd7e1eabf537b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_ROOTOBJECT_H
 #define LIGHTAPP_ROOTOBJECT_H
index bca35cfec27e7b8e4a3ee34f7c14e0363f06cda4..5620c41d389b82ada1e64ea751f55098b6ff5b53 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "LightApp_Selection.h"
@@ -86,13 +86,13 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
       LightApp_DataOwner* sowner = dynamic_cast<LightApp_DataOwner*>( (*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++;
       }
@@ -153,7 +153,12 @@ QtxValue LightApp_Selection::param( const int ind, const QString& p ) const
     LightApp_Displayer* d = LightApp_Displayer::FindDisplayer( mod_name, false );
     // false in last parameter means that now we doesn't load module, if it isn't loaded
 
-    return QtxValue( d ? d->canBeDisplayed( myEntries[ ind ] ) : true, 0 );
+    if ( d )
+      return d->canBeDisplayed( myEntries[ ind ] );
+    else if ( myEntries[ ind ].startsWith( QObject::tr( "SAVE_POINT_DEF_NAME" ) ) ) // object is a Save Point object
+      return false;
+
+    return true;
     //now if displayer is null, it means, that according module isn't loaded, so that we allow to all display/erase
     //operations under object
   }
index 79cc0fac6770e1f9f76641d90512f156a1281071..846699f3b5c413c33be073889e17c2c5efb9665b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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:
index ab7a4f8b1616e2b4abf555e56a9549291cc55c91..6d8fb6d44f2e5ef20bc9d01553a701def7f3ca11 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_SelectionMgr.h"
 
 
 #include <SUIT_Session.h>
 
-#include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SALOME_ListIO.hxx>
+  #include <SALOME_ListIteratorOfListIO.hxx>
 
-// Open CASCADE Include
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_MapIteratorOfMapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+  // Open CASCADE Include
+  #include <TColStd_MapOfInteger.hxx>
+  #include <TColStd_MapIteratorOfMapOfInteger.hxx>
+  #include <TColStd_IndexedMapOfInteger.hxx>
+#endif
 
 /*!
   Constructor.
@@ -57,6 +59,7 @@ LightApp_Application* LightApp_SelectionMgr::application() const
   return myApp;
 }
 
+#ifndef DISABLE_SALOMEOBJECT
 /*!
   Get all selected objects from selection manager
 */
@@ -89,12 +92,12 @@ void LightApp_SelectionMgr::selectedObjects( SALOME_ListIO& theList, const QStri
           QString component = study->componentDataType( refEntry );
           theList.Append( new SALOME_InteractiveObject( refEntry, component, ""/*refobj->Name().c_str()*/ ) );
         }
-        else
+        else if( !owner->IO().IsNull() )
           theList.Append( owner->IO() );
       }
     }
     else {
-      if( !entryMap.contains( entry ) )
+      if( !entryMap.contains( entry ) && !owner->IO().IsNull() )
        theList.Append( owner->IO() );
     }
 
@@ -117,6 +120,37 @@ void LightApp_SelectionMgr::setSelectedObjects( const SALOME_ListIO& lst, const
   setSelected( owners, append );
 }
 
+#else
+/*!
+  Get all selected objects from selection manager
+*/
+void LightApp_SelectionMgr::selectedObjects( QStringList& theList, const QString& theType,
+                                             const bool convertReferences ) const
+{
+  theList.clear();
+
+  SUIT_DataOwnerPtrList aList;
+  selected( aList, theType );
+
+  QString entry;
+  for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
+  {
+    const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
+    if( !owner )
+      continue;
+
+    LightApp_Study* study = dynamic_cast<LightApp_Study*>( application()->activeStudy() );
+    if ( !study )
+      return;
+
+    entry = owner->entry();
+    if( !theList.contains( entry ) )
+      theList.append( entry );
+  }
+}
+
+#endif
+
 /*!
   Emit current selection changed.
 */
@@ -127,6 +161,8 @@ void LightApp_SelectionMgr::selectionChanged( SUIT_Selector* theSel )
   emit currentSelectionChanged();
 }
 
+#ifndef DISABLE_SALOMEOBJECT
+
 /*!
   get map of indexes for the given SALOME_InteractiveObject
 */
@@ -287,3 +323,5 @@ void LightApp_SelectionMgr::selectedSubOwners( MapEntryOfMapOfInteger& theMap )
     }
   }
 }
+
+#endif
index c063b82be6467fd0f2dc1b32478a91e3e2760a8b..be758e0795ffe6bb1f7d0f9094803982100a11ff 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_SELECTIONMGR_H
 #define LIGHTAPP_SELECTIONMGR_H
 #include "LightApp.h"
 
 #include <SUIT_SelectionMgr.h>
-#include <SALOME_InteractiveObject.hxx>
 
-#include <qmap.h>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SALOME_InteractiveObject.hxx>
+  #include <qmap.h>
+
+  class SALOME_ListIO;
+  class TColStd_IndexedMapOfInteger;
+  class TColStd_MapOfInteger;
+#else
+#include <qstringlist.h>
+#endif
 
-class SALOME_ListIO;
 class LightApp_Application;
-class TColStd_IndexedMapOfInteger;
-class TColStd_MapOfInteger;
 
+/*!
+  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
@@ -39,11 +48,12 @@ public:
   LightApp_SelectionMgr( LightApp_Application*, const bool = true );
   virtual ~LightApp_SelectionMgr();
 
+  LightApp_Application* application() const;
+
+#ifndef DISABLE_SALOMEOBJECT
   typedef QMap< Handle(SALOME_InteractiveObject), TColStd_IndexedMapOfInteger > MapIOOfMapOfInteger;
   typedef QMap< QString, TColStd_IndexedMapOfInteger > MapEntryOfMapOfInteger;
 
-  LightApp_Application* application() const;
-
   void                   selectedObjects( SALOME_ListIO&, const QString& = QString::null, const bool = true ) const;
   void                   setSelectedObjects( const SALOME_ListIO&, const bool = false );
 
@@ -61,6 +71,9 @@ public:
   void                   selectObjects( MapIOOfMapOfInteger theMapIO, bool append );
 
   void                   selectedSubOwners( MapEntryOfMapOfInteger& theMap );
+#else
+  void                   selectedObjects( QStringList&, const QString& = QString::null, const bool = true ) const;
+#endif
 
 signals:
   void                   currentSelectionChanged();
index 52f16266f424acb5d53427b47487bb864353bd69..a329cf88915c6f3bf88248fc10df89d986e903fb 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "LightApp_ShowHideOp.h"
 #include "LightApp_SelectionMgr.h"
 #include "LightApp_Selection.h"
 
-#include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
+#ifndef DISABLE_SALOMEOBJECT
+  #include <SALOME_ListIO.hxx>
+  #include <SALOME_ListIteratorOfListIO.hxx>
+#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<LightApp_Application*>( application() );
@@ -95,21 +106,33 @@ void LightApp_ShowHideOp::startOperation()
     }
   }
 
+  QStringList entries;
+
+#ifndef DISABLE_SALOMEOBJECT
   SALOME_ListIO selObjs;
   mgr->selectedObjects( selObjs );
-
-  QStringList entries;
   SALOME_ListIteratorOfListIO anIt( selObjs );
   for( ; anIt.More(); anIt.Next() )
-  {
-    if( anIt.Value().IsNull() )
-      continue;
+    if( !anIt.Value().IsNull() )
+#else
+  QStringList selObjs;
+  mgr->selectedObjects( selObjs );
+  QStringList::const_iterator anIt = selObjs.begin(), aLast = selObjs.end();
+  for( ; ; anIt!=aLast )
+#endif
+    {
+      QString entry = 
+#ifndef DISABLE_SALOMEOBJECT
+        anIt.Value()->getEntry();
+#else
+        *anIt;
+#endif
 
-    if( study->isComponent( anIt.Value()->getEntry() ) )
-      study->children( anIt.Value()->getEntry(), entries );
-    else
-      entries.append( anIt.Value()->getEntry() );
-  }
+      if( study->isComponent( entry ) )
+        study->children( entry, entries );
+      else
+        entries.append( entry );
+    }
 
   for( QStringList::const_iterator it = entries.begin(), last = entries.end(); it!=last; it++ )
   {
index cac7b918d966887afbf45f64f8cce19299c887a8..687c16dd244193beca20fe66ae57a9d44edc048a 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef LIGHTAPP_SHOW_HIDE_OPERATION_HEADER
 #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
index a2e5e4ba93cc2e947219e8260acb3e218b4b3702..a37df3ba78954f0eeea3dc5bab8f9a29561a8cbe 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_Study.h"
 
@@ -23,8 +23,7 @@
 #include "LightApp_DataModel.h"
 #include "LightApp_DataObject.h"
 #include "LightApp_RootObject.h"
-// HDF persistence not yet completed
-//#include "LightApp_HDFDriver.h"
+#include "LightApp_HDFDriver.h"
 
 #include "SUIT_ResourceMgr.h"
 #include "SUIT_DataObjectIterator.h"
 LightApp_Study::LightApp_Study( SUIT_Application* app )
 : CAM_Study( app )
 {
-  // HDF persistence not yet completed
-  //myDriver = new LightApp_HDFDriver();
-  myDriver = new LightApp_Driver();
+  // HDF persistence
+  myDriver = new LightApp_HDFDriver();
+  //myDriver = new LightApp_Driver();
 }
+
 /*!
   Destructor.
 */
@@ -68,6 +67,8 @@ LightApp_Study::~LightApp_Study()
 */
 void LightApp_Study::createDocument()
 {
+  setStudyName( QString( "Study%1" ).arg( LightApp_Application::studyId() ) );
+
   // create myRoot
   setRoot( new LightApp_RootObject( this ) );
 
@@ -76,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();
@@ -105,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();
@@ -137,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();
@@ -200,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 );
@@ -226,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,
@@ -242,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() )
@@ -280,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;
@@ -296,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();
@@ -314,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();
@@ -352,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<std::string> aListOfFiles =  myDriver->GetListOfFiles(theModuleName);
@@ -369,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 );
@@ -385,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();
@@ -400,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)
@@ -421,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<std::string> LightApp_Study::GetListOfFiles(const char* theModuleName) const
 {
   std::vector<std::string> aListOfFiles;
@@ -442,19 +426,19 @@ std::vector<std::string> 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<std::string> 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)
@@ -463,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();
index 3714f28281feaa6621b87c055ea07adb5f10fac3..b9de680b812bf56e0ca6e0cd656b4c04a7c89e48 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_STUDY_H
 #define LIGHTAPP_STUDY_H
 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
@@ -86,6 +91,8 @@ signals:
 
 private:
   LightApp_Driver*    myDriver;
+
+  friend class LightApp_Application;
 };
 
 #endif 
index 14feeaa6dc662f9c154f881c6460c1dba631f670..67283f365c1b8b1c017b634d69b693683831e192 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/**
-*  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"
index dad93261d934c0dd1b45e7346a9d23d032bc073a..a85d2e3da01cea9452c4b799a0f751ee8bb645a0 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/**
-*  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
index 2fc7fa780427a5b32a6ef222f374dbbe63b08258..b11103f76cdf64e94607e7e20cf4f3f385753785 100755 (executable)
@@ -1,8 +1,20 @@
-//  LIGHT LightApp
-//
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LightApp_UpdateFlags.h
 //  Author : Sergey LITONIN
 #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
index b393b3043b94976f76f106ea8193452fdcd79f9e..d28da9faed22f01f9c422bd8777d048cf3ed6c53 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_VTKSelector.h"
 #include "LightApp_DataOwner.h"
 
-#include "SVTK_ViewModelBase.h"
-#include "SVTK_Selector.h"
-#include "SVTK_ViewWindow.h"
-#include "SVTK_Functor.h"
+#ifndef DISABLE_VTKVIEWER
+  #include "SVTK_ViewModelBase.h"
+  #include "SVTK_ViewManager.h"
+  #include "SVTK_Selector.h"
+  #include "SVTK_ViewWindow.h"
+  #include "SVTK_Functor.h"
+  #include "VTKViewer_Algorithm.h"
+  #include <vtkRenderer.h>
+#endif
 
-#include "SALOME_Actor.h"
-#include "SALOME_ListIteratorOfListIO.hxx"
+#ifndef DISABLE_SALOMEOBJECT
+  #include "SALOME_Actor.h"
+  #include "SALOME_ListIteratorOfListIO.hxx"
+#endif
 
-#include "VTKViewer_Algorithm.h"
 
-#include <vtkRenderer.h>
 
+#ifndef DISABLE_VTKVIEWER
+#ifndef DISABLE_SALOMEOBJECT
 /*!
   Constructor.
 */
 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
 
 /*!
   Destuctor.
@@ -54,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<SVTK_ViewWindow*>(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.
 */
@@ -61,9 +109,18 @@ SALOME_Actor*
 LightApp_SVTKDataOwner
 ::GetActor() const
 {
-  return myActor.GetPointer();
+  if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){
+    using namespace SVTK;
+    return Find<SALOME_Actor>(aViewWindow->getRenderer()->GetActors(),TIsSameIObject<SALOME_Actor>(IO()));
+  }
+
+  return NULL;
 }
 
+#endif
+
+
+#ifndef DISABLE_VTKVIEWER
 /*!
   Constructor.
 */
@@ -105,6 +162,7 @@ LightApp_VTKSelector
   return myViewer->getType(); 
 }
 
+#endif
 /*!
   On selection changed.
 */
@@ -115,6 +173,8 @@ LightApp_VTKSelector
   selectionChanged();
 }
 
+#ifndef DISABLE_VTKVIEWER
+
 /*!
   Gets list of selected data owners.(output \a aList).
 */
@@ -123,23 +183,16 @@ LightApp_VTKSelector
 ::getSelection( SUIT_DataOwnerPtrList& aList ) const
 {
   if(myViewer){
-    if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){
-      if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(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<SALOME_Actor>(aView->getRenderer()->GetActors(),TIsSameIObject<SALOME_Actor>(anIO));
-             }
-             aList.append(new LightApp_SVTKDataOwner(anIO,anIds,aMode,anActor));
+    if(SUIT_ViewManager* aViewManager = myViewer->getViewManager()){
+      if(SVTK_ViewManager* aViewMgr = dynamic_cast<SVTK_ViewManager*>(aViewManager)){
+       if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(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()));
            }
          }
        }
@@ -168,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);
@@ -204,3 +254,5 @@ LightApp_VTKSelector
     }
   }
 }
+
+#endif
index 14c6523ce1a2aaf4eade1e030324c71a1749d67e..aebf5f54a757bd65ca255a298c02af454fc81bb3 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_VTKSELECTOR_H
 #define LIGHTAPP_VTKSELECTOR_H
 
-#include <vtkSmartPointer.h>
-
-#include <TColStd_IndexedMapOfInteger.hxx>
-
 #include "SUIT_Selector.h"
-
 #include "LightApp.h"
 #include "LightApp_DataOwner.h"
 
-#include "SVTK_Selection.h"
-#include "SALOME_InteractiveObject.hxx"
+class SUIT_Desktop;
 
-class SALOME_Actor;
-class SVTK_ViewModelBase;
+#ifndef DISABLE_VTKVIEWER
+  #include <vtkSmartPointer.h>
+  #include <TColStd_IndexedMapOfInteger.hxx>
+  #include "SVTK_Selection.h"
+#ifndef DISABLE_SALOMEOBJECT
+  #include "SALOME_InteractiveObject.hxx"
+#endif
+  class SALOME_Actor;
+  class SVTK_ViewWindow;
+  class SVTK_ViewModelBase;
+#endif
 
 /*!
   Provide salome vtk data owner list.
@@ -40,57 +43,66 @@ class SVTK_ViewModelBase;
 class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner
 {
  public:
+#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<SALOME_Actor> myActor;
+    mutable TColStd_IndexedMapOfInteger myIds;
+
+    SVTK_ViewWindow* GetActiveViewWindow() const;
+    SUIT_Desktop* myDesktop;
+    
+#else
+  LightApp_SVTKDataOwner( const QString& );
+#endif
 };
 
 
 /*!
-  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
 {
   Q_OBJECT;
 
 public:
+#ifndef DISABLE_VTKVIEWER
   LightApp_VTKSelector( SVTK_ViewModelBase*, SUIT_SelectionMgr* );
   virtual ~LightApp_VTKSelector();
 
   SVTK_ViewModelBase* viewer() const;
 
   virtual QString type() const;
+#else
+  LightApp_VTKSelector( SUIT_SelectionMgr* );
+#endif
 
 private slots:
   void              onSelectionChanged();
 
+#ifndef DISABLE_VTKVIEWER
 protected:
   virtual void      getSelection( SUIT_DataOwnerPtrList& ) const;
   virtual void      setSelection( const SUIT_DataOwnerPtrList& );
 
 private:
   SVTK_ViewModelBase* myViewer;
+
+#endif
 };
 
 #endif
index df92c5313619df253e88bff52603e6dfebafe366..aa6f831d25ac3ee14b588630f3dec9b1f2f8e90d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "LightApp_WidgetContainer.h"
 
index df6dbc84de16def454342ae3cf41bb52b44ba82c..1679ec0c7b651ae032ae8c9f4e1dd9f190e18a1b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef LIGHTAPP_WIDGETCONTAINER_H
 #define LIGHTAPP_WIDGETCONTAINER_H
index 3ffef04491b2f2e3def1bc0517acf859bc3e06c7..2fd596ee31dae2a179631fb1c40af059eaeede8d 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : OCC team (OCN)
 #  Module : LightApp
@@ -22,13 +40,12 @@ EXPORT_HEADERS= LightApp.h \
                LightApp_Dialog.h \
                LightApp_Displayer.h \
                LightApp_Driver.h \
-               LightApp_GLSelector.h \
+               LightApp_HDFDriver.h \
                LightApp_Module.h \
                LightApp_ModuleDlg.h \
                LightApp_NameDlg.h \
                LightApp_OBFilter.h \
                LightApp_OBSelector.h \
-               LightApp_OCCSelector.h \
                LightApp_Operation.h \
                LightApp_Selection.h \
                LightApp_SelectionMgr.h \
@@ -39,9 +56,19 @@ EXPORT_HEADERS= LightApp.h \
                LightApp_PreferencesDlg.h \
                LightApp_RootObject.h \
                LightApp_UpdateFlags.h \
-               LightApp_VTKSelector.h \
                LightApp_WidgetContainer.h
-#               LightApp_HDFDriver.h \
+
+ifneq ($(DISABLE_VTKVIEWER),yes)
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  EXPORT_HEADERS+= LightApp_VTKSelector.h
+endif
+endif
+ifneq ($(DISABLE_OCCVIEWER),yes)
+  EXPORT_HEADERS+= LightApp_OCCSelector.h
+endif
+ifneq ($(DISABLE_GLVIEWER),yes)
+  EXPORT_HEADERS+= LightApp_GLSelector.h
+endif
 
 # .po files to transform in .qm
 PO_FILES = LightApp_images.po \
@@ -59,13 +86,12 @@ LIB_SRC= LightApp_AboutDlg.cxx \
         LightApp_Dialog.cxx \
         LightApp_Displayer.cxx \
         LightApp_Driver.cxx \
-        LightApp_GLSelector.cxx \
+        LightApp_HDFDriver.cxx \
         LightApp_Module.cxx \
         LightApp_ModuleDlg.cxx \
         LightApp_NameDlg.cxx \
         LightApp_OBFilter.cxx \
         LightApp_OBSelector.cxx \
-        LightApp_OCCSelector.cxx \
         LightApp_Operation.cxx \
         LightApp_Selection.cxx \
         LightApp_SelectionMgr.cxx \
@@ -74,17 +100,25 @@ LIB_SRC= LightApp_AboutDlg.cxx \
         LightApp_SwitchOp.cxx \
         LightApp_Preferences.cxx \
         LightApp_PreferencesDlg.cxx \
-        LightApp_VTKSelector.cxx \
         LightApp_WidgetContainer.cxx
-#        LightApp_HDFDriver.cxx \
+
+ifneq ($(DISABLE_VTKVIEWER),yes)
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIB_SRC+= LightApp_VTKSelector.cxx
+endif
+endif
+ifneq ($(DISABLE_OCCVIEWER),yes)
+  LIB_SRC+= LightApp_OCCSelector.cxx
+endif
+ifneq ($(DISABLE_GLVIEWER),yes)
+  LIB_SRC+= LightApp_GLSelector.cxx
+endif
 
 LIB_MOC = LightApp_AboutDlg.h \
          LightApp_Application.h \
          LightApp_DataModel.h \
          LightApp_Dialog.h \
-         LightApp_GLSelector.h \
          LightApp_OBSelector.h \
-         LightApp_OCCSelector.h \
          LightApp_Operation.h \
          LightApp_Module.h \
          LightApp_ModuleDlg.h \
@@ -95,9 +129,20 @@ LIB_MOC = LightApp_AboutDlg.h \
          LightApp_SwitchOp.h \
          LightApp_Preferences.h \
          LightApp_PreferencesDlg.h \
-         LightApp_VTKSelector.h \
          LightApp_WidgetContainer.h
 
+ifneq ($(DISABLE_VTKVIEWER),yes)
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIB_MOC+= LightApp_VTKSelector.h
+endif
+endif
+ifneq ($(DISABLE_OCCVIEWER),yes)
+  LIB_MOC+= LightApp_OCCSelector.h
+endif
+ifneq ($(DISABLE_GLVIEWER),yes)
+  LIB_MOC+= LightApp_GLSelector.h
+endif
+
 RESOURCES_FILES = icon_about.png \
                  icon_applogo.png \
                  icon_default.png \
@@ -107,11 +152,74 @@ RESOURCES_FILES = icon_about.png \
                  LightApp.ini \
                  LightApp.xml
 
-CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) 
-       #$(HDF5_INCLUDES)
+CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(OCC_INCLUDES) \
+       $(HDF5_INCLUDES) $(KERNEL_CXXFLAGS)
+
+ifneq ($(DISABLE_VTKVIEWER),yes)
+  CPPFLAGS+= $(VTK_INCLUDES)
+else
+  CPPFLAGS+= -DDISABLE_VTKVIEWER
+endif
+ifneq ($(DISABLE_PLOT2DVIEWER),yes)
+  CPPFLAGS+= $(QWT_INCLUDES)
+else
+  CPPFLAGS+= -DDISABLE_PLOT2DVIEWER
+endif
+ifeq ($(DISABLE_OCCVIEWER),yes)
+  CPPFLAGS+= -DDISABLE_OCCVIEWER
+endif
+ifneq ($(DISABLE_PYCONSOLE),yes)
+  CPPFLAGS+= $(PYTHON_INCLUDES)
+else
+  CPPFLAGS+= -DDISABLE_PYCONSOLE
+endif
+ifeq ($(DISABLE_GLVIEWER),yes)
+  CPPFLAGS+= -DDISABLE_GLVIEWER
+endif
+ifeq ($(DISABLE_SUPERVGRAPHVIEWER),yes)
+  CPPFLAGS+= -DDISABLE_SUPERVGRAPHVIEWER
+endif
+ifeq ($(DISABLE_SALOMEOBJECT),yes)
+  CPPFLAGS+= -DDISABLE_SALOMEOBJECT
+endif
+
+LDFLAGS+=$(QT_MT_LIBS)
+ifneq ($(DISABLE_PYCONSOLE),yes)
+  LDFLAGS+= $(PYTHON_LIBS)
+endif
+
+LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lSalomePrs \
+       $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist
 
-LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS)
-LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSOCC -lSVTK -lSPlot2d -lSUPERVGraph -lPyInterp -lPythonConsole 
-       #$(HDF5_LIBS) -lSalomeHDFPersistCopy
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIBS+= -lSalomeObject
+endif
+ifneq ($(DISABLE_VTKVIEWER),yes)
+  LIBS+= -lVTKViewer
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIBS+= -lSVTK
+endif
+endif
+ifneq ($(DISABLE_OCCVIEWER),yes)
+  LIBS+= -lOCCViewer
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIBS+= -lSOCC
+endif
+endif
+ifneq ($(DISABLE_GLVIEWER),yes)
+  LIBS+= -lGLViewer
+endif
+ifneq ($(DISABLE_PLOT2DVIEWER),yes)
+  LIBS+= -lPlot2d
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  LIBS+= -lSPlot2d
+endif
+endif
+ifneq ($(DISABLE_PYCONSOLE),yes)
+  LIBS+= -lPyInterp -lPythonConsole
+endif
+ifneq ($(DISABLE_SUPERVGRAPHVIEWER),yes)
+  LIBS+= -lSUPERVGraph
+endif
 
 @CONCLUDE@
index 2a4932e04b54e720124bb78a26f0863cc9f7ee10..7cb56db7bc919dde06e7b37cd192d5c3b363a82f 100644 (file)
@@ -1,12 +1,6 @@
 <document>
-  <section name="desktop" >
-    <parameter name="state"  value="max"/>
-    <parameter name="pos_x"  value="100"/>
-    <parameter name="pos_y"  value="050"/>
-    <parameter name="width"  value="640"/>
-    <parameter name="height" value="480"/>
-  </section>
   <section name="launch">
+    <!-- SALOME launching parameters -->
     <parameter name="gui"        value="yes"/>
     <parameter name="splash"     value="yes"/>
     <parameter name="file"       value="no"/>
     <parameter name="modules"    value="LIGHT"/>
   </section>
   <section name="language">
+    <!-- Language settings (resource manager)-->
     <parameter name="language"    value="en"/>
     <parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
   </section>
+  <section name="splash" >
+    <!-- Splash screen settings -->
+    <parameter name="image"       value="${SUITRoot}/resources/icon_about.png" />
+    <parameter name="info"        value="%A : %V" />
+    <parameter name="text_colors" value="#543AA9|#FFFFFF" />
+  </section>
   <section name="resources">
+    <!-- Resource directories (resource manager)-->
     <parameter name="SUIT"         value="${SUITRoot}/resources"/>
     <parameter name="STD"          value="${SUITRoot}/resources"/>
     <parameter name="Plot2d"       value="${SUITRoot}/resources"/>
     <parameter name="CAM"          value="${SUITRoot}/resources"/>
     <parameter name="LightApp"     value="${SUITRoot}/resources"/>
     <parameter name="SVTK"         value="${SUITRoot}/resources"/>
-    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
     <parameter name="ToolsGUI"     value="${SUITRoot}/resources"/>
+    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
+  </section>
+  <section name="desktop" >
+    <!-- Default GUI desktop state, position, size -->
+    <parameter name="state"  value="normal"/>
+    <parameter name="pos_x"  value="center"/>
+    <parameter name="pos_y"  value="center"/>
+    <parameter name="width"  value="800"/>
+    <parameter name="height" value="600"/>
   </section>
   <section name="LIGHT">
+    <!-- LIGHT module settings -->
     <parameter name="name"       value="Light"/>
     <parameter name="icon"       value="LIGHT.png"/>
   </section>
-
-<!-- values below this line are just an example, they are not used  -->
-  <section name="application">
+  <section name="PyConsole">
+    <!-- Python console preferences -->
+    <parameter name="font"                value="Helvetic,12" />
+    <parameter name="additional_families" value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida"/>
+  </section>
+  <section name="FileDlg">
+    <!-- "Open/Save File" dialog box preferences-->
     <parameter name="QuickDirList" value=""/>
-    <!-- Here go other common user preferences -->
   </section>
   <section name="Study">
-    <parameter value="true" name="store_positions" />
+    <!-- General study settings -->
+    <parameter name="store_positions" value="true" />
   </section>
   <section name="OCCViewer" >
-    <parameter value="35, 136, 145" name="background" />
-    <parameter value="1" name="iso_number_u" />
-    <parameter value="1" name="iso_number_v" />
-    <parameter value="100" name="trihedron_size" />
+    <!-- OCC viewer preferences -->
+    <parameter name="background"     value="35, 136, 145" />
+    <parameter name="iso_number_u"   value="1" />
+    <parameter name="iso_number_v"   value="1" />
+    <parameter name="trihedron_size" value="100" />
  </section>
  <section name="VTKViewer" >
-    <parameter value="0, 0, 0" name="background" />
-    <parameter value="100" name="trihedron_size" />
+    <!-- OCC viewer preferences -->
+    <parameter name="background"     value="0, 0, 0"/>
+    <parameter name="trihedron_size" value="100" />
  </section>
  <section name="Plot2d" >
-    <parameter value="255, 255, 255" name="Background" />
-    <parameter value="1" name="CurveType" />
-    <parameter value="0" name="HorScaleMode" />
-    <parameter value="1" name="LegendPos" />
-    <parameter value="9" name="MarkerSize" />
-    <parameter value="true" name="ShowLegend" />
-    <parameter value="0" name="VerScaleMode" />
+    <!-- Plot2d viewer preferences -->
+    <parameter name="Background"   value="255, 255, 255" />
+    <parameter name="CurveType"    value="1" />
+    <parameter name="HorScaleMode" value="0" />
+    <parameter name="LegendPos"    value="1" />
+    <parameter name="MarkerSize"   value="9" />
+    <parameter name="ShowLegend"   value="true" />
+    <parameter name="VerScaleMode" value="0" />
   </section>
   <section name="SUPERVGraph" >
-    <parameter value="144, 208, 211" name="Background" />
-    <parameter value="63, 213, 255" name="Title" />
-  </section>
-  <!-- Here go optional sections for other modules -->
-  <section name="resources">
-    <parameter name="salome" value="${KERNEL_ROOT_DIR}/share/salome/res"/>
-    <!-- Here go resource directories for other modules -->
+    <!-- Supervision viewer preferences -->
+    <parameter name="Background" value="144, 208, 211" />
+    <parameter name="Title"      value="63, 213, 255"  />
   </section>
 </document>
index c1ee44b39546a285debf3373a3413a754138e42d..9149d196d40fc3ccc0cadc0aafdaa9b8c03425d7 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      LightApp_images.po
 // Created:   May, 2005
 // Author:    OCC team
index c5b364d565aa6908759ba22c408057dd83e6d2ba..f06c47efc749934da7aa8bec67148f410b8358f2 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
@@ -22,7 +40,7 @@ msgid "ABOUT_VERSION"
 msgstr "Version %1"
 
 msgid "ABOUT_COPYRIGHT"
-msgstr "Copyright (C) 2003-2005 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS"
+msgstr "Copyright (C) 2003-2006 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS"
 
 msgid "ABOUT_LICENSE"
 msgstr "GNU LGPL"
@@ -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"
 
 //=======================================================================================
 
@@ -322,3 +343,10 @@ msgstr "&Cancel"
 
 msgid "LightApp_ModuleDlg::ActivateComponent_DESCRIPTION"
 msgstr "Create, open or load study."
+
+msgid "LightApp_NameDlg::TLT_RENAME"
+msgstr "Rename"
+
+msgid "LightApp_NameDlg::NAME_LBL"
+msgstr "Name: "
+
index 287b4f766aa88ed3bcfc8e3137f2be4dba84e35b..6817eb4073d11a0fe69b69d01bc06f5a8895f208 100755 (executable)
Binary files a/src/LightApp/resources/icon_about.png and b/src/LightApp/resources/icon_about.png differ
index 0b846b720476a4753c4e593784557c78cd7d7bd6..161011c450bd343cd45bfab00d0b533dc9618220 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 
 #include "LogWindow.h"
 
@@ -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 )
index 44001e068246217534a9539234c213328a851f07..0b8b39e98c7f1af5063f4a35f923350d176e3b81 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : LogWindow.h
 //  Author : 
 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
index f4590c4c698ecbdbd886e91707abba53c3643764..d868371afab618d0c5786cbd336b0beebc2dda58 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : LogWindow
index 332907b5c9ce9f2e67008a07f193465b29f3be67..0bd6d185f1d6f3dfd9fe5b713084d8decee59c4b 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -32,9 +32,52 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-SUBDIRS = Qtx DDS QDS SUIT STD CAF CAM SUITApp VTKViewer OCCViewer GLViewer \
-          LogWindow Event OBJECT Prs PyInterp PythonConsole ObjBrowser \
-          RegistryDisplay Plot2d TOOLSGUI SOCC SVTK SPlot2d SUPERVGraph \
-         LightApp Session SalomeApp SALOME_SWIG SALOME_PY SALOME_PYQT Style ResExporter
+SUBDIRS = Qtx DDS QDS SUIT STD CAF CAM SUITApp LogWindow ObjBrowser Prs
+
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  SUBDIRS += OBJECT
+endif
+
+ifneq ($(DISABLE_GLVIEWER),yes)
+  SUBDIRS += GLViewer
+endif
+
+ifneq ($(DISABLE_VTKVIEWER),yes)
+  SUBDIRS += VTKViewer
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  SUBDIRS += SVTK
+endif
+endif
+ifneq ($(DISABLE_OCCVIEWER),yes)
+ SUBDIRS += OCCViewer
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  SUBDIRS += SOCC
+endif
+endif
+ifneq ($(DISABLE_PYCONSOLE),yes)
+  SUBDIRS += PyInterp PythonConsole
+endif
+ifneq ($(DISABLE_PLOT2DVIEWER),yes)
+  SUBDIRS += Plot2d
+ifneq ($(DISABLE_SALOMEOBJECT),yes)
+  SUBDIRS += SPlot2d
+endif
+endif
+ifneq ($(DISABLE_SUPERVGRAPHVIEWER),yes)
+  SUBDIRS += SUPERVGraph
+endif
+SUBDIRS += LightApp Style ResExporter
+
+ifneq ($(GUI_DISABLE_CORBA),yes)
+  SUBDIRS +=  RegistryDisplay TOOLSGUI \
+         Event Session SalomeApp SALOME_SWIG SALOME_PY SALOME_PYQT
+endif
+
+ifeq (@cppunit_ok@,yes)
+ifneq ($(GUI_DISABLE_CORBA),yes)
+ SUBDIRS+= \
+ SalomeApp/Test 
+endif
+endif
 
 @MODULE@
index 98dede911c8370b7e48f5428ca98825d8467d253..342cf62217df60e2b8844d47e012d8fe4384d366 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 65a1bc6d931bb2a838fe7df53870cb4d1be2d3e8..b987b929ad99e20536d32cd78ffb2cbc77f69582 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 4caa5b2d5c7f0a970c31c2f4dd942452900b9800..b94e60d004781f3b37d1d8948d90a4636dd075df 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 49eb7b877239f5fa57a8aed861f4f1493b1e3888..8c229400619fc90d23bfa9a5cecf0a16d6ecd374 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 767dfec3f5f51687e3ff952fd159e5e4ffe9ee4e..9bc3776c946cce8af9b99d2ea9fd097e116b5a6b 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 0df5e98bee064b21ce6a649d977250103cc64f34..e78995482fbba7f68bb1a6f84dfaa25e0f043b9a 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 4fdd91368589352074ec12ab7d7b5d57c5c2ddbf..4ca800e0415f38e2c916b99c973ff36427bf8cf6 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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) 
index 0fb5e50a7161ae8e2cfbc39c18d131d26a2e9318..ad9e94cccaed019b8144d345abeb7792ed08f6f4 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # source path
 top_srcdir=@top_srcdir@
 top_builddir=../..
@@ -9,7 +27,6 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 
 EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
                 Handle_SALOME_InteractiveObject.hxx \
-                SALOME_GLOwner.h \
                 SALOME_AISShape.hxx \
                 Handle_SALOME_AISShape.hxx \
                 SALOME_AISObject.hxx \
@@ -32,7 +49,6 @@ EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
 
 LIB = libSalomeObject.la
 LIB_SRC =       SALOME_InteractiveObject.cxx \
-                SALOME_GLOwner.cxx \
                 SALOME_AISShape.cxx\
                 SALOME_AISObject.cxx\
                 SALOME_ListIO_0.cxx \
@@ -50,8 +66,8 @@ LIB_CLIENT_IDL =
 BIN = 
 BIN_SRC        =
 
-CPPFLAGS+=$(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(QT_INCLUDES) $(OGL_INCLUDES)
-LDFLAGS+= $(PYTHON_LIBS) $(VTK_LIBS) $(QT_LIBS) $(OGL_LIBS) $(CAS_LDPATH) -lTKV3d -lVTKViewer -lsuit
+CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES)
+LDFLAGS+= $(QT_LIBS) $(CAS_LDPATH) -lTKV3d
 
 
 @CONCLUDE@
index 76559b44a6e878316fdd2b8883b3784ef9e91649..c50184989b4ee0e15f9562ec54b211d16fe502a5 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 148e1574b986d07181e57dd4d91913385f5b5ec8..b89716f4c6044b6da5f93ab795f4c7cc95d75a17 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index e1fef4c888996e1f7455d653e845b293de60f274..11980b967363e287a9eb06eb36fe887d0e69cfab 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 7fd42edaf642f833aebe035e93b83c969ae1a3e1..95635ee72453eb9aef498efaee905527299d4165 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index dcd76be06d3e55724c53cd3a36a2b6cd51860b8e..52afc406d2770a67da6bc417a7465f470bfa62c0 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 //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)
+{
 }
 
index f12700b0181c1db4303d55330b4ee9fde19c1727..4a8b87d98f3425f7b18e929aeddfdd24ed3075b2 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 37012c36e4b6a0f4dd789e9cb35d50c9bca2e515..11909336ec40a58b6367c6556ba9eec326dcb778 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 6ac28f17bbe3efe9728f5ae73bccd1971ba5734b..cae6c5f545069f75d8b26421bba8e430a80c4e05 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 760c94eb3ab4092eba7805b37eaa40607e31e46a..34ebe62d63b1d388ac787934de046fc0b89d779c 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 8d089784478783159cc20e411fa2f5fc7d614500..f24caa367e24a91d092ef10ef39bfd974a6bd0ad 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index cbfa39192578fffbdfb224c9898e698b3be8efde..3c100b02e40d40a306dc4bf7faedb2fc98498a9f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 4cab4c88e60e0bb0d01b3e088c1b2548c6ee4811..b1a4c95fa131e5098696cd3efede42030fadd645 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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"
index 0478b82a122683b6597816f1fbd4ac512a81384a..f3aa034f7a0ccafa167c5a497bf926a907b0e9e8 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 7ce912510c4c658c1fe95ad36620e3fe839ff59a..bf8f767945087da75d0b42aa840dee82c5e0570f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index a6ca25e670eae3500f543e2409175d0b5b22c8f2..79ba21691c6f5f930e6d8bc703bc8afa7e5a5684 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 9c7ed2c6d7a0ae3fea3feb111db4afa4405bd7f0..4386503a5f7b26b71d2f758b0c15477f8d88d3e0 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 850317496a9201b6c2aaf0af4bcef3a368d30622..c872cef3f62384336dca013b2b1ba61c5cf3d65e 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 1928c441f60b6c9fe8dc231625c6e70656bc2a51..db8562e5a021a1c82912b9337948b5b9d3fe2762 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
diff --git a/src/OBJECT/SALOME_GLOwner.cxx b/src/OBJECT/SALOME_GLOwner.cxx
deleted file mode 100644 (file)
index ed88afb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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/
-//
-
-#include <SALOME_GLOwner.h>
-
-SALOME_GLOwner::SALOME_GLOwner( const char* entry )
-: GLViewer_Owner()
-{
-  setEntry( entry );
-}
-
-SALOME_GLOwner::~SALOME_GLOwner()
-{
-}
-
-const char* SALOME_GLOwner::entry() const
-{
-  return myEntry.c_str();
-}
-
-void SALOME_GLOwner::setEntry( const char* entry )
-{
-  myEntry = entry;
-}
diff --git a/src/OBJECT/SALOME_GLOwner.h b/src/OBJECT/SALOME_GLOwner.h
deleted file mode 100644 (file)
index 7709113..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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 SALOME_GLOWNER_H
-#define SALOME_GLOWNER_H
-
-#include <string>
-//#include <GLViewer.h>
-#include <GLViewer_Object.h>
-
-#ifdef WNT
-#define SALOME_OBJECT_EXPORT __declspec (dllexport)
-#else
-#define SALOME_OBJECT_EXPORT
-#endif
-
-class SALOME_OBJECT_EXPORT SALOME_GLOwner : public GLViewer_Owner
-{
-public:
-  SALOME_GLOwner( const char* );
-  ~SALOME_GLOwner();
-
-  const char*       entry() const;
-  void              setEntry( const char* );
-
-private:
-  std::string       myEntry;
-};
-
-#endif
index 7d60d59e672ebec2e6620f4e89df7e6e0deb76a8..53d93c062d7091820c9a5c716c0e1ddce8e18a6f 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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;
index 91d1e5af221cab18ef1213368ddb3b081e55fb91..712d96d3ba6077594cd303445bf78b8a62053d0b 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 39be2411a5181252b88165b40691724521f4def4..ef92c07c6f7d64ee6f7012c02a51ed7d68d9e1aa 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 19aba4c63f1a70e7d656db61adb693079dd2fab7..0c3fc7db5a2790f8be6db7d6a34fad4a8e9e5562 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index e028e243ffa487872790ca787572baa45fcf72d1..7f52828d4f54afc0619e9d36a4a7be26340d1d01 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -55,6 +55,10 @@ class SALOME_ListNodeOfListIO;
 #include <Standard_Macro.hxx>
 #endif
 
+/*!
+  \class SALOME_ListIO
+  List of SALOME interactive objects
+*/
 class SALOME_ListIO  {
 
 public:
index 14be3eee61d206c1cd8ecd9835e88ce6eef401ad..7538c4744edf183c904b5a6ce01d12bef211e89b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index c479e6ca8a660838dca607c959ca96c1ed0eb892..e69f42d5ce6538a62ca843473211119297d29e6a 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index adb55ab723ebc57e6a6354268c48d369bf063d36..6f5fb7f85d523e76e13ac0b4daf88bb42936db66 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 9aed956f8060d55a13ebb5e25225b8419b82e35d..6d288bcab656eff742212d23d9b938e814aed05a 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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:
index 35f04d576adfc8595cebca8f0ccb3a86dcace8d8..63fda117c103c8c7be265ad9181eda61b5bf9457 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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"
index d9f5be3d6cc79037af99c31b393d3d066732f4bc..696f68f5531d9aeb2a07bf3ac0032782c3ad21e3 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 83f1d71ec1a00ff341a886ea5fa14e5efd95fe15..57d6390a2391e5f345e96f2d77ed336a0a50e26f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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 );
index 3e0ea4bce1eb038c26f4b443aa6ed08f39f0f9f5..5a32301fe3dc714a219e4697b076cda4174dc230 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index d9e4152bfdfc21e4b9a4a700e2c00fca2e177b48..13e1a3ec1d3128d06a756d1142606128000bfca7 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 8dcc1216bb5620f3ec25a45b91607c42e8ca98ca..d519586d78b7e85887fe2fab571ea1f49f7a9490 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 6eb3077b85ba3be5b3be4ae2b7d408df0ab9e6ea..842759ae3b65c3968b8149c435d366e9b89c1e9d 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : OCCViewer
index ef0e9171448f203315545ac840508617b7ad0d4d..724486cb9ad7ed3cd31cfb721059e1e1111344b0 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifdef WNT
 #ifdef OCCVIEWER_EXPORTS
index 74cbca1bb82e5b52b234eaf0fcd6e22864840b73..43dca4567fd814d9961b58c85f1383a29e008c37 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OCCViewer_AISSelector.h"
 
index 526ab824adb3d117ff6b653d7abea4fb02330f43..740c8f01322207e21159533d8d1e4eb911e33c70 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined( OCCVIEWER_AISSELECTOR_H )
 #define OCCVIEWER_AISSELECTOR_H
index c17bfd33dd43a61f67e27cddd1266a6b877192d0..177737599be599a52035fe50329c86a248baa25f 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "OCCViewer_ClippingDlg.h"
 
 #include <QtxDblSpinBox.h>
+#include <QtxAction.h>
 
 #include "SUIT_Session.h"
 #include "SUIT_ViewWindow.h"
 #include "OCCViewer_ViewWindow.h"
 #include "OCCViewer_ViewPort3d.h"
 
-//#include "utilities.h"
-
 #include <V3d_View.hxx>
-#include <V3d.hxx>
-#include <V3d_Plane.hxx>
+//#include <V3d.hxx>
 #include <Geom_Plane.hxx>
 #include <Prs3d_Presentation.hxx>
 #include <AIS_ListIteratorOfListOfInteractive.hxx>
 #include <qcombobox.h>
 #include <qcheckbox.h>
 
-//=================================================================================
-// 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();
+    }
+}
index e46903a0595b007fceb8113536cfca9553c210f7..27efa2e9049d31a2449b3fc95b15bed37dcdb043 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef OCCVIEWER_CLIPPINGDLG_H
 #define OCCVIEWER_CLIPPINGDLG_H
 
@@ -6,6 +24,7 @@
 #include <qdialog.h>
 
 #include <AIS_Plane.hxx>
+#include <V3d_Plane.hxx>
 
 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();
index 0f6fb703c9fb7fb0e92827659907b82477f60ce1..e97cde8b9a9bbffcf3e3eb82050dfcf37bbcfab1 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OCCViewer_CreateRestoreViewDlg.h"
 #include "OCCViewer_ViewModel.h"
@@ -25,6 +25,9 @@
 #include <qpainter.h>
 #include <qimage.h>
 
+/*!
+  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();
index dc6dad1f76ec8c2ee649fd7009627d915ee439f9..fc1579ae6de261e538db8b0cea5279b1f12b4241 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_CREATERESTOREVIEWDLG_H
 #define OCCVIEWER_CREATERESTOREVIEWDLG_H
index 662356c708c1e23a86c228b636822aa4a1ed60db..77ef0acede346334acca6a3c7926466e588147bc 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/***********************************************************************
-
-     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 <OpenGl_GraphicDriver.hxx>
 
 #include "OCCViewer_VService.h"
 #include <V3d_Viewer.hxx>
@@ -58,7 +36,7 @@
 #include <Xw_Window.hxx>
 #include <Graphic3d_GraphicDevice.hxx>
 #include <Xw_Driver.hxx>
-#include <Xdps_Driver.hxx>
+//#include <Xdps_Driver.hxx>
 #include <Xw_TypeOfMapping.hxx>
 #endif
 
@@ -280,6 +258,7 @@ Handle(Aspect_WindowDriver) OCCViewer_VService::WindowDriver( const Standard_CSt
     Creates Xdps window driver [ static ]
     On Win32 the same as OCCViewer_VService::WindowDriver()
 */
+/*
 Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CString aDisplay,
                                                       const Standard_Integer ahiwin,
                                                       const Standard_Integer alowin,
@@ -298,7 +277,7 @@ Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CStri
     return new Xdps_Driver( W );
 #endif
 }
-
+*/
 /*!
     Creates Xw window driver [ static ]
     On Win32 the same as OCCViewer_VService::WindowDriver()
index 5de36371d2329dafc7adde7983d2c9680341c878..b15ab5564975e15ce5e4cb02055a1ead81ef1b1d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VSERVICE_H
 #define OCCVIEWER_VSERVICE_H
@@ -115,11 +115,12 @@ public:
                                   const Standard_Integer hiwin,
                                   const Standard_Integer lowin,
                                   const Quantity_NameOfColor color = Quantity_NOC_GRAY69 );
-    static Handle_Aspect_WindowDriver
+    /*static Handle_Aspect_WindowDriver
                     XdpsDriver( const Standard_CString display,
                                 const Standard_Integer hiwin,
                                 const Standard_Integer lowin,
                                 const Quantity_NameOfColor color = Quantity_NOC_GRAY69 );
+    */
     static Handle_Aspect_WindowDriver
                     ImageDriver( const Standard_CString display,
                                  const Standard_Integer hiwin,
index dedfc4a0db6956665e2f178f90eb0d8d34c10bdf..6436c81dec9d7d561aae5c6b5c6f5286983edd35 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OCCViewer_ViewManager.h"
 #include "OCCViewer_ViewWindow.h"
@@ -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 );
index 71e9bf2dbb898bfe7eaf67f856cea7b0a09880c1..352e873c5932cffdd4d6ecdba1135dca419eb1a0 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VIEWMANAGER_H
 #define OCCVIEWER_VIEWMANAGER_H
index 6b74a7fc55f4aff239346946d1dd15fc0df0003d..b3e3a91f20e2e3dacf73df19b898231316d40501 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "OCCViewer_ViewModel.h"
 #include <Prs3d_DatumAspect.hxx>
 #include <Prs3d_LineAspect.hxx>
 
+/*!
+  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();
index 0779d3aefe9d15f8cb3c333275b5095f9e9b3380..ebdc4704901c3c1d583ffc47810e539dd2f9a3d0 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VIEWMODEL_H
 #define OCCVIEWER_VIEWMODEL_H
index 72f2fc5f33042f95321098f076e33c60e0387330..bd5ace4c6c0f175c0c66cba7d6bf2736e61c609f 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/***************************************************************************
-**  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 )
index 5c60ad502c5a9a2e6ccc1a041eb53f4d09e1c9af..357dd8d0c0688274e3423d9f95ef21e20e83b12a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VIEWPORT_H
 #define 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
index badfe3cf301eb5465b96f03651ca25f46231e4e5..50930efbc9e676fd3a775bf42d48e005eff781da 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/***************************************************************************
-**  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.);
 }
 
 /*!
index a16a609a9299648b23922dd1ce999f9fbb32c954..204b8eb995eb6be3cb5d5052ee7f3abcd4a97b6d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VIEWPORT3D_H
 #define OCCVIEWER_VIEWPORT3D_H
index 4900fd9de51ef680d34f8bdfaf908b7383989030..cef3b10d89cd5b8702f4d53b3e7d34c056fcdb5a 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // 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,43 +894,17 @@ void OCCViewer_ViewWindow::onClipping( bool on )
     }
 }
 
-//****************************************************************
+/*!
+  Stores view parameters
+*/
 void OCCViewer_ViewWindow::onMemorizeView()
 {
-  double centerX, centerY, projX, projY, projZ, twist;
-  double atX, atY, atZ, eyeX, eyeY, eyeZ;
-
-  Handle(V3d_View) aView3d = myViewPort->getView();
-
-  aView3d->Center( centerX, centerY );
-  aView3d->Proj( projX, projY, projZ );
-  aView3d->At( atX, atY, atZ );
-  aView3d->Eye( eyeX, eyeY, eyeZ );
-  twist = aView3d->Twist();
-
-  viewAspect params;
-  QString aName = QTime::currentTime().toString() + QString::fromLatin1( " h:m:s" );
-
-  params.scale    = aView3d->Scale();
-  params.centerX  = centerX;
-  params.centerY  = centerY;
-  params.projX    = projX;
-  params.projY    = projY;
-  params.projZ    = projZ;
-  params.twist    = twist;
-  params.atX      = atX;
-  params.atY      = atY;
-  params.atZ      = atZ;
-  params.eyeX     = eyeX;
-  params.eyeY     = eyeY;
-  params.eyeZ     = eyeZ;
-  params.name    = aName;
-
-  myModel->appendViewAspect( params );
-
+  myModel->appendViewAspect( getViewParams() );
 }
 
-//****************************************************************
+/*!
+  Restores view parameters
+*/
 void OCCViewer_ViewWindow::onRestoreView()
 {
        OCCViewer_CreateRestoreViewDlg* aDlg = new OCCViewer_CreateRestoreViewDlg( centralWidget(), myModel );
@@ -895,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();
@@ -904,39 +925,59 @@ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem )
        Standard_Boolean prev = aView3d->SetImmediateUpdate( Standard_False );
        aView3d->SetScale( anItem.scale );
        aView3d->SetCenter( anItem.centerX, anItem.centerY );
-       aView3d->SetProj( anItem.projX, anItem.projY, anItem.projZ );
        aView3d->SetTwist( anItem.twist );
        aView3d->SetAt( anItem.atX, anItem.atY, anItem.atZ );
        aView3d->SetImmediateUpdate( prev );
        aView3d->SetEye( anItem.eyeX, anItem.eyeY, anItem.eyeZ );
+       aView3d->SetProj( anItem.projX, anItem.projY, anItem.projZ );
                
        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;
@@ -952,31 +993,98 @@ 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();
+/*!
+  \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
+*/
+viewAspect OCCViewer_ViewWindow::getViewParams() const
+{
+  double centerX, centerY, projX, projY, projZ, twist;
+  double atX, atY, atZ, eyeX, eyeY, eyeZ;
+
+  Handle(V3d_View) aView3d = myViewPort->getView();
+
+  aView3d->Center( centerX, centerY );
+  aView3d->Proj( projX, projY, projZ );
+  aView3d->At( atX, atY, atZ );
+  aView3d->Eye( eyeX, eyeY, eyeZ );
+  twist = aView3d->Twist();
+
+  QString aName = QTime::currentTime().toString() + QString::fromLatin1( " h:m:s" );
+
+  viewAspect params;
+  params.scale    = aView3d->Scale();
+  params.centerX  = centerX;
+  params.centerY  = centerY;
+  params.projX    = projX;
+  params.projY    = projY;
+  params.projZ    = projZ;
+  params.twist    = twist;
+  params.atX      = atX;
+  params.atY      = atY;
+  params.atZ      = atZ;
+  params.eyeX     = eyeX;
+  params.eyeY     = eyeY;
+  params.eyeZ     = eyeZ;
+  params.name    = aName;
+
+  return params;
+}
+
+
+/*!
+  The method returns the visual parameters of this view as a formated string
+*/
+QString OCCViewer_ViewWindow::getVisualParameters()
+{
+  viewAspect params = getViewParams();
+  QString retStr;
+  retStr.sprintf( "%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e", params.scale,
+                 params.centerX, params.centerY, params.projX, params.projY, params.projZ, params.twist,
+                 params.atX, params.atY, params.atZ, params.eyeX, params.eyeY, params.eyeZ );
+  return retStr;
+}
+
+/*!
+  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 );
+  if ( paramsLst.size() == 13 ) {
+    viewAspect params;
+    params.scale    = paramsLst[0].toDouble();
+    params.centerX  = paramsLst[1].toDouble();
+    params.centerY  = paramsLst[2].toDouble();
+    params.projX    = paramsLst[3].toDouble();
+    params.projY    = paramsLst[4].toDouble();
+    params.projZ    = paramsLst[5].toDouble();
+    params.twist    = paramsLst[6].toDouble();
+    params.atX      = paramsLst[7].toDouble();
+    params.atY      = paramsLst[8].toDouble();
+    params.atZ      = paramsLst[9].toDouble();
+    params.eyeX     = paramsLst[10].toDouble();
+    params.eyeY     = paramsLst[11].toDouble();
+    params.eyeZ     = paramsLst[12].toDouble();
+
+    performRestoring( params );
   }
-  Handle(V3d_View) v = myViewPort->getView();
-  v->Update();
-  v->Redraw();
 }
index b4f2bc8dbee214a351c32a6417925f72edadf392..d9dafcffea161441661e9759660a25026449233e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OCCVIEWER_VIEWWINDOW_H
 #define OCCVIEWER_VIEWWINDOW_H
@@ -62,6 +62,11 @@ 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 );
  
 public slots:
   void onFrontView();
@@ -119,6 +124,8 @@ protected:
  
   virtual OperationType getButtonState(QMouseEvent* theEvent);
 
+  viewAspect getViewParams() const;
+
   OperationType         myOperation;
   OCCViewer_Viewer*     myModel;
   OCCViewer_ViewPort3d* myViewPort;
@@ -146,6 +153,7 @@ protected:
 
 private:
   OCCViewer_ClippingDlg* myClippingDlg;
+  QtxAction* myClippingAction;
   
 };
 
index 432135489484595d7cfb35faa8447f7fef6e5dfd..b75530310a5242b716589ab9944028e797ab6f6a 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index ceab129bf3291d43ea4c22abc9a102d80ec63827..08af365aea75053ec223743ffcacb32ac9d258ac 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -123,7 +123,7 @@ msgid "MNU_DUMP_VIEW"
 msgstr "Dump view"
 
 msgid "DSC_CLIPPING"
-msgstr "Define clipping plane"
+msgstr "Set clipping plane"
 
 msgid "MNU_CLIPPING"
 msgstr "Clipping"
@@ -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..."
 
index cdb715d691a636d562799e0a6b5bb79db41e33bd..71ff8fefdd9de1f9811b4c8e399ef7b164390640 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : ObjectBrowser
index ed251feede684716f694ef4f6840494820ae43e8..8b243affe5f7642e24fb9472552777c062076be2 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OB_H
 #define OB_H
index 5b4bc28e39a036f1e0fcef2e8f4ae4db2c3f3148..c0343a2ca5b7429c64b78a5cb6def3821dfb0215 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OB_Browser.h"
 
@@ -37,8 +37,8 @@
 #include <time.h>
 
 /*!
-    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,24 +167,40 @@ 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 asFirst ) const
+                                   const bool prepend ) const
 {
-  ItemPtr i = myBrowser ? dynamic_cast<ItemPtr>( myBrowser->createItem( src, parent, after, asFirst ) ) : 0;
+  ItemPtr i = myBrowser ? dynamic_cast<ItemPtr>( myBrowser->createItem( src, parent, after, prepend ) ) : 0;
   if( i )
     i->setOpen( src->isOpen() );
   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<ObjPtr>& ch ) const
 {
   DataObjectList l;
@@ -201,9 +255,14 @@ void OB_BrowserSync::children( const ObjPtr& p, QValueList<ObjPtr>& 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<ItemPtr>& 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<ItemPtr>( item );
     if( p )
@@ -211,6 +270,10 @@ void OB_BrowserSync::children( const ItemPtr& p, QValueList<ItemPtr>& ch ) const
   }
 }
 
+/*!
+  \return parent of item
+  \param p - item
+*/
 ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const
 {
   return p ? dynamic_cast<ItemPtr>( 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<int> OB_Browser::columns() const
 {
   QValueList<int> lst;
@@ -632,6 +842,10 @@ QValueList<int> 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,58 +960,32 @@ void OB_Browser::updateView( SUIT_DataObject* startObj )
   if ( !startObj || startObj->root() != getRootObject() )
     return;
 
-  if( startObj==myRoot )
-  {
-    DataObjectList ch;
-    myRoot->children( ch );
+  //qDebug( "updateView:" );
+  //startObj->dump();
 
-    ItemMap exist;
-    QListViewItem* st = lv->firstChild();
-    for( ; st; st =  st->nextSibling() )
-    {
-      OB_ListItem* ob_item = dynamic_cast<OB_ListItem*>( 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<OB_ListItem*>( listViewItem( local_root ) );
-      
-      //      QString srcName = ( local_root && !local_root->name().isNull() ) ? local_root->name() : "";
-      //      QString trgName = ( local_item && !local_item->text(0).isNull() ) ? local_item->text(0) : "";
-      //      printf( "--- OB_Browser::updateView() calls synchronize()_1: src = %s, trg = %s ---\n",  srcName.latin1(), trgName.latin1() );
-
-      synchronize<ObjPtr,ItemPtr,OB_BrowserSync>( 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() )
-      {
-       removeReferences( anIt.data() );
-       OB_ListItem* item = dynamic_cast<OB_ListItem*>( anIt.data() );
-       if( item && myItems.contains( item->dataObject() ) )
-         delete anIt.data();
-      }
+  if ( startObj == myRoot )
+  {
+    OB_BrowserSync sync( this );
+    synchronize<ObjPtr,ItemPtr,OB_BrowserSync>( myRoot, 0, sync );
   }
   else
   {
     OB_BrowserSync sync( this );
     OB_ListItem* startItem = dynamic_cast<OB_ListItem*>( listViewItem( startObj ) );
-
-    //    QString srcName = ( startObj && !startObj->name().isNull() ) ? startObj->name() : "";
-    //    QString trgName = ( startItem && !startItem->text(0).isNull() ) ? startItem->text(0) : "";
-    //    printf( "--- OB_Browser::updateView() calls synchronize()_2: src = %s, trg = %s ---\n",  srcName.latin1(), trgName.latin1() );
-
     synchronize<ObjPtr,ItemPtr,OB_BrowserSync>( startObj, startItem, sync );
   }
 }
 
+/*!
+  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 asFirstChild )
+                                      QListViewItem* after, const bool prepend )
 {
   QListView* lv = listView();
 
@@ -803,34 +1009,57 @@ QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem*
 
   if ( parent )
   {
-    if ( parent->childCount() && !after )
+    if ( after ) 
     {
-      after = parent->firstChild();
-      while ( after->nextSibling() )
-        after = after->nextSibling();
+      if ( type == -1 )
+       item = new OB_ListItem( obj, parent, after );
+      else
+       item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type );
     }
-
-    if ( after && !asFirstChild )
+    else if ( prepend )
     {
       if ( type == -1 )
-        item = new OB_ListItem( obj, parent, after );
+       item = new OB_ListItem( obj, parent );
       else
-        item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type );
+       item = new OB_CheckListItem( obj, parent,  (QCheckListItem::Type)type );
     }
-    else
+    else // append
     {
+      after = parent->firstChild();
+      while ( after && after->nextSibling() )
+       after = after->nextSibling();
       if ( type == -1 )
-        item = new OB_ListItem( obj, parent );
+       item = new OB_ListItem( obj, parent, after );
       else
-        item = new OB_CheckListItem( obj, parent,  (QCheckListItem::Type)type );
+       item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type );
     }
   }
-  else // ROOT item
+  else
   {
-    if ( type == -1 )
-      item = new OB_ListItem( obj, lv );
-    else
-      item = new OB_CheckListItem( obj, lv,  (QCheckListItem::Type)type );
+    if ( after ) 
+    {
+      if ( type == -1 )
+       item = new OB_ListItem( obj, lv, after );
+      else
+       item = new OB_CheckListItem( obj, lv, after, (QCheckListItem::Type)type );
+    }
+    else if ( prepend )
+    {
+      if ( type == -1 )
+       item = new OB_ListItem( obj, lv );
+      else
+       item = new OB_CheckListItem( obj, lv,  (QCheckListItem::Type)type );
+    }
+    else // append
+    {
+      after = lv->firstChild();
+      while ( after && after->nextSibling() )
+       after = after->nextSibling();
+      if ( type == -1 )
+       item = new OB_ListItem( obj, lv, after );
+      else
+       item = new OB_CheckListItem( obj, lv, after, (QCheckListItem::Type)type );
+    }
   }
 
   myItems.insert( obj, item );
@@ -840,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() )
@@ -850,6 +1082,10 @@ void OB_Browser::adjustWidth()
     adjustWidth( listView()->firstChild() );
 }
 
+/*!
+  Adjusts width by item
+  \param item
+*/
 void OB_Browser::adjustWidth( QListViewItem* item )
 {
   while ( item )
@@ -861,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;
@@ -873,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;
@@ -883,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 )
@@ -905,6 +1155,9 @@ void OB_Browser::removeReferences( QListViewItem* item )
   }
 }
 
+/*!
+  Connects all children to SLOT onDestroyed
+*/
 void OB_Browser::createConnections( SUIT_DataObject* obj )
 {
   if ( !obj )
@@ -919,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 )
@@ -933,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
@@ -962,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 )
@@ -1021,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 )
@@ -1034,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 )
@@ -1042,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;
@@ -1050,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<QListViewItem> items, QListViewItem* item, int action )
 {
   SUIT_DataObject* obj = dataObject( item );
@@ -1078,6 +1371,9 @@ void OB_Browser::onDropped( QPtrList<QListViewItem> items, QListViewItem* item,
     emit dropped( lst, obj, action );
 }
 
+/*!
+  Updates texts of items
+*/
 void OB_Browser::updateText()
 {
   if ( myColumnIds.isEmpty() )
@@ -1098,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<int, int>::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 );
@@ -1108,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 )
@@ -1131,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<int> cols;
@@ -1169,6 +1492,9 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu )
   }
 }
 
+/*!
+  Expands item with all it's children
+*/
 void OB_Browser::expand( QListViewItem* item )
 {
   if ( !item )
@@ -1179,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 )
@@ -1194,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 )
@@ -1234,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();
@@ -1249,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 )
@@ -1262,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();
index a6e3cd42113231860df4d79739858decf157a98c..6299afd2d87a23b0ff7ee687726c61b2b33a7fa8 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OB_BROWSER_H
 #define 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;
index 1a9fda941b59c677359d4c4f0315ddd6d883c935..99b0e3049bf098afde58fc07149836f70f2ea80e 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OB_Filter.h"
 
+/*!
+  Default constructor
+*/
 OB_Filter::OB_Filter()
 {
 }
 
+/*!
+  Destructor
+*/
 OB_Filter::~OB_Filter()
 {
 }
index 3570eb06dc9bc360fe290f137428f27bd07db01b..a75698d9669e77ff11eeb0b6590ee9ad5a6b2bbb 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OB_FILTER_H
 #define OB_FILTER_H
 
 class SUIT_DataObject;
 
+/*!
+  \class OB_Filter
+  Base class for ObjectBrowser filter.
+  Filters selected objects by some condition.
+*/
 class OB_EXPORT OB_Filter
 {
 public:
index 49ad75741da39d1611b64a3f09737cc5a0b8f47a..b91b92e2d769647837d49dcf35fdfb2e3ac0bbce 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OB_ListItem.h"
 
 using namespace std;
 
 /*!
-    Class: ListItem
-    Descr: base template class
+  Constructor
 */
-
 template<class T>
 ListItemF<T>::ListItemF( T* theT, SUIT_DataObject* obj ) :
 myT( theT ),
@@ -40,6 +38,9 @@ myObject( obj )
 {
 }
 
+/*!
+  Paints item
+*/
 template<class T>
 void ListItemF<T>::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align )
 { 
@@ -67,6 +68,9 @@ void ListItemF<T>::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align
   //myT.paintCell( p, colorGrp, c, itemW,  align );
 }
 
+/*!
+  Paints focused item
+*/
 template<class T>
 void ListItemF<T>::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r )
 {
@@ -75,6 +79,10 @@ void ListItemF<T>::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r )
   //myT.paintFocus( p, cg, rect );
 }
 
+/*!
+  Set selection of item
+  \param s - selected state
+*/
 template<class T>
 void ListItemF<T>::setSel( bool s )
 {
@@ -88,6 +96,9 @@ void ListItemF<T>::setSel( bool s )
   //myT.setSelected( s );
 }
 
+/*!
+  Updates name and pixmap of item
+*/
 template<class T>
 void ListItemF<T>::update()
 {
@@ -119,10 +130,8 @@ void ListItemF<T>::update()
 }
 
 /*!
-    Class: OB_ListItem
-    Descr: List view item for OB_Browser.
+  Constructor
 */
-
 OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent )
 : ListItemF<QListViewItem>( 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<QListViewItem>( 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<QListViewItem>( 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<QListViewItem>( 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<QCheckListItem>( 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<QCheckListItem>( 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<QCheckListItem>( 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<QCheckListItem>( 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 );
index 112c3c8c9ac0783b2abd5b73018ce4ef97591546..40f7259e412c66dbbf0009d164411eeae9aa6da9 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef OB_LISTITEM_H
 
 class SUIT_DataObject;
 
-/* 
-  base template class for ListViewItems and CheckListItems
+/*!
+  \class ListItemF
+  Base template class for ListViewItems and CheckListItems
 */
-
 template<class T> 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<QListViewItem>, 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<QCheckListItem>, public QCheckListItem
 {
 public:
index 53d62602f15de6c4a942c31afe9fb39d5af1672c..ebcd5c87947e1f78c986700583fcccadeac4b9cc 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "OB_ListView.h"
 
 
 #include <qdragobject.h>
 
+/*!
+  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 );
index 03a394c213bd1c23a2e7a986ed4f39942f86744c..7a591e5a23f94a652b54a0ebb6aeb6a4159abef9 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef OB_LISTVIEW_H
 #define 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
index b570f058e21602c970289a61d2d71ac45b32704d..4b18212e97b2d274395c82592971121805a62bcd 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index ef3d4742b7fccebeeba867254c2b087b746a80fc..647c1b84d7995841d2f642050f9c77684547da2d 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : Plot2d
index 5d1ffa369a03722f8c20a7692f64d634467ac070..20deb6ec1fdfcc7cd3502058afd17b59207dc65c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifdef WNT
 #ifdef PLOT2D_EXPORTS
index c0a9abbb6f2a1694e188bf2898b8c613bfd5de57..c86db8f328424aec8cee87bcd7a4b04c63cfbb92 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "Plot2d_Curve.h"
 #include <qcolor.h>
@@ -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();
index b17f7c327364b8ae26296d4c1f53b09199bfc78e..1fa244aa4eeafabdfcd90334a29bdd3872e8f273 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_CURVE_H
 #define PLOT2D_CURVE_H
index 1b9256c272905b2a9f575f242d56c6ddae94d5bb..9ff544a07de019c164ab9fb35f6d10cc9f4b1fee 100755 (executable)
@@ -1,6 +1,20 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : Plot2d_FitDataDlg.cxx
 //  Author : Vadim SANDLER
index 2b4e501e8c8ed69f23d1323c9b9adf893b1a0cb5..ccecaaa32013f8287c8a2255be8f51d7fb845daf 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_FITDATADLG_H
 #define PLOT2D_FITDATADLG_H
index 6f708f6101bd942eb20fed335256c11a18c42d13..7c3bd03720cf5f7a52d9a473bb6566b8deca97ad 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include <qwt_plot.h>
 #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);
index 78f6a1951a1514db05f0ac55c79b9e029c9ac1e0..2f98aadeba0422734a4604e33a7c554cf920481e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_PRS_H
 #define PLOT2D_PRS_H
index 4f73cff03990d86dcb6ac8e14009ca8f36ca8004..4873db496141dbb5e72af896972f77a0a29f4ea3 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME Plot2d : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME Plot2d : implementation of desktop and GUI kernel
 //
 //  File   : Plot2d_SetupCurveDlg.cxx
 //  Author : Vadim SANDLER
index 100438a0e2feb2e84e29fbd0c5cb24f5c92d2632..84d530aa6b07a3061b862e502adbcad2b3322e58 100644 (file)
@@ -1,13 +1,26 @@
-//  SALOME Plot2d : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME Plot2d : implementation of desktop and GUI kernel
 //
 //  File   : Plot2d_SetupCurveDlg.h
 //  Author : Vadim SANDLER
 //  Module : SALOME
-//  $Header$
 
 #ifndef Plot2d_SetupCurveDlg_H
 #define Plot2d_SetupCurveDlg_H
 
 #include <qdialog.h>
 
-//=================================================================================
-// class    : Plot2d_SetupCurveDlg
-// purpose  : Dialog box for setup Plot2d curve
-//=================================================================================
+/*!
+  \class Plot2d_SetupCurveDlg
+  Dialog box for setup Plot2d curve
+*/
 
 class QPushButton;
 class QComboBox;
index 0969b6b44d5b299a2722e6812ea5285c0ee927dc..9f1b2f03a869b2af60eb1b160d9dffb3bcff329d 100755 (executable)
@@ -1,6 +1,20 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : Plot2d_SetupViewDlg.cxx
 //  Author : Vadim SANDLER
index 383f97d40f1d00835ab8d6f9412dee86a660fb3f..37db3d6414cd8c4588a3c336ef269ccee098565e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_SETUPVIEWDLG_H
 #define PLOT2D_SETUPVIEWDLG_H
index 30a25e808f68853833e321690b2a62d4fcd12739..f7b862f7b80fc7c6ff120dc4c7b31c7f4f43b0ec 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "Plot2d_ViewFrame.h"
 
@@ -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
@@ -1918,3 +1934,49 @@ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const
   return res;
 #endif
 }
+
+/*!
+  \return string with all visual parameters
+*/
+QString Plot2d_ViewFrame::getVisualParameters()
+{
+  double xmin, xmax, ymin, ymax, y2min, y2max;
+  getFitRanges( xmin, xmax, ymin, ymax, y2min, y2max );
+  QString retStr;
+  retStr.sprintf( "%d*%d*%d*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e", myXMode,
+                 myYMode, mySecondY, xmin, xmax, ymin, ymax, y2min, y2max );
+  return retStr; 
+}
+
+/*!
+  Restores all visual parameters from string
+*/
+void Plot2d_ViewFrame::setVisualParameters( const QString& parameters )
+{
+  QStringList paramsLst = QStringList::split( '*', parameters, true );
+  if ( paramsLst.size() == 9 ) {
+    double xmin, xmax, ymin, ymax, y2min, y2max;
+    myXMode = paramsLst[0].toInt();
+    myYMode = paramsLst[1].toInt();
+    mySecondY = (bool)paramsLst[2].toInt();
+    xmin =  paramsLst[3].toDouble();
+    xmax =  paramsLst[4].toDouble();
+    ymin =  paramsLst[5].toDouble();
+    ymax =  paramsLst[6].toDouble();
+    y2min = paramsLst[7].toDouble();
+    y2max = paramsLst[8].toDouble();
+
+    if (mySecondY)
+      setTitle( myY2TitleEnabled, myY2Title, Y2Title, false );
+    setHorScaleMode( myXMode, /*update=*/false );
+    setVerScaleMode( myYMode, /*update=*/false );
+    
+    if (mySecondY) {
+      QwtDiMap yMap2 = myPlot->canvasMap( QwtPlot::yRight );
+      myYDistance2 = yMap2.d2() - yMap2.d1();
+    }
+
+    fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max );
+    fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max );
+  }  
+}
index 51faa089840b9f1244884e880a5cda584c5980f7..2c38caf1d76d83e772714ee1ae5027c9d9c4cfc4 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_VIEWFRAME_H
 #define PLOT2D_VIEWFRAME_H
@@ -118,6 +118,9 @@ public:
 
   virtual bool print( const QString& file, const QString& format ) const;
 
+  QString getVisualParameters();
+  void    setVisualParameters( const QString& parameters );
+
 protected:
   int     testOperation( const QMouseEvent& );
   void    readPreferences();
index 704e33095f2acdae5223e3fe275fec72d2c55acc..405e90243b97dc2a9d4dac1a654657804154a787 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "Plot2d_ViewManager.h"
 #include "Plot2d_ViewModel.h"
@@ -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();
index f8b841b41ccce5a78f50cbdfad8f7199b425daf5..051b26f193116c80090bf1cc815a87bde9a54b83 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_VIEWMANAGER_H
 #define PLOT2D_VIEWMANAGER_H
index 637351c9119d566fa550f6f70aac6f79a5f8d38b..3d268e1c4303912f0bdd1f1ec097304fa26ddff2 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // Plot2d_ViewModel.cxx: implementation of the Plot2d_ViewModel class.
-//
-//////////////////////////////////////////////////////////////////////
 
 #include "Plot2d_ViewModel.h"
 #include "Plot2d_ViewWindow.h"
@@ -28,6 +26,9 @@
 
 #include <qpopupmenu.h>
 
+/*!
+  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 );
index 4ba4fd2b6883ca37ddd6a05b33ca69cbe78aa1be..75445ff9bc14a28f2e693be77c8e7290fb6d7225 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined(_PLOT2D_VIEWMODEL_H)
 #define _PLOT2D_VIEWMODEL_H
index 5c558ea0fb21e689596ce80f454a791bc2dec426..e562e30dc182786ffe2b86232434dfd965a91515 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // Plot2d_ViewWindow.cxx: implementation of the Plot2d_ViewWindow class.
-//
-//////////////////////////////////////////////////////////////////////
+
 #include "Plot2d_ViewWindow.h"
 #include "Plot2d_ViewFrame.h"
 
 #include <qpopupmenu.h>
 #include <qimage.h>
 
-//////////////////////////////////////////////////////////////////////
-// 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,30 +477,58 @@ 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();
 }
 
-bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format )
+/*!
+  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 QImage& img, const QString& fileName, const QString& format )
 {
   bool res = myViewFrame ? myViewFrame->print( fileName, format ) : false;
   if( !res )
-    res = SUIT_ViewWindow::dumpViewToFormat( fileName, format );
+    res = SUIT_ViewWindow::dumpViewToFormat( img, fileName, format );
 
   return res;
 }
 
+/*!
+  \return filter of image files
+*/
 QString Plot2d_ViewWindow::filter() const
 {
   return SUIT_ViewWindow::filter() + ";;" + tr( "POSTSCRIPT_FILES" );
 }
+
+/*!
+  \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
+*/
+void Plot2d_ViewWindow::setVisualParameters( const QString& parameters )
+{
+  myViewFrame->setVisualParameters( parameters );
+}
index 571d692bf599445df6813cd2ad43dbfbef7be8a3..b8c3718d3d37ac8ad82b47a1d01cca4d080a7aaf 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PLOT2D_VIEWWINDOW_H
 #define PLOT2D_VIEWWINDOW_H
@@ -46,10 +46,13 @@ public:
   QToolBar*         getToolBar() { return myToolBar; };
   void              contextMenuPopup( QPopupMenu* thePopup );
 
+  virtual QString   getVisualParameters();
+  virtual void      setVisualParameters( const QString& parameters );
+
 protected:
   virtual QImage    dumpView();
   virtual QString   filter() const;
-  virtual bool      dumpViewToFormat( const QString& fileName, const QString& format );
+  virtual bool      dumpViewToFormat( const QImage&, const QString& fileName, const QString& format );
 
 private:
   bool eventFilter(QObject* watched, QEvent* e);
index 9c7bfacdc1114bc1dc340b8987aa02da1911be0e..59c1090330f6e09f414b676c23a146b0ced12b75 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index aeb44afb715eead87b16761f03471c590953edd3..0e7aa10ab33884aac78081a26ca4b0e2b87f7061 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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
 # ------------------------------------
index 73133a3e61d6122bc7ed1238d9c27851b5ca0c80..56c07d0b90f1f743302c704c0d04b7b5e02d6f8e 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # source path
 top_srcdir=@top_srcdir@
 top_builddir=../..
index cb35bb80bbe2a4307a1169beec61b6878bcc5cf2..b022d25730f11350229caf0345dc9d4f1b57674a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:       SALOME_Prs.cxx
 // Created:    Wed Apr 28 15:03:43 2004
 
 //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." );
index eec2a605581471df4da4292741f1bce65c8a731a..fa7c62369e0d351ff598980a01573ebbda1abd20 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOME_PRS_H
 #define 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:
index 1672f5ada526414ae46fc9ef525d9857aaef5074..d9af0dc9c1efb334068bb58652c3820453151ff0 100755 (executable)
@@ -16,7 +16,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index 06a4cb6e5e3bd60bebab0bdd3d794cf97f80c898..af9536fd88e7e9c2caafeca55e30800b27b9dfdb 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined ( _PYINTERP_H )
 #define _PYINTERP_H
index 3d5067dba7ee01a31cd1993b4d10715c9a4317d0..dd029a25bd64a04e6086e128134b982267c980a6 100755 (executable)
@@ -1,8 +1,22 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : PyInterp_Dispatcher.cxx
 //  Author : Sergey ANIKIN, OCC
@@ -22,10 +36,6 @@ using namespace std;
 
 PyInterp_Dispatcher* PyInterp_Dispatcher::myInstance = 0;
 
-//////////////////////////////////////////////////////////
-// class : PyInterp_Request
-//////////////////////////////////////////////////////////
-
 void PyInterp_Request::process()
 {
   safeExecute();
@@ -89,20 +99,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 )
index a7a4ae72f1d05ed65657f461a83cde6f4d391e3c..311c9e66f70499cd95bdfecd73662c27e92f5e32 100755 (executable)
@@ -1,13 +1,26 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : PyInterp_Dispatcher.h
 //  Author : Sergey Anikin, OCC
 //  Module : SALOME
-//  $Header$
 
 #ifndef _PYINTERP_DISPATCHER_H_
 #define _PYINTERP_DISPATCHER_H_
@@ -25,9 +38,6 @@ class PyInterp_base;
 class PyInterp_Watcher;
 class PyInterp_Dispatcher;
 
-//////////////////////////////////////////////////////////
-// class : PyInterp_Request
-//////////////////////////////////////////////////////////
 class PYINTERP_EXPORT PyInterp_Request
 {
   friend class PyInterp_Dispatcher;
@@ -88,9 +98,6 @@ private:
   PyInterp_base*  myInterp;
 };
 
-//////////////////////////////////////////////////////////
-// class : PyInterp_Event
-//////////////////////////////////////////////////////////
 class PYINTERP_EXPORT PyInterp_Event : public QCustomEvent
 {
   PyInterp_Event();
@@ -111,9 +118,6 @@ private:
   PyInterp_Request* myRequest;
 };
 
-//////////////////////////////////////////////////////////
-// class : PyInterp_Dispatcher
-//////////////////////////////////////////////////////////
 class PYINTERP_EXPORT PyInterp_Dispatcher : protected QThread
 {
   PyInterp_Dispatcher(); // private constructor
index e908777432996860dc511c61eaa6ceb1613550fe..551eca7d023738a7086cc7b9761ecd4f959f2bb5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef _PYINTERP_WATCHER_H_
 #define _PYINTERP_WATCHER_H_
index 69ccefc9d671a8cc6f36f3a2fdf7281157810acc..7225855fe7172ec0946ef4ca317731543ae3f3f0 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : PyInterp_base.cxx
 //  Author : Christian CAREMOLI, Paul RASCLE, EDF
@@ -112,8 +126,10 @@ void PyInterp_base::initialize()
 
   // Create cStringIO to capture stdout and stderr
   PycString_IMPORT;
-  _vout = PycStringIO->NewOutput(128);
-  _verr = PycStringIO->NewOutput(128);
+  if (PycStringIO) { // CTH11627 : additional check
+    _vout = PycStringIO->NewOutput(128);
+    _verr = PycStringIO->NewOutput(128);
+  }
 
   // All the initRun outputs are redirected to the standard output (console)
   initRun();
@@ -222,7 +238,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;
index 66847770d1eb66234747a29bb542c5d34aa15ab3..71931655cd30ae6db5061993290e8717ac047784 100644 (file)
@@ -1,13 +1,26 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : PyInterp_base.h
 //  Author : Christian CAREMOLI, Paul RASCLE, EDF
 //  Module : SALOME
-//  $Header$
 
 #ifndef _PYINTERP_BASE_H_
 #define _PYINTERP_BASE_H_
index b1b1713ea202343a58a436724dbd8f237cd0a7f6..692b54b3be789815ddcc99a1490f37767c1fd94f 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : PythonConsole
index 3680d4c21ffee66f47df2e7e6adaa62afc66d98e..8b30b261a88349c8ac605c519a9f6cc0e0257d8e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined ( _PYTHONCONSOLE_H )
 #define _PYTHONCONSOLE_H
index c7f8f1c7c6bbb00477fea5c938678e3960b14e93..9eecd0f158223ef79724136f9194e4cae8a1053d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "PythonConsole_PyConsole.h"
 #include "PythonConsole_PyEditor.h"
@@ -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;
index 264e4ae0f3682c83029d830643f1bf631bfdb0db..4978214fbf356c9351d6a95328fa6a27055c5761 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef PythonConsole_PyConsole_H
 #define PythonConsole_PyConsole_H
index 76c77478d493a182559dc5cbec29dcc036ac3e0a..3bf622e59e5635f6fd6e499216415811e04306ac 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -174,7 +174,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 )
@@ -198,7 +198,7 @@ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event )
   }
 }
 
-/*
+/*!
    Processes middle button release event - paste clipboard's contents
 */
 void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event )
@@ -704,6 +704,9 @@ void PythonConsole_PyEditor::onPyInterpChanged( PyInterp_base* interp )
   }
 }
 
+/*!
+  Creates popup menu
+*/
 QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos )
 {
   QPopupMenu* popup = QTextEdit::createPopupMenu( pos );
index b5d303a60e41545e2c5768801c3de6f489028495..004b40021a5e7874b92cd8d0f15eb1bc9764296a 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 22a84bfc4c348ded9642b92bfc265949d6eca0df..168f1268f36d95affafd2c061375f00fccd7e81f 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -48,6 +48,9 @@ PythonConsole_PyInterp::PythonConsole_PyInterp(): PyInterp_base()
 {
 }
 
+/*!
+  Destructor
+*/
 PythonConsole_PyInterp::~PythonConsole_PyInterp()
 {
 }
@@ -103,14 +106,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...");
index 304756e1b61549c191faea8934c042de91d29d60..fce05636fa81a06c876c2e17d596d394dd9afca2 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 97b4ae3f7d5ec1e0d596f73719855b7682cec59c..290054d45b00f04e10d5c25e939d2be1c1a2fc6c 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Alexander SOLOVYOV (OCN)
 #  Module : QDS
index ec925779e831895bc4c2a3a310503509bf79d062..d91c2196d100644e9ce0a8514cfbb431049f50c1 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS.h"
 
 #include "QDS_Datum.h"
index 3b20b2378069355f22ff83adf44db093c2811459..8afd71ab29865f25fefb3d37c72b358776d3f4b1 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_H
 #define QDS_H
 
index ded537716607d10732aa166dbad42ff169a0dac0..dc73cda956d5c8e542b4b86c3da3850de4862c9c 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_CheckBox.h"
 
 #include <qcheckbox.h>
index 8b1344b930ddd8c553bcc6696d8a0ec830cf5244..9be0dde19f4d7ef7a38fe6da34509df46836efd3 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_CHECKBOX_H
 #define QDS_CHECKBOX_H
 
index fac69b6b408ca9a8a7614a75bd81a23289c6001f..ab97bade64aca29b6b5b57b5905bca6f50d55b91 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_ComboBox.h"
 
 #include <DDS_Dictionary.h>
index 9650f4c5819ac131003a74a0fc445fe7466339dd..2a8791702fac0c0a6fb95e4a528e988ba2a36917 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_COMBOBOX_H
 #define QDS_COMBOBOX_H
 
index 70f3169c83cf0bf13fd33e474be34a2f62581933..7b93dfe6a8c188ab95d5a3830a4a663a2cc20706 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_Datum.h"
 
 #include "QDS_Validator.h"
index cafd764378e0ffaa2fb75daf64bf14be268007b1..4fe64feec499b15f25dd674c204ca0c8a1b1c0bc 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_DATUM_H
 #define QDS_DATUM_H
 
index 15cc3f0570e5aa74494c18a4373e670bc53f03a2..a4b879cd36a8141f9194dcdb89d078cb0675ba5a 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_LineEdit.h"
 
 #include <qlineedit.h>
index ec9ad48a2bb1831e8f107a4b08561984dcecba4c..3362e74378885c4ce20ec028faa2b5034e5fd684 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_LINEEDIT_H
 #define QDS_LINEEDIT_H
 
index 1b3350fb3df482a1536540742e31dd827a710c25..f07b190bdb35894ca2c7c6eba7dbdbf29629ce8d 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_RadioBox.h"
 
 #include <DDS_Dictionary.h>
index 769a537ed4bd69ec4d7e8edf3eb86540803c2c3c..e7cf86618ae9cd29552228682c66935150ec083f 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_RADIOBOX_H
 #define QDS_RADIOBOX_H
 
index b77aa8ba0759b8f0e85ad3dcd1d622b05a782ae8..430d7fd5ad6c394d8e11bd13bf9adec8aa25b810 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_SpinBox.h"
 
 #include <QtxIntSpinBox.h>
index f018ddfb80ae797a416123681e3e0e6d68a11482..f0456900e860cab9e7d73d1db16a886cece2a94a 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_SPINBOX_H
 #define QDS_SPINBOX_H
 
index 8a4160e70108a7fd0192315498af426f2556fd8f..ac99303e87717f739082610f699213b5459116ca 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_SpinBoxDbl.h"
 
 #include <DDS_Dictionary.h>
index a0c5e30969e6fae0ad7fabc2774608a283964a01..362f75c7c6d070be6391dc6ed074fc0f6427781d 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_PINBOXDBL_H
 #define QDS_PINBOXDBL_H
 
index 65fbcb28ec926a0a7a56303c3c717913bcee9819..17de76418528cd4bf3cc45a42292a6453eb156c0 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_TextEdit.h"
 
 #include <qtextedit.h>
index 917ff13e49f5586921f711fe65598ba9af95605a..469fbaa36e233b85ac57ecb3c847fe05ac31083f 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_TEXTEEDIT_H
 #define QDS_TEXTEEDIT_H
 
index d83463eae32d22f51ad2b28965348dbeed9dd2da..02916c0cb090e027c536a04aad14c70156098743 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #include "QDS_Validator.h"
 
 /*!
index bc966c03ca7050c51499244e1a3fb030f29e99d1..537d511a27945a30706ce07cf6ece694d33ad7dc 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef QDS_VALIDATOR_H
 #define QDS_VALIDATOR_H
 
index e42b0191ba9862e19168bbf51e265e308adbcefc..4fab946b88d88e790bb3ec6e890d9757d212af1f 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index aa682b59d199c117ebd7c93802e53e5219770b62..ea5bccbc6bfd7676d0b4c353206a04834c5b86ab 100755 (executable)
@@ -1,4 +1,23 @@
-#  File   : Makefile.in\r#  Author : Vladimir Klyachin (OCN)
+#  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/ or email : webmaster.salome@opencascade.com
+#
+#  File   : Makefile.in
+#  Author : Vladimir Klyachin (OCN)
 #  Module : suit
 #  $Header$
 
@@ -49,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
 
@@ -97,7 +117,8 @@ LIB_SRC= \
        QtxWorkstack.cxx \
        QtxListView.cxx \
        QtxDirListEditor.cxx \
-       QtxDblValidator.cxx
+       QtxDblValidator.cxx \
+       QtxSplash.cxx
 
 LIB_MOC = \
        QtxAction.h \
@@ -130,7 +151,8 @@ LIB_MOC = \
        QtxListView.h \
        QtxListResourceEdit.h \
        QtxDirListEditor.h \
-       QtxDblValidator.h
+       QtxDblValidator.h \
+       QtxSplash.h
 
 RESOURCES_FILES = \
 
index 41231fbe8523068566d8681ba00906ef0a1cc8cc..14704e5502097eb77e05c30fb77e831c9f1ee608 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      Qtx.cxx
 // Author:    Sergey TELKOV
index c16bd7b231b907cf30755369a484099ed4a906bc..1fef63f044153889677bc3124dc895f466728600 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      Qtx.h
 // Author:    Sergey TELKOV
@@ -87,6 +87,10 @@ typedef QValueList<int>    QIntList;
 typedef QValueList<short>  QShortList;
 typedef QValueList<double> QDoubleList;
 
+/*!
+  \class Qtx
+  \brief Set of auxiliary static methods
+*/
 class QTX_EXPORT Qtx : public Qt
 {
 public:
index 88116c5851e6c41716ef914e6a31c7a01140ebeb..06f87329c393d305e8a6c0a47a5e01f225989cea 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxAction.cxx
 // Author:    Sergey TELKOV
@@ -22,6 +22,7 @@
 #include "QtxAction.h"
 
 #include <qpopupmenu.h>
+#include <qmenubar.h>
 
 /*!
        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, const 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<QMenuData*>( 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;
 }
+
index e6d3901066a100b3271fb3a20f08584fc4fba7e5..c7b6b7192c2af3ba2d0e1610d76408f7496aa903 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxAction.hxx
 // Author:    Sergey TELKOV
@@ -25,6 +25,7 @@
 #include "Qtx.h"
 
 #include <qaction.h>
+#include <qmap.h>
 
 class QTX_EXPORT QtxAction : public QAction
 {
@@ -38,9 +39,13 @@ public:
 
     virtual bool addTo( QWidget* );
     virtual bool addTo( QWidget*, const int );
+    virtual bool removeFrom( QWidget* );
 
 protected:
-    void         setPopup( QPopupMenu*, const int, QPopupMenu* ) const;
+    void         setPopup( QWidget*, const int, QPopupMenu* ) const;
+
+private:
+    QMap<QWidget*,int> myMenuIds;
 };
 
 #endif
index 7782a7b57ccb9c64074a8e2df405c0ddf163afe7..b87289a33300a8e75e9846ca95171b30555d4990 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionMenuMgr.cxx
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
 #include <qmainwindow.h>
 #include <qfile.h>
 #include <qdom.h>
+#include <qvaluelist.h>
+
+// 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<int> prepareIds( const QWidget* w )
+  {
+    QValueList<int> l;
+    const QMenuData* md = 0;
+    if ( w->inherits( "QMenuBar" ) )
+      md = dynamic_cast<const QMenuData*>( w );
+    else if ( w->inherits( "QPopupMenu" ) )
+      md = dynamic_cast<const QMenuData*>( 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<int>& l, bool retId = true )
+  {
+    const QMenuData* md = 0;
+    if ( w->inherits( "QMenuBar" ) )
+      md = dynamic_cast<const QMenuData*>( w );
+    else if ( w->inherits( "QPopupMenu" ) )
+      md = dynamic_cast<const QMenuData*>( 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<QMenuData*>( 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* );
+  MenuAction( const QString&, const QString&, QObject*, const int = -1, const bool = false );
   virtual ~MenuAction();
 
   virtual bool addTo( QWidget* );
@@ -50,43 +102,84 @@ public:
   QPopupMenu*  popup() const;
 
 private:
-  int          myId;
-  QPopupMenu*  myPopup;
+  int                myId;
+  QPopupMenu*        myPopup;
+  bool               myEmptyEnabled;
+  QMap<QWidget*,int> myIds;
 };
 
-QtxActionMenuMgr::MenuAction::MenuAction( const QString& text, const QString& menuText, QObject* parent )
+
+/*!
+  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 ),
-myPopup( 0 )
+  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;
-
-  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 widget type
+
+  if ( myIds.find( w ) != myIds.end() )
+    return false;  // already added
+
+  if ( !myPopup )
+    return false;  // bad own popup menu
+
+  if ( !myEmptyEnabled && !myPopup->count() )
+    return false;  // not allowed empty menu
+
+  if ( w->inherits( "QPopupMenu" )  ) {
+    QValueList<int> 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<int> 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;
@@ -94,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;
@@ -117,22 +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 )
+  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;
@@ -141,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 )
@@ -157,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 );
@@ -170,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 );
@@ -189,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 );
@@ -198,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 )
@@ -209,106 +386,202 @@ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, cons
 
   MenuNode* node = new MenuNode( pNode );
   node->id = id;
+  node->idx = idx;
   node->group = group;
 
-  if ( idx < 0 || idx >= (int)pNode->children.count() )
-    pNode->children.append( node );
-  else
-    pNode->children.insert( idx, node );
+  pNode->children.append( node );
 
   updateMenu( pNode, false );
 
   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 );
 }
 
-int QtxActionMenuMgr::insert( const QString& title, const int pId, const int group, const int 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 );
   if ( !pNode )
     return -1;
 
-  int id = -1;
-  for ( NodeListIterator it( pNode->children ); it.current() && id == -1; ++it )
+  MenuNode* eNode = id == -1 ? 0 : find( id );
+
+  int fid = -1;
+  for ( NodeListIterator it( pNode->children ); it.current() && fid == -1; ++it )
   {
     if ( myMenus.contains( it.current()->id ) &&
          clearTitle( myMenus[it.current()->id]->menuText() ) == clearTitle( title ) )
-      id = it.current()->id;
+      fid = it.current()->id;
   }
 
-  if ( id != -1 )
-    return id;
+  if ( fid != -1 )
+    return fid;
+
+  int gid = (id == -1 || eNode ) ? generateId() : id;
 
-  MenuAction* ma = new MenuAction( clearTitle( title ), title, this );
+  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->id = myMenus.insert( generateId(), ma ).key();
+  node->idx = idx;
+  node->id = myMenus.insert( gid, ma ).key();
 
-  if ( idx < 0 || idx >= (int)pNode->children.count() )
-    pNode->children.append( node );
-  else
-    pNode->children.insert( idx, node );
+  pNode->children.append( node );
 
   updateMenu( pNode, false );
 
   return node->id;
 }
 
-int QtxActionMenuMgr::insert( const QString& title, const QString& menus, const int group, const int idx )
+/*!
+  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, idx );
+  return insert( title, QStringList::split( "|", menus ), group, id, idx, allowEmpty );
 }
 
-int QtxActionMenuMgr::insert( const QString& title, const QStringList& menus, const int group, const int idx )
+/*!
+  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, idx );
+  return insert( title, pId, group, id, idx, allowEmpty );
 }
 
-int QtxActionMenuMgr::append( const QString& title, const int pId, const int group )
+/*!
+  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 );
+  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 );
 }
 
-int QtxActionMenuMgr::prepend( const QString& title, const int pId, const int 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, 0 );
+  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 = find( pId );
+  MenuNode* pNode = pId == -1 ? &myRoot : find( pId );
   if ( !pNode )
     return;
 
@@ -325,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;
@@ -344,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;
@@ -363,12 +653,46 @@ 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();
+  int pid = 0, realId;
+  if ( myMenu && snd == myMenu )
+    pid = -1;
+  else {
+    for ( MenuMap::Iterator itr = myMenus.begin(); itr != myMenus.end(); ++itr ) {
+      if ( itr.data()->popup() && itr.data()->popup() == snd )
+       pid = itr.key();
+    }
+  }
+  if ( pid ) {
+    realId = findId( id, pid );
+    if ( realId != -1 ) {
+      bool updatesEnabled = isUpdatesEnabled();
+      setUpdatesEnabled( false );
+      emit menuHighlighted( pid, realId );
+      setUpdatesEnabled( updatesEnabled );
+      updateMenu( find( realId ) );
+    }
+  }
+}
+
+/*!
+  Assignes new menu with manager
+  \param mw - new menu
+*/
 void QtxActionMenuMgr::setWidget( QWidget* mw )
 {
   if ( myMenu == mw )
@@ -383,12 +707,24 @@ void QtxActionMenuMgr::setWidget( QWidget* mw )
     connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId ) const
+/*!
+  \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 ) );
+  return find( actId, find( pId ), rec );
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode ) const
+/*!
+  \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;
   MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
@@ -396,12 +732,19 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* star
   {
     if ( it.current()->id == id )
       node = it.current();
-    else
-      node = find( id, it.current() );
+    else if ( rec )
+      node = find( id, it.current(), rec );
   }
   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;
@@ -415,6 +758,87 @@ 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;
+  for ( NodeListIterator it( start->children ); it.current(); ++it )
+  {
+    QAction* a = itemAction( it.current()->id );
+    if ( !a )
+      a = menuAction( it.current()->id );
+    if ( a && clearTitle( a->menuText() ) == clearTitle( title ) )
+      lst.prepend( it.current() );
+
+    find( title, lst, it.current() );
+  }
+  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;
+  MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
+  for ( NodeListIterator it( start->children ); it.current() && !node; ++it )
+  {
+    QAction* a = itemAction( it.current()->id );
+    if ( !a )
+      a = menuAction( it.current()->id );
+    if ( a && clearTitle( a->menuText() ) == clearTitle( title ) )
+      node = it.current();
+    if ( !node && rec )
+      node = find( title, it.current(), rec );
+  }
+  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;
+  if ( start ) {
+    for ( NodeListIterator it( start->children ); it.current(); ++it ) {
+      if ( it.current()->id == id ) return id;
+    }
+  }
+  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;
@@ -427,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;
@@ -442,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() )
@@ -464,24 +903,21 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo
     if ( a )
       a->removeFrom( mw );
   }
-
-  if ( node != &myRoot )
-  {
-    if ( mw->inherits( "QMenuBar" ) )
-      ((QMenuBar*)mw)->clear();
-    else if ( mw->inherits( "QPopupMenu" ) )
-      ((QPopupMenu*)mw)->clear();
-  }
-
+  /* 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<int, NodeList> idMap;
   for ( NodeListIterator it2( node->children ); it2.current(); ++it2 )
   {
-    MenuNode* par = it2.current()->parent;
-    if ( isVisible( it2.current()->id, par ? par->id : -1 ) )
-    {
-      NodeList& lst = idMap[it2.current()->group];
+    NodeList& lst = idMap[it2.current()->group];
+    int idx = it2.current()->idx;
+    if ( idx < 0 || idx >= lst.count() )
       lst.append( it2.current() );
-    }
+    else
+      lst.insert( idx, it2.current() );
   }
 
   QIntList groups = idMap.keys();
@@ -498,18 +934,18 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo
     const NodeList& lst = idMap[*gIt];
     for ( NodeListIterator iter( lst ); iter.current(); ++iter )
     {
+      MenuNode* par = iter.current()->parent;
+      if ( !isVisible( iter.current()->id, par ? par->id : -1 ) )
+       continue;
+
       if ( rec )
         updateMenu( iter.current(), rec, false );
 
       QAction* a = itemAction( iter.current()->id );
+      if ( !a )
+        a = menuAction( iter.current()->id );
       if ( a )
-        a->addTo( mw );
-      else
-      {
-        MenuAction* ma = menuAction( iter.current()->id );
-        if ( ma && ma->popup() && ma->popup()->count() )
-          ma->addTo( mw );
-      }
+       a->addTo( mw );
     }
   }
 
@@ -519,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 )
@@ -536,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 )
@@ -550,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;
@@ -569,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() )
@@ -584,18 +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 );
+}
 
 /*!
-       Class: QtxActionMenuMgr::MenuCreator
-       Level: Public
+  \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 );
+}
+
 
+/*!
+  Constructor
+  \param r - menu reader
+  \param mgr - menu manager
+*/
 QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r,
                                             QtxActionMenuMgr* mgr )
 : QtxActionMgr::Creator( r ),
@@ -603,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 )
 {
index 89b81aa89a8b770a44973cfe756e902656a0d99d..bdbe139a4b646414f5eef6e0f457b4697a46be29 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionMenuMgr.h
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
@@ -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<MenuNode>         NodeList;
   typedef QPtrListIterator<MenuNode> NodeListIterator;
 
+  /*!
+    \class MenuNode
+    Represents a menu item inside main menu structure.
+    For internal purposes only
+  */
   class MenuNode
   {
   public:
@@ -51,6 +68,7 @@ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr
     MenuNode( MenuNode* p ) : parent( p ), visible( true ) { children.setAutoDelete( true ); };
 
     int       id;
+    int       idx;
     int       group;
     MenuNode* parent;
     bool      visible;
@@ -79,17 +97,17 @@ public:
   virtual int  insert( const int, const int, const int, const int = -1 );
   int          insert( QAction*, const int, const int, const int = -1 );
 
-  int          insert( const QString&, const QString&, const int, const int = -1 );
-  int          insert( const QString&, const QStringList&, const int, const int = -1 );
-  virtual int  insert( const QString&, const int, const int, const int = -1 );
+  int          insert( const QString&, const QString&, const int, const int = -1, const int = -1, const bool = false );
+  int          insert( const QString&, const QStringList&, const int, const int = -1, const int = -1, const bool = false );
+  virtual int  insert( const QString&, const int, const int, const int = -1, const int = -1, const bool = false );
 
   int          append( const int, const int, const int );
   int          append( QAction*, const int, const int );
-  int          append( const QString&, const int, const int );
+  int          append( const QString&, const int, const int, const int = -1, const bool = false );
 
   int          prepend( const int, const int, const int );
   int          prepend( QAction*, const int, const int );
-  int          prepend( const QString&, const int, const int );
+  int          prepend( const QString&, const int, const int, const int = -1, const bool = false );
 
   void         remove( const int );
   void         remove( const int, const int, const int = -1 );
@@ -102,14 +120,26 @@ public:
 
   virtual bool load( const QString&, QtxActionMgr::Reader& );
 
+  bool         containsMenu( const QString&, const int ) const;
+  bool         containsMenu( const int, const int ) const;
+
+
 private slots:
   void         onDestroyed( QObject* );
+  void         onHighlighted( int );
+
+signals:
+  void         menuHighlighted( int, int );
 
 protected:
   void         setWidget( QWidget* );
-  MenuNode*    find( const int, const int ) const;
-  MenuNode*    find( const int, MenuNode* = 0 ) const;
+  MenuNode*    find( const int, const int, const bool = true ) const;
+  MenuNode*    find( const int, MenuNode* = 0, const bool = true ) const;
   bool         find( const int, NodeList&, MenuNode* = 0 ) const;
+  MenuNode*    find( const QString&, const int, const bool = true ) const;
+  MenuNode*    find( const QString&, MenuNode* = 0, const bool = true ) const;
+  bool         find( const QString&, NodeList&, MenuNode* = 0 ) const;
+  int          findId( const int, const int = -1 ) const;
 
   void         removeMenu( const int, MenuNode* );
 
@@ -135,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:
index 16ec7b5b1916cb71863ab55c566e8f6d38bcd35c..b157b835e7e76030a5a91d37e05d7852837fa248 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionMgr.cxx
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
@@ -58,15 +58,25 @@ private:
   QMap<QToolBar*, QWidgetList> 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() )
index 60fc342c04f3828b4bab0ab2d5715c31fe21e78e..e0ba1d0e68dfa19c283879570709cc8f645770a2 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionMgr.h
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
@@ -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<QString, QString> 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:
index f797306f0506c96c5afd1079214e53cc3d70d192..9ce5696135d7063fb694cfaf8654d8f8386e178e 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionToolMgr.cxx
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
 #include <qmainwindow.h>
 #include <qobjectlist.h>
 
+/*!
+  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,26 +321,64 @@ 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 )
+  {
+    if ( tid == -1 || it.key() == tid ) {
+      const NodeList& list = it.data().nodes;
+      for ( NodeList::const_iterator nit = list.begin(); nit != list.end(); ++nit )
+       if ( (*nit).id == id )
+         return true;
+    }
+  }
+  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;
@@ -243,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;
@@ -254,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() )
@@ -287,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<ToolNode> nodes;
@@ -339,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 ) )
@@ -355,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 ) )
@@ -376,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 );
@@ -384,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 )
@@ -394,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 )
 {  
index 31c02209d0d2d8fb28fdb500a65c6bea3a788caf..9300ec22af8be289b12e3e8ebabc8a7b8848609c 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxActionToolMgr.h
 // Author:    Alexander SOLOVYEV, Sergey TELKOV
@@ -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:
@@ -95,6 +107,8 @@ public:
   bool            hasToolBar( const int ) const;
   bool            hasToolBar( const QString& ) const;
 
+  bool            containsAction( const int, const int = -1 ) const;
+
   virtual bool    load( const QString&, QtxActionMgr::Reader& );
 
 protected slots:
@@ -120,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:
index 7be7ba48d1931e6acb7d4ae81cbb32e1502aa380..30c9193612be1b8c396866cdfaa75337f82a5f0a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxColorScale.cxx
 // Author:    Sergey TELKOV
 
 #include <math.h>
 
-/*********************************************************************
-**  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<QColor>& 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<QColor>& list )
 {
        if ( list.isEmpty() )
@@ -431,11 +386,9 @@ void QtxColorScale::setColors( const QValueList<QColor>& 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;
index 1037fd621a0d2db5b27a255e0446661a4c47120f..bae5e9d63cce27d8bbbcac65cc7e05627ed33642 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxColorScale.h
 // Author:    Sergey TELKOV
@@ -38,6 +38,10 @@ class QSimpleRichText;
 #pragma warning( disable:4251 )
 #endif
 
+/*!
+  \class QtxColorScale
+  Color Scale widget.
+*/
 class QTX_EXPORT QtxColorScale : public QFrame
 {
          Q_OBJECT
@@ -152,7 +156,9 @@ private:
          QSize                 calculateSize( const bool, const int,
                                                                                                     const bool, const bool, const bool ) const;
 
-         friend class Dock;
+#if QT_VER == 3
+         friend class QtxColorScale::Dock;
+#endif
 
 private:
          double                myMin;
index 4e7c3b5cb9f17e48266cb8f37399fd6681990ebd..a2c95f2512d0ed643d17d17505bb9663330470ca 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxComboBox.cxx
 // Author:    Sergey TELKOV
@@ -25,6 +25,9 @@
 #include <qlineedit.h>
 #include <qvaluelist.h>
 
+/*!
+  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;
index 9315c674eb35b872dc79595bb1c6bf7bf6f78b46..82c8989e0a48a89990bb28b9aafa008f19b03b16 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxComboBox.h
 // Author:    Sergey TELKOV
index b10c28bd60a50f80c43cf296da104ecf37aac0e4..59f9f61923fa83c384104993c22b697c0c292577 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDblSpinBox.cxx
 // Author:    Sergey TELKOV
 
 #include <float.h>
 
-/*
-       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( "." );
index e59fe4f3d2863021cce4016e8c611465eb6c3fae..b715fb3a247de3698d810c41350762e862b2b666 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDblSpinBox.h
 // Author:    Sergey TELKOV
 
 #include <qspinbox.h>
 
+/*!
+  \class  QtxDblSpinBox
+  Spin box for real numbers.
+*/
 class QTX_EXPORT QtxDblSpinBox : public QSpinBox
 {
   Q_OBJECT
index 2769fd4060bd6f46b765f62c022d4da74d7c8b0d..b7dd3e9d056de21c71d25f40fb07fb031dfe9f0f 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDblValidator.cxx
 // Author:    Alexandre SOLOVYOV
 
 #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;
index 0990a290c3e08095111403e0c3a50a378e75556b..a5b389fd1e2bb156ceae1405587d7aefeda792a0 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDblValidator.h
 // Author:    Alexandre SOLOVYOV
index 347479e55e750abf86f45059958bee56275ad4c3..2554511a4675b36b29e336fbaf9da052f0fcf5fc 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDialog.cxx
 // Author:    Sergey TELKOV
@@ -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<QButton>& 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,
index 321bc3e9b11a0a7a7b385c2e21f0858677af0997..dbf4fbd9d8ae143e45abeaff15e1df13d5eea831 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDialog.hxx
 // Author:    Sergey TELKOV
index 0532cd77fcea0a98e4246faeaf154aff5dfa43ad..cd4bb9fcfe2e469b9193dda76181c606e53de7ac 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "QtxDirListEditor.h"
 
@@ -206,6 +206,18 @@ QtxDirListEditor::~QtxDirListEditor()
 */
 void QtxDirListEditor::getPathList(QStringList& list)
 {
+  // Finish the path editing
+  if (myEdit) {
+    validate(true);
+    
+    myEdit->deleteLater();
+    myBtn->deleteLater();
+    myEdit = 0;
+    myBtn  = 0;
+    myEdited = false;
+    myDirList->setFocus();
+  }
+
   list.clear();
   for (unsigned i = 0; i < myDirList->count()-1; i++)
     list.append(myDirList->text(i));
@@ -224,11 +236,11 @@ void QtxDirListEditor::setPathList(const QStringList& list) {
 /*!
   Validates entered path, returns true if OK
 */
-bool QtxDirListEditor::validate()
+bool QtxDirListEditor::validate( const bool quietMode )
 {
   if ( myEdited )
   {
-    QString dirPath = QFileInfo( myEdit->text().stripWhiteSpace() ).absFilePath();
+    QString dirPath = QFileInfo( myEdit->text().stripWhiteSpace() ).filePath();
 /*
 #ifndef WNT
     if ( dirPath.startsWith( "~") ) {
@@ -285,20 +297,21 @@ bool QtxDirListEditor::validate()
       if (found) {
         if (found != myLastSelected) {
           // it is forbidden to add directory more then once
-         QMessageBox::critical(this, 
-                               tr("Error"),
-                               tr("Directory already specified."), 
-                               tr("Ok"));
+         if ( !quietMode )
+           QMessageBox::critical(this, 
+                                 tr("Error"),
+                                 tr("Directory already specified."), 
+                                 tr("Ok"));
          myEdit->setFocus();
           return false;
         }
       }
       else {
         if (!dir.exists()) {
-         if ( QMessageBox::information(this, 
-                                       tr("Warning"),
-                                       tr("%1\n\nThe directory doesn't exist.\nAdd directory anyway?").arg(dir.absPath()),
-                                       tr("Yes"), tr("No"), QString::null, 1, 1) == 1) {
+         if ( !quietMode && QMessageBox::information(this, 
+                                                     tr("Warning"),
+                                                     tr("%1\n\nThe directory doesn't exist.\nAdd directory anyway?").arg(dir.absPath()),
+                                                     tr("Yes"), tr("No"), QString::null, 1, 1) == 1) {
            myEdit->setFocus();
             return false;
          }
index 95e84228ec8c4e8dbf2a342a005be7774c6d4c5f..38d62deaddce8530a244869742f0f9ff9a880ec6 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef QTX_DIRLISTEDITOR_H
 #define QTX_DIRLISTEDITOR_H
@@ -74,7 +74,7 @@ protected:
    * \brief Validates entered path
    * \retval bool - returns status (true if OK)
    */
-  bool          validate();
+  bool          validate( const bool quietMode = false );
 
   /*!
    * \brief Appends/changes path
index 89e72344ced54c067277082d5528365045bc9b97..1b25e280a0a5253a15d1e56445fd8e982611f58c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDockAction.cxx
 // Author:    Sergey TELKOV
@@ -28,6 +28,7 @@
 #include <qdockarea.h>
 #include <qdockwindow.h>
 #include <qmainwindow.h>
+#include <qobjectlist.h>
 #include <qapplication.h>
 
 /*!
@@ -254,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 )
@@ -707,7 +712,41 @@ void QtxDockAction::dockWindows( QPtrList<QDockWindow>& lst, QMainWindow* main )
   if ( !mw )
     return;
 
-  lst = mw->dockWindows();
+  QObjectList* objs = mw->queryList( "QDockWindow" );
+  if ( objs )
+  {
+    for ( QObjectListIt it( *objs ); it.current(); ++it )
+    {
+      QDockWindow* dockWin = ::qt_cast<QDockWindow*>( it.current() );
+      if ( dockWin && dockMainWindow( mw, dockWin ) )
+        lst.append( dockWin );
+    }
+  }
+  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 )
+    return false;
+
+  while ( win )
+  {
+    if ( win->parent() && win->parent() == mw )
+      return true;
+
+    if ( ::qt_cast<QMainWindow*>( win->parent() ) )
+      return false;
+
+    win = win->parent();
+  }
+
+  return false;
 }
 
 /*!
@@ -772,6 +811,14 @@ void QtxDockAction::loadPlaceInfo( QDockWindow* dw ) const
   if ( !myInfo.contains( dw ) )
     return;
 
+  QMainWindow* mw = mainWindow();
+  if ( !mw )
+    return;
+
+  QObject* p = dw->parent();
+  if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) )
+    return;
+
   QString winName = myInfo[dw].name;
   if ( winName.isEmpty() || !myGeom.contains( winName ) )
     return;
@@ -807,6 +854,10 @@ void QtxDockAction::loadPlaceInfo() const
   QMap<QString, QDockWindow*> nameMap;
   for ( QPtrListIterator<QDockWindow> itr( lst ); itr.current(); ++itr )
   {
+    QObject* p = itr.current()->parent();
+    if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) )
+      continue;
+
     QString name;
     if ( myInfo.contains( itr.current() ) )
       name = myInfo[itr.current()].name;
@@ -1209,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 )
index 4583bebda674394272a27413623e8e8138448b65..a18d102fba0dd02dea073d71eab0283c7061378a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDockAction.h
 // Author:    Sergey TELKOV
@@ -121,6 +121,8 @@ private:
 
   void         updateMenus();
 
+  bool         dockMainWindow( QMainWindow*, QObject* ) const;
+
 private:
   enum { AutoAdd = QEvent::User, LoadArea };
 
index 9872d850582570bdc35511f2b5f71899678f32ca..1a9f5d07dd84e3fd540ae15cc860f9617a13bf6c 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDockWindow.cxx
 // Author:    Sergey TELKOV
 #include <qapplication.h>
 
 /*!
-    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 )
index ec9e881883d9fffa2c46376bfc6f87b45b6647e3..6aa0190e327e4247050cd8be96f36d6c3395bcd3 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxDockWindow.h
 // Author:    Sergey TELKOV
index 51732dc7509de50b70bb58161ff593c477041538..6975f779e27cced40777c9a06d6e11572fc6341b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxGroupBox.cxx
 // Author:    Sergey TELKOV
 #include <qapplication.h>
 #include <qobjectlist.h>
 
+/*!
+  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 )
index 99404c6cb235171b16577a344f8161ed273937a7..04f9bb2e6c4f7c90189ded53b954dc8e94c3398f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxGroupBox.h
 // Author:    Sergey TELKOV
index 35672e5ee330cec7365b1ef38b5d841358b77e46..e002377e6cb0130f3019302be3d6ba502e31e555 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxIntSpinBox.cxx
 // Author:    Sergey TELKOV
@@ -24,6 +24,9 @@
 #include <qlineedit.h>
 #include <qapplication.h>
 
+/*!
+  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 )
index 5dffbe4ecdf98750740d9252c6050da1fa58c7cf..7f083d519401674522fa9e14b4a8c5012adce995 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxIntSpinBox.h
 // Author:    Sergey TELKOV
index 725120238d8f119a630181bcd22efff402d7ffdf..e3c4a848445a370fa73ffc9d8f22d3035a6d1b5a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListAction.cxx
 // Author:    Sergey TELKOV (Based on code by Eugene AKSENOV)
@@ -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;
index 30c85acc0ef144c5424efffed146a4ed58f9bcf4..8ad60be5bb1e9b0764f7c8f9b69df617c7859a03 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListAction.hxx
 // Author:    Sergey TELKOV (Based on code by Eugene AKSENOV)
@@ -118,11 +118,9 @@ private:
     friend class QtxListFrame;
 };
 
-/*************************************
-**  Class: QtxListFrame
-**  Level: Internal
-*************************************/
-
+/*!
+  \class QtxListFrame
+*/
 class QtxListFrame : public QFrame
 {
     Q_OBJECT
index 6d2ce0cd97e05ceeca0c76bfd5e12c505da2ea19..b4bdef35f33a4c2abad44c4198c00f895630ae95 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListBox.cxx
 // Author:    Sergey TELKOV
@@ -24,6 +24,9 @@
 #include <qpixmap.h>
 #include <qlineedit.h>
 
+/*!
+  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() )
index 166831734748f95e8a8311bc4618b579b7c8c178..180d2cafb02981e7e417ebd291b41fce146b01c7 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListBox.h
 // Author:    Sergey TELKOV
index 1be04a75df1be348387ea71b83992aa6bc196990..a6c2e68108b84c20153425737a5023f54b703034 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "QtxListOfOperations.h"
 #include <stdarg.h>
 
-//================================================================
-// 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(),
index 3e1a711f14aa91bce2fc95f4a2c6293c299cf300..def9dd8c41969c4b12affa197bd5716d7ba31578 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListOfOperations.h
 // Author:    Alexander SOLOVYOV
 #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:
index 60a5fbe4cf8c672c2fa0fd4078489572660d7f61..3b93b846f9f13eb2ce12467b65254cc9fbae2777 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListResourceEdit.cxx
 // Author:    Sergey TELKOV
 #include <qfontdatabase.h>
 #include <qfileinfo.h>
 #include <qfiledialog.h>
+#include <qapplication.h>
 
 #include "QtxIntSpinBox.h"
 #include "QtxDblSpinBox.h"
 #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 )
@@ -75,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 );
@@ -95,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() ) );
@@ -114,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 )
@@ -126,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 );
@@ -145,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<Item*, QString>& map )
 {
   QMap<int, QString> idMap;
@@ -162,6 +185,9 @@ void QtxListResourceEdit::changedResources( const QMap<Item*, QString>& map )
   emit resourcesChanged( idMap );
 }
 
+/*!
+  Updates widgets with accordance with main list selection
+*/
 void QtxListResourceEdit::updateState()
 {
   if ( myList->selectedItem() &&  myStack->visibleWidget() )
@@ -172,6 +198,9 @@ void QtxListResourceEdit::updateState()
   myList->setShown( myList->count() > 1 );
 }
 
+/*!
+  Updates visibility state
+*/
 void QtxListResourceEdit::updateVisible()
 {
   QPtrList<Item> items;
@@ -200,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 )
@@ -225,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;
@@ -255,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;
@@ -267,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() );
@@ -281,6 +336,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString&
   return tab;
 }
 
+/*!
+  Updates category
+*/
 void QtxListResourceEdit::Category::updateState()
 {
   if ( myTabs->count() )
@@ -294,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 )
@@ -311,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();
@@ -335,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() );
@@ -346,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" );
@@ -372,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;
@@ -412,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;
@@ -434,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;
@@ -490,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 ),
@@ -503,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 )
@@ -554,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();
@@ -565,6 +690,9 @@ void QtxListResourceEdit::SelectItem::store()
     setInteger( myIndex[idx] );
 }
 
+/*!
+  Retrieve value to resource manager
+*/
 void QtxListResourceEdit::SelectItem::retrieve()
 {
   int id = getInteger( -1 );
@@ -579,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;
@@ -599,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" ) )
@@ -607,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 )
@@ -615,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 )
@@ -630,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<int>& lst )
 {
   myIndex.clear();
@@ -645,11 +798,9 @@ void QtxListResourceEdit::SelectItem::setIndexes( const QValueList<int>& 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 )
@@ -658,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 )
@@ -686,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 )
 {
@@ -714,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 )
 {
@@ -741,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;
@@ -773,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;
@@ -791,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 )
@@ -806,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 )
@@ -834,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;
@@ -868,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;
@@ -888,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:
@@ -930,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 )
@@ -973,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() );
@@ -988,6 +1217,9 @@ void QtxListResourceEdit::FontItem::store()
   Item::setFont( f );
 }
 
+/*!
+  Retrieve value to resource manager
+*/
 void QtxListResourceEdit::FontItem::retrieve()
 {
   QFont f = getFont();
@@ -996,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" )
@@ -1065,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" )
@@ -1116,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;
@@ -1130,6 +1375,9 @@ void QtxListResourceEdit::FontItem::setFamily( const QString& f )
     if( deffam.canCast( QVariant::String ) )
       curtext = deffam.toString();
   }
+  
+  if ( curtext.isEmpty() )
+    curtext = (QApplication::font()).family();
 
   int idx = -1;
   for ( int i = 0; i < (int)myFamilies->count() && idx < 0; i++ )
@@ -1144,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;
@@ -1167,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();
@@ -1175,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;
@@ -1207,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();
@@ -1214,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;
@@ -1224,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() ) );
@@ -1244,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() );
@@ -1266,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 )
@@ -1278,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;
@@ -1289,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()));
@@ -1296,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 )
@@ -1317,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" )
@@ -1347,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" )
@@ -1371,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 )
@@ -1389,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;
@@ -1399,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 ) )
@@ -1406,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 ) )
index 19713ca08f66bad43047e78ca4f28dfd9bc25930..fc538004aa9d0eb22264f725c13c68694e8fac37 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxListResourceEdit.h
 // Author:    Sergey TELKOV
@@ -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<int, int>   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:
index e0ccd4991ece5202a081f67f5519c6d14981771e..92af7e34cefdc451cdcb0d9ee86205462aaa0e01 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "QtxListView.h"
@@ -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 && ind<header()->count() )
@@ -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 )
index bf38736c7dc03bd0203b5dba449d0b1ed7955f8b..76aa63a05e6fb227a3385d1dd21f5f6c352f9b52 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef QTXLISTVIEW_H
index 68811c5f3ec727cdcb7de047a9cdd6bf68207341..2103eccaee0ee8cfa89b250d82408903615b3bb2 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "QtxLogoMgr.h"
 
@@ -27,6 +27,9 @@
 #include <qmenubar.h>
 #include <qapplication.h>
 
+/*!
+  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;
index 6eee42847552325ccd456c246d8dceb894ff69fc..7e0615c825911a776a795aa764674be433716a9b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef QTX_LOGOMGR_H
 #define QTX_LOGOMGR_H
index ee7c4f3ac43c9e5485a89e4707e9e6f076c61751..eea0be25ab086d3893a5f042cc841abeae07aafc 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMRUAction.cxx
 // Author:    Sergey TELKOV
index debd6bdfb490676c24a5ddb84343b83b5b511b3c..6325860f8144ef362ceccd57b1597efb9db6a54b 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMRUAction.h
 // Author:    Sergey TELKOV
index b8968ef8c025d5d2c3f1cd8c1493f475b0c24936..99f602bbb69824ff562c477f359ea94152ec29b7 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMainWindow.cxx
 // Author:    Sergey TELKOV
@@ -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<QString, int> 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<QString, int> winPosMap;
index c2aa1bdb7fc9ab6455148c9e50e7bc73b5cd429f..ee779aefd3b33820888a34322013bec3c335645b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMainWindow.h
 // Author:    Sergey TELKOV
index 88bfc1061fdcf23d63ab4523fed8bfb533c649a9..dc8abdde71500ceb1da4c35b1b7080a9af625fa8 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMenuButton.cxx
 // Author:    Sergey TELKOV
@@ -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 );
index 62effa2da117c024ddbce6d04ab57e26c2ac746b..b0f6741960ccfc7408175bca0e30036b8b03cc9a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxMenuButton.h
 // Author:    Sergey TELKOV
index 0034d41e4c602e4937aff4c1c4f54856b454b412..ccf1500070404bf56889d14e303607200e296925 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #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;
index 9dae0b3362136bf1e8ce432acb6cc0628d461459..642a3bf3149cb9c8474fdbe414fd385a2013669d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxOperations.h
 // Author:    Alexander SOLOVYOV
 #include "Qtx.h"
 #include "QtxParser.h"
 
-//================================================================
-// Class    : 
-// Purpose  : 
-//================================================================
 class QTX_EXPORT QtxOperations
 {
 public:
index 105ddb7a508dfc8729c3862d572a401574e37e59..b4b32bb29ef11c497a9ece91215578e00f725d40 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #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(),
index 737fc96ceb401cabec0381e3d28a59fad8244cfd..0a0b05a16ab5a1f4c1963a8aaa91cb9294ec5a3d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxParser.h
 // Author:    Alexander SOLOVYOV
 
 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:
index 55df5d7812f3961b874d5561840046533599d773..fd098e7ef2abfc36f5c418d950e87647569eb91d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxPathDialog.cxx
 // Author:    Sergey TELKOV
@@ -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;
index 9bd743862fe7755fb674372b792e8f0aad600308..a4db3a7fd65a3d001dee7ac39f6dd2cb7c5deb39 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxPathDialog.h
 // Author:    Sergey TELKOV
index 5da53d034f352bb953d196f81ccf114012de1329..8a1a4e458cac3983fe0c621126f64261a04c54e5 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "QtxPopupMenu.h"
 
@@ -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 )
index 4774ef0625c1e86886975e08023157c018588bfd..01dd27041d63efff9d197afd0fe065cbac38ce99 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef QTXPOPUPMENU_H
 #define QTXPOPUPMENU_H
index f01716c165350c93755c30802de8718e746d4f84..5f0df3de8722740d81f1a42c6d16b30e64c9daea 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "QtxPopupMgr.h"
 #include <qpopupmenu.h>
 #include <qdatetime.h>
 
-//================================================================
-// 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 ("$<name>")
+*/
 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 t1<t2;
 }
 
-//================================================================
-// Function : 
-// Purpose  : 
-//================================================================
+/*!
+  \return true if rule of action is satisfied on current selection
+  \param act - action
+  \param visibility - what rule is checked: for visibility(true) or for toggle(false)
+*/
 bool QtxPopupMgr::isSatisfied( QAction* act, bool visibility ) const
 {
   QString menu = act->menuText();
@@ -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;
index a75a7dcedba63de4751788afd1357481b0533305..7bc260b3b6c09e2ec79a7131edd1ea27d02619cb 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __QTX_POPUP_MGR_HEADER__
 
 class QtxListOfOperations;
 
-//================================================================
-// Class    : 
-// Purpose  : 
-//================================================================
 class QTX_EXPORT QtxPopupMgr : public QtxActionMenuMgr
 {
     Q_OBJECT
index e499236ff9fa1af7dc748fc0aca2c358ea1e1ee0..e96a57e04a6a31eec8330a7499eea4155d6901e7 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxResourceEdit.cxx
 // Author:    Sergey TELKOV
 
 #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<Item*, QString> 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<Item*, QString> 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<Item>& lst ) const
 {
   lst.clear();
@@ -211,6 +284,10 @@ void QtxResourceEdit::childItems( QPtrList<Item>& 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<int, QString>& map ) const
 {
   QString sect, name;
@@ -222,6 +299,10 @@ void QtxResourceEdit::resourceValues( QMap<int, QString>& map ) const
   }
 }
 
+/*!
+  \return all resources values from widgets
+  \param map - map to be filled by resources values
+*/
 void QtxResourceEdit::resourceValues( QMap<Item*, QString>& map ) const
 {
   QString sect, name;
@@ -233,6 +314,10 @@ void QtxResourceEdit::resourceValues( QMap<Item*, QString>& map ) const
   }
 }
 
+/*!
+  Sets to widgets all resources values from map
+  \param map - map with resources values
+*/
 void QtxResourceEdit::setResourceValues( QMap<int, QString>& map ) const
 {
   for ( QMap<int, QString>::ConstIterator it = map.begin(); it != map.end(); ++it )
@@ -243,13 +328,23 @@ void QtxResourceEdit::setResourceValues( QMap<int, QString>& map ) const
   }
 }
 
+/*!
+  Sets to widgets all resources values from map
+  \param map - map with resources values
+*/
 void QtxResourceEdit::setResourceValues( QMap<Item*, QString>& map ) const
 {
   for ( QMap<Item*, QString>::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<int, QString>& map1, const QMap<int, QString>& map2,
                                        QMap<int, QString>& resMap, const bool fromFirst ) const
 {
@@ -264,6 +359,13 @@ void QtxResourceEdit::differentValues( const QMap<int, QString>& 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<Item*, QString>& map1, const QMap<Item*, QString>& map2,
                                        QMap<Item*, QString>& resMap, const bool fromFirst ) const
 {
@@ -278,23 +380,31 @@ void QtxResourceEdit::differentValues( const QMap<Item*, QString>& map1, const Q
   }
 }
 
+/*!
+  Makes some activity on resource changing (called from store() method)
+  \sa store()
+*/
 void QtxResourceEdit::changedResources( const QMap<Item*, QString>& )
 {
 }
 
+/*!
+  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<Item>& 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;
index 7c55abc7bb43898df9c15c7289b4ec53e5b16bab..fc816fe3b7b7e587e7aa3dd9263b1f2cf228d7b0 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxResourceEdit.h
 // Author:    Sergey TELKOV
@@ -35,6 +35,10 @@ class QtxResourceMgr;
 #include <qvariant.h>
 #include <qfont.h>
 
+/*!
+  \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
index d5376b7e067c2a1d173452961afcbaaa33e9d2b0..f53df0c5583e49edd01a0ce3e5f238b82da4892b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "QtxResourceMgr.h"
 
@@ -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<QString, Section>& );
 };
 
+/*!
+  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<QString, Section>& secMap )
 {
   QFile file( fname );
@@ -346,6 +462,11 @@ bool QtxResourceMgr::IniFormat::load( const QString& fname, QMap<QString, Sectio
   return res;
 }
 
+/*!
+  Saves map of sections to resource ini-file
+  \param fname - name of resource file
+  \param secMap - map of sections
+*/
 bool QtxResourceMgr::IniFormat::save( const QString& fname, const QMap<QString, Section>& 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<QString, Section>& secMap )
 {
   bool res = false;
@@ -408,7 +540,10 @@ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap<QString, Sectio
 
   QFile file( fname );
   if ( !file.open( IO_ReadOnly ) )
+  {
+    qDebug( "File cannot be opened" );
     return false;
+  }
 
   QDomDocument doc;
 
@@ -416,11 +551,17 @@ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap<QString, Sectio
   file.close();
 
   if ( !res )
+  {
+    qDebug( "File is empty" );
     return false;
+  }
 
   QDomElement root = doc.documentElement();
   if ( root.isNull() || root.tagName() != docTag() )
+  {
+    qDebug( "Invalid root" );
     return false;
+  }
 
   QDomNode sectNode = root.firstChild();
   while ( res && !sectNode.isNull() )
@@ -448,28 +589,49 @@ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap<QString, Sectio
               secMap[section].insert( paramName, paramValue );
             }
             else
+           {
+             qDebug( "Invalid parameter element" );
               res = false;
+           }
           }
          else
+         {
            res = paramNode.isComment();
+           if( !res )
+             qDebug( "Node isn't element nor comment" );
+         }
 
           paramNode = paramNode.nextSibling();
         }
       }
       else
+      {
+       qDebug( "Invalid section" );
         res = false;
+      }
     }
     else
+    {
       res = sectNode.isComment(); // if it's a comment -- let it be, pass it..
+      if( !res )
+       qDebug( "Node isn't element nor comment" );
+    }
 
     sectNode = sectNode.nextSibling();
   }
 
 #endif
 
+  if( res )
+    qDebug( QString( "File '%1' is loaded successfully" ).arg( fname ) );
   return res;
 }
 
+/*!
+  Saves map of sections to resource xml-file
+  \param fname - name of resource file
+  \param secMap - map of sections
+*/
 bool QtxResourceMgr::XmlFormat::save( const QString& fname, const QMap<QString, Section>& secMap )
 {
   bool res = false;
@@ -507,6 +669,9 @@ bool QtxResourceMgr::XmlFormat::save( const QString& fname, const QMap<QString,
   return res;
 }
 
+/*!
+  \return XML tag of document
+*/
 QString QtxResourceMgr::XmlFormat::docTag() const
 {
   QString tag = option( "doc_tag" );
@@ -515,6 +680,9 @@ QString QtxResourceMgr::XmlFormat::docTag() const
   return tag;
 }
 
+/*!
+  \return XML tag of section
+*/
 QString QtxResourceMgr::XmlFormat::sectionTag() const
 {
   QString tag = option( "section_tag" );
@@ -523,6 +691,9 @@ QString QtxResourceMgr::XmlFormat::sectionTag() const
   return tag;
 }
 
+/*!
+  \return XML tag of parameter
+*/
 QString QtxResourceMgr::XmlFormat::parameterTag() const
 {
   QString tag = option( "parameter_tag" );
@@ -531,6 +702,9 @@ QString QtxResourceMgr::XmlFormat::parameterTag() const
   return tag;
 }
 
+/*!
+  \return XML attribute of parameter name
+*/
 QString QtxResourceMgr::XmlFormat::nameAttribute() const
 {
   QString str = option( "name_attribute" );
@@ -539,6 +713,9 @@ QString QtxResourceMgr::XmlFormat::nameAttribute() const
   return str;
 }
 
+/*!
+  \return XML attribute of parameter value
+*/
 QString QtxResourceMgr::XmlFormat::valueAttribute() const
 {
   QString str = option( "value_attribute" );
@@ -637,7 +814,9 @@ bool QtxResourceMgr::Format::save( Resources* res )
 
   Qtx::mkDir( Qtx::dir( res->myFileName ) );
 
-  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<QChar, QString>& substMap ) const
 {
   QString trg = src;
index f753454253cb30ef8490434a89c8d26eb1f697d7..0bf57831ca33874d883bdc47be511db4a96f6dc8 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef QTX_RESOURCEMGR_H
 #define QTX_RESOURCEMGR_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:
index 6d612b2998645ea1a24a7dad4c5cdbaf76ba6240..8e0a33e01bdef3e2fbd341464e73355bbb1ace5d 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "QtxStdOperations.h"
 
 #include <math.h>
 #include <stdlib.h>
 
-//================================================================
-// 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;
index 5a8cfd48e434e38b3efd5dd83841c9ada018ad76..3631d7b95b3b0999ff1d75ffd4f95716dddcddae 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxStdOperations.h
 // Author:    Alexander SOLOVYOV
 #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:
index eac69ea6008fa9117c3f0f132062f402405e3a66..1f7c0be558ff993ee1af7d6127c0624467f3df1f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxTable.cxx
 // Author:    Sergey TELKOV
@@ -25,6 +25,9 @@
 
 #include <qlineedit.h>
 
+/*!
+  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 )
index bb8f5c0ef1af3b26da54f891ad660ed69f904c18..b7175d08e1e2b8df14c4f932d75ba865383e583d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxTable.h
 // Author:    Sergey TELKOV
index b5f32845e3416a2475624223f7c5eeceff772bc2..cf585db645c582341defcffccc4ea06b04c54952 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxToolBar.cxx
 // Author:    Sergey TELKOV
@@ -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 )
index 851f4d9cb127aaed6caa7a0a38b77243cba7c7da..57512f40dbfc62be4924c332bff1695fb281fa18 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxToolBar.h
 // Author:    Sergey TELKOV
index 5141e127dda713ab37f1e6ea248238d595b2ac13..530afca6dd87085f72c78cef466c9926e7146896 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxToolTip.cxx
 // Author:    Sergey TELKOV
@@ -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;
index 0901137e947474b8923664d179bfdf5e9a31bedd..c8b9d704b820e930007c425e4938f32f92329b99 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxToolTip.h
 // Author:    Sergey TELKOV
index c630ff47d099c2d85769408f497475d4af2f883a..f06c5c2a4ca84ba7b30f94960cbe1549331cc8b4 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkspaceAction.cxx
 // Author:    Sergey TELKOV
@@ -25,6 +25,9 @@
 #include <qworkspace.h>
 #include <qwidgetlist.h>
 
+/*!
+  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();
index 3df49c79860949f2271512e3a465f8febdc34c77..2dfee9cdbf528638eac2e07b35489614b56fc414 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkspaceAction.h
 // Author:    Sergey TELKOV
index c267236f297b9494f5baefc58cb92c88187f3e44..16bdb04b19875ea7272f985feed33f6e54c42540 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkstack.cxx
 // Author:    Sergey TELKOV
 #include <qapplication.h>
 #include <qinputdialog.h>
 #include <qevent.h>
+#include <qregexp.h>
 
 #define DARK_COLOR_LIGHT      250
+
 /*!
-    Class: QtxWorkstack [Public]
-    Descr:
+  Constructor
 */
-
 QtxWorkstack::QtxWorkstack( QWidget* parent )
 : QWidget( parent ),
 myWin( 0 ),
@@ -66,10 +66,16 @@ myWorkArea( 0 )
   base->addWidget( mySplit );
 }
 
+/*!
+  Destructor
+*/
 QtxWorkstack::~QtxWorkstack()
 {
 }
 
+/*!
+  \return list of all widgets in all areas
+*/
 QWidgetList QtxWorkstack::windowList() const
 {
   QPtrList<QtxWorkstackArea> lst;
@@ -86,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;
@@ -143,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 <VAR>SplitType</VAR> 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 <VAR>SplitType</VAR> enumeration
 */
 void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType type)
 {
@@ -222,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)
@@ -247,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 )
 {
@@ -709,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 )
@@ -722,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 )
@@ -744,6 +772,10 @@ void QtxWorkstack::onRename()
     myWorkWin->setCaption( newName );
 }
 
+/*!
+  Wraps area into new splitter
+  \return new splitter
+*/
 QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area )
 {
   if ( !area )
@@ -772,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 )
@@ -816,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;
@@ -833,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();
@@ -842,6 +887,9 @@ void QtxWorkstack::onWindowActivated( QWidget* wid )
   setActiveArea( (QtxWorkstackArea*)obj );
 }
 
+/*!
+  SLOT: called on window deactivating
+*/
 void QtxWorkstack::onDeactivated( QtxWorkstackArea* area )
 {
   if ( myArea != area )
@@ -864,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<QtxWorkstackArea*>( (QObject*)sender()  );
@@ -904,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() )
@@ -918,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 )
@@ -937,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<QSplitter>& splitList, const bool rec ) const
 {
   if ( !split )
@@ -955,6 +1024,12 @@ void QtxWorkstack::splitters( QSplitter* split, QPtrList<QSplitter>& 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<QtxWorkstackArea>& areaList, const bool rec ) const
 {
   if ( !split )
@@ -973,11 +1048,17 @@ void QtxWorkstack::areas( QSplitter* split, QPtrList<QtxWorkstackArea>& 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();
@@ -997,6 +1078,9 @@ QtxWorkstackArea* QtxWorkstack::targetArea()
   return area;
 }
 
+/*!
+  \return current area (that has focus)
+*/
 QtxWorkstackArea* QtxWorkstack::currentArea() const
 {
   QtxWorkstackArea* area = 0;
@@ -1011,6 +1095,9 @@ QtxWorkstackArea* QtxWorkstack::currentArea() const
   return area;
 }
 
+/*!
+  Creates new area
+*/
 QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const
 {
   QtxWorkstackArea* area = new QtxWorkstackArea( parent );
@@ -1024,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;
@@ -1047,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<QtxWorkstackArea> lst;
@@ -1070,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;
@@ -1087,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<QSplitter> recList;
@@ -1132,10 +1237,289 @@ void QtxWorkstack::updateState( QSplitter* split )
 }
 
 /*!
-    Class: QtxWorkstackArea [Internal]
-    Descr:
+  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 )
+    return;
+
+  const QObjectList* objs = split->children();
+  if ( objs )
+  {
+    // make up a sizes string: integer values are separated by ':' char
+    QValueList<int> sizes = split->sizes();
+    QString sizesStr;
+    for ( QValueList<int>::Iterator sIt = sizes.begin(); sIt != sizes.end(); ++sIt ) {
+      if ( *sIt > 1 ) // size 1 pixel usually means empty Workstack area, which will NOT be re-created,
+       sizesStr += QString( ":%1" ).arg( *sIt );  // so we don't need to store its size
+    }
+    if ( !sizesStr.isEmpty() ) // cut the first ':'
+      sizesStr = sizesStr.right( sizesStr.length()-1 );    
+
+    // count all QSplitter-s and QtxWorkstackArea-s
+    //    int nChilds( 0 );
+    //    QObjectListIt it( *objs );
+    //    for ( ; it.current(); ++it )
+    //    {
+    //      if ( it.current()->inherits( "QSplitter" ) ||
+    //           it.current()->inherits( "QtxWorkstackArea" ) )
+    // nChilds++;
+    //    }
+      
+    info += QString( "(splitter orientation=%1 sizes=%3 " ).arg( split->orientation() ).arg( sizesStr );
+    
+    for ( QObjectListIt it( *objs ); it.current(); ++it )
+    {
+      if ( it.current()->inherits( "QSplitter" ) )
+       splitterInfo( (QSplitter*)it.current(), info );
+      else if ( it.current()->inherits( "QtxWorkstackArea" ) ) {
+       QtxWorkstackArea* area = (QtxWorkstackArea*)it.current();
+       if ( area->isEmpty() )
+         continue;
+       info += QString( "(views active='%1'" ).arg( area->activeWidget()->name() );
+       QWidgetList views = area->widgetList();
+       for ( QWidgetListIt wIt( views ); wIt.current(); ++wIt )
+         info += QString( " '%1'" ).arg( wIt.current()->name() );
+       info += ')';
+      }
+    }
+  }
+  info += ')';
+}
+
+
+//Cuts starting '(' symbol and ending '(' symbol
+void cutBrackets( QString& parameters )
+{
+  QChar c1 = parameters[0];
+  QChar c2 = parameters.length()-1;
+  if ( !parameters.isEmpty() && c1 == '(' && c2 == ')' )
+    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"
+*/
+QString getValue( const QString& str, const QString& valName )
+{
+  int i = str.find( valName );
+  if ( i != -1 ) {
+    int equal_i = str.find( '=', i );
+    if ( equal_i != -1 ) {
+      int space_i = str.find( ' ', ++equal_i );
+      if ( space_i != -1 )
+       return str.mid( equal_i, space_i-equal_i );
+    }
+  }
+  return QString( "" );
+}
+
+/*
+  checks format of splitter parameters string
+*/
+bool checkFormat( const QString& parameters )
+{
+  QString params( parameters );
+  // 1. begins and ends with brackets
+  QChar c1 = params[0];
+  QChar c2 = params.length()-1;
+  bool ok = ( c1 == '(' && c2 == ')' );
+  if ( !ok ) return ok;
+  ::cutBrackets( params );
+  // 2. has splitter word
+  ok = ( params.left( 8 ) == "splitter" );
+  if ( !ok ) return ok;
+  // 3. has children?  = '(' is found
+  int i = params.find( '(' );
+  ok = i != -1;
+  if ( !ok ) return ok;
+  params = params.left( i ); // cut all children, they will be checked later
+  // 4. has orientation word and correct value
+  ::getValue( params, "orientation" ).toInt( &ok );
+  if ( !ok ) return ok;
+  // 5. has sizes word and values
+  ok = ! ::getValue( params, "sizes" ).isEmpty();
+  if ( !ok ) return ok;
+  // 6. check children -> number of '(' == number of ')' in original string
+  ok = ( parameters.contains( '(' ) == parameters.contains( ')' ) );
+  return ok;
+}
+
+/*
+  Returns children of splitter in a list.  Children are separated by '(' and ')' symbols
+*/
+QStringList getChildren( const QString& str )
+{
+  QStringList lst;
+  if ( !str.startsWith( "(" ) )
+    return lst;
+  
+  int i = 1,
+  nOpen = 1, // count brackets: '(' increments nOpen, ')' decrements
+  start = 0;
+  while ( i < str.length() ) {
+    if ( str[i] == '(' ) {
+      nOpen++;
+      if ( nOpen == 1 )
+       start = i;
+    }
+    else if ( str[i] == ')' ) {
+      nOpen--;
+      if ( nOpen == 0 ) 
+       lst.append( str.mid( start, i-start+1 ) );
+    }
+    i++;
+  }
+
+  return lst;
+}
+
+// for a string like "views active='AnotherView' 'GLView' 'AnotherView'"
+// getViewName( example, 0 ) returns "GLView", 
+// getViewName( example, 1 ) -> "AnotherView", etc.
+QString getViewName( const QString& str, int i )
+{
+  QRegExp exp( "\\s'\\w+'" );
+  int start = 0; // start index of view name in the string
+  int num = 0 ; // index of found match
+  while ( ( start = exp.search( str, start ) ) != -1 && num < i ) {
+    start += exp.matchedLength();
+    num ++;
+  }
+  if ( start != -1 )      // +2 and -3 avoid starting space and starting and ending ' symbols
+    return str.mid( start+2, exp.matchedLength()-3 );
+
+  return QString( "" );
+}
+
+// returns widget with given name
+QWidget* getView( const QWidget* parent, const QString& aName )
+{
+  QWidget* view = 0;
+  QObjectList *l = parent->topLevelWidget()->queryList( "QWidget", aName, false, true );
+  if ( !l->isEmpty() )
+    view = dynamic_cast<QWidget*>( l->first() );
+  delete l;
+  return view;
+}
+
+/*!
+  Installs a splitter described by given parameters string
+*/
+void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters, QMap< QSplitter*, QValueList<int> >& sMap )
+{
+  if ( !::checkFormat( parameters ) ) {
+    printf( "\nInvalid format of workstack parameters.  Positions of viewers can not be restored.\n" );
+    return;
+  }
+
+  QString params( parameters );
+  ::cutBrackets( params );
+
+  // get splitter sizes and store it in the map for future setting
+  QValueList<int> sizes;
+  QStringList sizesLst = QStringList::split( ':', ::getValue( params, "sizes" ) );
+  for ( QStringList::Iterator it = sizesLst.begin(); it != sizesLst.end(); ++it )
+    sizes.append( (*it).toInt() );
+  sMap[ splitter ] = sizes;
+
+  // set orientation of splitter
+  int orient = ::getValue( params, "orientation" ).toInt();
+  splitter->setOrientation( (Qt::Orientation)orient );
+
+  // get children
+  QString options = params.left( params.find( '(' ) );
+  QString childrenStr = params.right( params.length()-options.length() );
+  QStringList children = ::getChildren( childrenStr );
+
+  // debug output..
+  //  printf (" splitter orient=%d, sizes_count=%d, children=%d\n", orient, sizes.count(), children.count() ); 
+  //  for ( QStringList::Iterator tit = children.begin(); tit != children.end(); ++tit ) 
+  //    printf ("   |-> child = [%s]\n", (*tit).latin1() );
+
+  for ( QStringList::Iterator it = children.begin(); it != children.end(); ++it ) {
+    if ( (*it).startsWith( "(splitter" ) ) {
+      QSplitter* newSplitter = new QSplitter( splitter );
+      setSplitter( newSplitter, *it, sMap );
+    }
+    else if ( (*it).startsWith( "(views" ) ) {
+      QtxWorkstackArea* newArea = createArea( splitter );
+      QString activeViewName = ::getValue( *it, "active" );
+      QWidget* activeView( 0 );
+      activeViewName = activeViewName.mid( 1, activeViewName.length()-2 ); // chop off ' symbols
+      int i = 0;
+      QString viewName = ::getViewName( *it, i );
+      while ( !viewName.isEmpty() ) {
+       if ( QWidget* view = ::getView( splitter, viewName ) ) {
+         newArea->insertWidget( view );
+         if ( activeViewName == view->name() )
+           activeView = view;
+       }
+       viewName = ::getViewName( *it, ++i );
+      }
+      if ( activeView )
+       newArea->setActiveWidget( activeView );
+    }
+  }
+}
+
+/*!
+  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
+  QPtrList<QSplitter> splitList;
+  QPtrList<QtxWorkstackArea> areaList;
+  splitters( mySplit, splitList, false );
+  areas( mySplit, areaList, false );
+  for ( QPtrListIterator<QSplitter> iter( splitList ); iter.current(); ++iter )
+    delete iter.current();
+  for ( QPtrListIterator<QtxWorkstackArea> it( areaList ); it.current(); ++it ) 
+    if ( it.current()->isEmpty() )
+      delete it.current();
+
+  // restore splitter recursively
+  QMap< QSplitter*, QValueList<int> > sMap;
+  setSplitter( mySplit, parameters, sMap );  
+
+  // now mySplit may contains empty area (where all views were located before restoring)
+  // in order setSize to work correctly we have to exclude this area
+  areaList.clear();
+  areas( mySplit, areaList, false );
+  for ( QPtrListIterator<QtxWorkstackArea> delIt( areaList ); delIt.current(); ++delIt ) 
+    if ( delIt.current()->isEmpty() )
+      delete delIt.current();
+
+  qApp->processEvents();
+
+  // restore splitters' sizes (map of sizes is filled in setSplitters)
+  for ( QMap< QSplitter*, QValueList<int> >::Iterator it = sMap.begin(); it != sMap.end(); ++it )
+    it.key()->setSizes( it.data() );
+
+  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'))"
 */
+QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters )
+{
+  splitterInfo( mySplit, outParameters );
+  return (*this);
+}
 
+
+/*!
+  Constructor
+*/
 QtxWorkstackArea::QtxWorkstackArea( QWidget* parent )
 : QWidget( parent )
 {
@@ -1170,11 +1554,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;
@@ -1183,6 +1573,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 )
@@ -1217,6 +1612,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<const QtxWorkstackTabBar*>( sender() );
@@ -1231,12 +1630,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 ) )
@@ -1262,6 +1669,9 @@ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del )
     updateState();
 }
 
+/*!
+  \return list of visible widgets
+*/
 QWidgetList QtxWorkstackArea::widgetList() const
 {
   QWidgetList lst;
@@ -1273,21 +1683,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<QWidget*, bool> map;
@@ -1303,6 +1727,9 @@ void QtxWorkstackArea::show()
     setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false );
 }
 
+/*!
+  Hides area
+*/
 void QtxWorkstackArea::hide()
 {
   QMap<QWidget*, bool> map;
@@ -1318,6 +1745,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();
@@ -1327,11 +1757,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;
@@ -1345,6 +1781,9 @@ QtxWorkstack* QtxWorkstackArea::workstack() const
   return ws;
 }
 
+/*!
+  Custom event filter
+*/
 bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e )
 {
   if ( o->isWidgetType() )
@@ -1365,17 +1804,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;
@@ -1388,6 +1838,9 @@ int QtxWorkstackArea::tabAt( const QPoint& p ) const
   return idx;
 }
 
+/*!
+  Event handler for custom events
+*/
 void QtxWorkstackArea::customEvent( QCustomEvent* e )
 {
   switch ( e->type() )
@@ -1416,6 +1869,9 @@ void QtxWorkstackArea::customEvent( QCustomEvent* e )
   }
 }
 
+/*!
+  Custom focus in event handler
+*/
 void QtxWorkstackArea::focusInEvent( QFocusEvent* e )
 {
   QWidget::focusInEvent( e );
@@ -1423,6 +1879,9 @@ void QtxWorkstackArea::focusInEvent( QFocusEvent* e )
   emit activated( activeWidget() );
 }
 
+/*!
+  Custom mouse press event handler
+*/
 void QtxWorkstackArea::mousePressEvent( QMouseEvent* e )
 {
   QWidget::mousePressEvent( e );
@@ -1430,6 +1889,9 @@ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e )
   emit activated( activeWidget() );
 }
 
+/*!
+  SLOT: called if button close is pressed
+*/
 void QtxWorkstackArea::onClose()
 {
   QWidget* wid = activeWidget();
@@ -1437,6 +1899,9 @@ void QtxWorkstackArea::onClose()
     wid->close();
 }
 
+/*!
+  SLOT: called if tab page is selected
+*/
 void QtxWorkstackArea::onSelected( int id )
 {
   updateCurrent();
@@ -1444,6 +1909,9 @@ void QtxWorkstackArea::onSelected( int id )
   emit activated( activeWidget() );
 }
 
+/*!
+  SLOT: called if active tab page is dragged
+*/
 void QtxWorkstackArea::onDragActiveTab()
 {
   QtxWorkstackChild* c = child( activeWidget() );
@@ -1453,6 +1921,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;
@@ -1470,26 +1941,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<QWidget*, bool> map;
@@ -1505,6 +1991,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 ) );
@@ -1523,6 +2013,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;
@@ -1534,6 +2028,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;
@@ -1542,6 +2040,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;
@@ -1550,6 +2052,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 );
@@ -1559,6 +2065,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 )
@@ -1568,6 +2079,9 @@ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on )
   updateState();
 }
 
+/*!
+  Update
+*/
 void QtxWorkstackArea::updateState()
 {
   bool updBar = myBar->isUpdatesEnabled();
@@ -1669,6 +2183,9 @@ void QtxWorkstackArea::updateState()
   }
 }
 
+/*!
+  \return first unshared widget id
+*/
 int QtxWorkstackArea::generateId() const
 {
   QMap<int, int> map;
@@ -1683,11 +2200,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 )
@@ -1696,6 +2222,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;
@@ -1705,10 +2235,8 @@ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const
 }
 
 /*!
-    Class: QtxWorkstackChild [Internal]
-    Descr:
+  Constructor
 */
-
 QtxWorkstackChild::QtxWorkstackChild( QWidget* wid, QWidget* parent )
 : QHBox( parent ),
 myWidget( wid )
@@ -1719,6 +2247,9 @@ myWidget( wid )
   connect( myWidget, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
 }
 
+/*!
+  Destructor
+*/
 QtxWorkstackChild::~QtxWorkstackChild()
 {
   qApp->removeEventFilter( this );
@@ -1731,11 +2262,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() )
@@ -1755,6 +2292,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() )
@@ -1764,6 +2304,9 @@ void QtxWorkstackChild::onDestroyed( QObject* obj )
   deleteLater();
 }
 
+/*!
+  Custom child event handler
+*/
 void QtxWorkstackChild::childEvent( QChildEvent* e )
 {
   if ( e->type() == QEvent::ChildRemoved && e->child() == widget() )
@@ -1775,20 +2318,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();
@@ -1810,6 +2358,10 @@ void QtxWorkstackTabBar::setActive( const bool on )
   update();
 }
 
+/*!
+  \return tab rectangle
+  \param idx - tab index
+*/
 QRect QtxWorkstackTabBar::tabRect( const int idx ) const
 {
   QRect r;
@@ -1838,6 +2390,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() ) )
@@ -1849,6 +2404,9 @@ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e )
   QTabBar::mouseMoveEvent( e );
 }
 
+/*!
+  Custom mouse press event handler
+*/
 void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e )
 {
   QTabBar::mousePressEvent( e );
@@ -1857,6 +2415,9 @@ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e )
     myId = currentTab();
 }
 
+/*!
+  Custom mouse release event handler
+*/
 void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e )
 {
   QTabBar::mouseReleaseEvent( e );
@@ -1867,12 +2428,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() )
@@ -1885,10 +2452,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 ),
@@ -1900,6 +2465,9 @@ myChild( child )
   qApp->installEventFilter( this );
 }
 
+/*!
+  Destructor
+*/
 QtxWorkstackDrag::~QtxWorkstackDrag()
 {
   qApp->removeEventFilter( this );
@@ -1907,6 +2475,9 @@ QtxWorkstackDrag::~QtxWorkstackDrag()
   endDrawRect();
 }
 
+/*!
+  Custom event filter
+*/
 bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e )
 {
   switch ( e->type() )
@@ -1926,6 +2497,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;
@@ -1933,6 +2508,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() )
@@ -1944,6 +2524,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 ) )
@@ -1961,12 +2546,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 )
@@ -1991,12 +2582,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 )
index 8157a2a814acfb4f3d912522755d751777ee3fa9..c31479cc6b8055ac5c916bfbb1da51e1fa2b01fb 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkstack.h
 // Author:    Sergey TELKOV
@@ -81,6 +81,10 @@ public:
   void SetRelativePosition( QWidget* wid, const Qt::Orientation o, const double pos );
   void SetRelativePositionInSplitter( QWidget* wid, const double pos );
 
+  // asv: Store/Restore visual parameters - geometry of inner windows
+  QtxWorkstack& operator<<( const QString& );
+  QtxWorkstack& operator>>( QString& );
+
 signals:
   void                windowActivated( QWidget* );
 
@@ -125,7 +129,10 @@ private:
   void                distributeSpace( QSplitter* ) const;
   int                 setPosition( QWidget* wid, QSplitter* split, const Qt::Orientation o,
                                                           const int need_pos, const int splitter_pos );
-
+  
+  void                splitterInfo( QSplitter*, QString& ) const;
+  void                setSplitter( QSplitter*, const QString&, QMap< QSplitter*,QValueList<int> >& );
+  
 private:
   QWidget*            myWin;
   QtxWorkstackArea*   myArea;
index c26a9b0aa45e3ae1efe253b56208194cb1d07cfd..a1dbcb974ec8393f94431e6744d7432be4361f6d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkstackAction.cxx
 // Author:    Sergey TELKOV
@@ -26,6 +26,9 @@
 #include <qpopupmenu.h>
 #include <qwidgetlist.h>
 
+/*!
+  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();
index 6e91ddda24bcbd7f4c8327443c696694b182c8f6..650184d24540bda9a56540b2e7bdb19718f49edd 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // File:      QtxWorkstackAction.h
 // Author:    Sergey TELKOV
index a75b6d4e065a0d1103a6af13fce4ae7d2776150e..a94773105fe81b861dd12b4b2f3745c9e405f3ad 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -36,6 +36,9 @@
 
 using namespace std;
 
+/*!
+  Constructor
+*/
 HelpWindow::HelpWindow(QWidget* parent, const char* name ) 
      : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose )
 {
index 5b374d1933db257163e7e820b5617137874de975..31f6405decb4e51aa9c5e4a0e6bae1413fb6f46e 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 9f1a5d212f3b70997bc0e7f6b1b90962c4e66d30..780a876b42e2650151ecfda7657f3022f70c0ba2 100755 (executable)
@@ -1,8 +1,22 @@
-//  SALOME RegistryDisplay : GUI for Registry server implementation
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME RegistryDisplay : GUI for Registry server implementation
 //
 //  File   : IntervalWindow.cxx
 //  Author : Oksana TCHEBANOVA
@@ -20,6 +34,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 +90,13 @@ IntervalWindow::IntervalWindow ( QWidget* parent )
 
   END_OF("IntervalWindow constructor")
 }
+
+/*!
+  Destructor
+*/
 IntervalWindow::~IntervalWindow() {}
-/* 
+
+/*!
    Sets start interval size
 */
 void IntervalWindow::setValue(const int size)
@@ -82,7 +104,7 @@ void IntervalWindow::setValue(const int size)
   mySpinBox->setValue(size);
 }
 
-/*
+/*!
    Gets interval size
 */
 int IntervalWindow::getValue()
@@ -90,7 +112,7 @@ int IntervalWindow::getValue()
   return mySpinBox->value();
 }
 
-/*
+/*!
    gets a pointer to myButtonOk
 */
 QPushButton* IntervalWindow::Ok()
@@ -98,7 +120,7 @@ QPushButton* IntervalWindow::Ok()
   return myButtonOk;
 }
 
-/*
+/*!
    gets a pointer to myButtonCancel
 */
 QPushButton* IntervalWindow::Cancel()
index 76fcecaa9eaa5dac9de4e0725a171656c5027465..420ce5a0af14e3826f854a1e186fb37797ed740e 100755 (executable)
@@ -1,8 +1,22 @@
-//  SALOME RegistryDisplay : GUI for Registry server implementation
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME RegistryDisplay : GUI for Registry server implementation
 //
 //  File   : IntervalWindow.hxx
 //  Author : Oksana TCHEBANOVA
index aa0a8550ef2d853a12a8c099feeb476abda666bf..46b60c25ad15ac5bd940263ccbefb2aaa49db6bc 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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@
index 0425cc268980f0abede1b4d12a01dbca6393d64b..19d3af36b119bdbd4c1511443d7a61b133171eda 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -353,8 +353,10 @@ QString RegWidget::setlongText( const Registry::Infos &c_info)
   a.append( QString( " )<br> " ) + tr( "in directory" ) + QString( " " ));
   a.append( BOLD( c_info.cdir ) );
   
+  time_t aTime;
   a.append( QString( "<br>" ) + 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");
index a34d5656c318e2f9c9d55e61b8d2c194248b9cdc..3a1431777f4094cc27a492055660f68d8d4227fe 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index e52b4bd43989746575af103d35786dee949d8b64..7f285e6865cf0ee4043e4a691699ee0c02c3f663 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index d14c977ba23cbb28bec4de6ad4bc44e16213ae89..e1838e26d935b0501acbc7bf62a2c3f8a4651a84 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vadim SANDLER (OCN)
 #  Module : SalomeApp
index dd7202b63c61513196fed2cd192c4e3cc47d36b3..7788f8b7c5ab95fcc4879bbe14f713fd54f40ceb 100644 (file)
@@ -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-list>
-// Parameters have the following format:
-//    '<section>:<name>=<new_value>'            - to set <new_value> for the user 
-//                                                preference <name> from the <section> section;
-//    '<section>:<name>+=<value>[|<separator>]' - the <value> is appended to the current value 
-//                                                of the preference <name> from the <section> section;
-//                                                separator is used to concatenate old and new values,
-//                                                by default comma (',') symbol is used
-//    '-<section>:<name>'                       - to remove user preference <name> from the <section>
-//                                                section. Note that only use preference file is 
-//                                                influenced, you may need to use '<section>:<name>=""'
-//                                                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/ or email : webmaster.salome@opencascade.com
+//
+/*!
+ 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-list>
+ Parameters have the following format:
+    '<section>:<name>=<new_value>'            - to set <new_value> for the user 
+                                                preference <name> from the <section> section;
+    '<section>:<name>+=<value>[|<separator>]' - the <value> is appended to the current value 
+                                                of the preference <name> from the <section> section;
+                                                separator is used to concatenate old and new values,
+                                                by default comma (',') symbol is used
+    '-<section>:<name>'                       - to remove user preference <name> from the <section>
+                                                section. Note that only use preference file is 
+                                                influenced, you may need to use '<section>:<name>=""'
+                                                option
+ The number of parameters is limeted only by maximum possible length of the command line.
+*/
 
 #include "SUIT_ResourceMgr.h"
 #include <qfile.h>
@@ -30,9 +48,9 @@
 #include <qapplication.h>
 #include <iostream>
 
-//============================================================
-// 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 );
index a9bd30e9509f16f878dadea204273db6aa011720..d1eb1c2bc5a0371dca741d2090148eba6474ff7d 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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
 
index 69ef4910613827cd7dc1fe008f6a07599410a338..eb9a2075693991343da4d77e35d29d9a3254b1af 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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;
index a85de52c632bce4f87c9cbc3ab24397afc2879de..f3b93eac72630690d01c1fd68ccf4005a4aa2782 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index d5481f52ae95e024a12c412bbe9fd8b0843afb37..41276e5dc568963d4f0c9619b5247462e3531280 100644 (file)
@@ -1,11 +1,24 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+# Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
 #
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #  File   : Makefile.in
 #  Author : Nicolas REJNERI
 #  Module : SALOME
-#  $Header$
 
 top_srcdir=@top_srcdir@
 top_builddir=../../..
@@ -63,7 +76,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
index e6276148ddaa72461f269b1a6ec6f77264187cef..8c436985ceba91553a1134d868aadf5bf5fb6162 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined ( SALOME_PYQT_GUI_H )
 #define SALOME_PYQT_GUI_H
index 5a7998eaf57de221ee06582f35eef0a9a7e3289a..d2f73a653d97a4ccd1d10199cd7e501c56cd7d40 100644 (file)
@@ -1,29 +1,21 @@
 // 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 
+// 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 
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Lesser General Public License for more details.
 //
-// You should have received a copy of the GNU Lesser General Public  
-// License along with this library; if not, write to the Free Software 
+// You should have received a copy of the GNU Lesser General Public
+// License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//=============================================================================
-// File      : SALOME_PYQT_Module.cxx
-// Created   : 25/04/05
-// Author    : Vadim SANDLER
-// Project   : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header   : $
-//=============================================================================
 
 #include "PyInterp_Dispatcher.h"
 #include "SALOME_PYQT_Module.h"
 #include "SalomeApp_Study.h"
 
 #include "QtxWorkstack.h"
+#include "QtxActionMenuMgr.h"
+#include "QtxActionToolMgr.h"
 #include <SALOME_LifeCycleCORBA.hxx>
 #include <Container_init_python.hxx>
 
 #include <qfile.h>
 #include <qdom.h>
 #include <qworkspace.h>
+#include <qmenubar.h>
 #include <qpopupmenu.h>
 
 #ifndef WIN32
 
 using namespace std;
 
-///////////////////////////////////////////////////////////////////////////////
-// Default name of the module, replaced at the moment of module creation
-#define __DEFAULT_NAME__ "SALOME_PYQT_Module"
+/*!
+  \var __DEFAULT_NAME__ - Default name of the module, replaced at the moment of module creation
+*/
+const char* __DEFAULT_NAME__  = "SALOME_PYQT_Module";
 
-///////////////////////////////////////////////////////////////////////////////
-// If __CALL_OLD_METHODS__ macro is not defined the invoking of obsolete Python 
+/*!
+  \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)
 #ifdef __CALL_OLD_METHODS__
 const bool IsCallOldMethods = true;
-#else 
+#else
 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 createPopup  ( QPopupMenu*    menu, 
-                     const QString& context, 
-                     const QString& parent, 
+  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, 
+  void insertPopupItems( QDomNode&   parentNode,
                         QPopupMenu* menu );
 
 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
 // and to get C API from sip : sipBuildResult for example
+#if defined(SIP_VERS_v4_old) || defined(SIP_VERS_v4_new)
+#define INIT_FUNCTION initSalomePyQtGUI
 #if defined(SIP_STATIC_MODULE)
-extern "C" void initSalomePyQtGUI();
+extern "C" void INIT_FUNCTION();
+#else
+PyMODINIT_FUNC INIT_FUNCTION();
+#endif
 #else
-PyMODINIT_FUNC initSalomePyQtGUI();
+#define INIT_FUNCTION initlibSalomePyQtGUIc
+extern "C" void INIT_FUNCTION();
 #endif
 
 /*!
@@ -129,7 +137,7 @@ extern "C" {
     if ( !alreadyInitialized ) {
       // call only once (see above) !
       PyEval_RestoreThread( KERNEL_PYTHON::_gtstate );
-      initSalomePyQtGUI(); 
+      INIT_FUNCTION();
       PyEval_ReleaseThread( KERNEL_PYTHON::_gtstate );
       alreadyInitialized = !alreadyInitialized;
     }
@@ -137,7 +145,7 @@ extern "C" {
   }
 }
 
-/*! 
+/*!
  * Static variables definition
  */
 SALOME_PYQT_Module::InterpMap SALOME_PYQT_Module::myInterpMap;
@@ -147,20 +155,19 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::myInitModule = 0;
  * Little trick : provide an access to being activated Python module from outside;
  * needed by the SalomePyQt library :(
 */
-SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule() 
-{ 
-  return myInitModule; 
+SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule()
+{
+  return myInitModule;
 }
 
 /*!
  * 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 )
 {
-  myMenuActionList.setAutoDelete( false );
-  myPopupActionList.setAutoDelete( false );
-  myToolbarActionList.setAutoDelete( false );
 }
 
 /*!
@@ -168,9 +175,6 @@ SALOME_PYQT_Module::SALOME_PYQT_Module() :
  */
 SALOME_PYQT_Module::~SALOME_PYQT_Module()
 {
-  myMenuActionList.clear();
-  myPopupActionList.clear();
-  myToolbarActionList.clear();
   if ( myXmlHandler )
     delete myXmlHandler;
 }
@@ -181,7 +185,7 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module()
  *
  * This method is used for creation of the menus, toolbars and other staff.
  * There are two ways:
- * - for obsolete modules this method first tries to read <module>_<language>.xml 
+ * - for obsolete modules this method first tries to read <module>_<language>.xml
  *   resource file which contains a menu, toolbars and popup menus description.
  * - new modules can create menus by by calling the corresponding methods of SalomePyQt
  *   Python API in the Python module's initialize() method which is called from here.
@@ -190,6 +194,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
@@ -199,12 +205,10 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app )
   QString aName = name( "" );
   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
@@ -212,11 +216,11 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app )
   {
   public:
     InitializeReq( CAM_Application*    _app,
-                  SALOME_PYQT_Module* _obj ) 
+                  SALOME_PYQT_Module* _obj )
       : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true)
         myApp( _app ),
         myObj( _obj ) {}
-    
+
   protected:
     virtual void execute()
     {
@@ -241,7 +245,7 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   MESSAGE( "SALOME_PYQT_Module::activateModule" );
 
   bool res = SalomeApp_Module::activateModule( theStudy );
-  
+
   if ( !res )
     return res;
 
@@ -249,12 +253,12 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   class ActivateReq : public PyInterp_Request
   {
   public:
-    ActivateReq( SUIT_Study*         _study, 
-                SALOME_PYQT_Module* _obj ) 
+    ActivateReq( 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()
     {
@@ -273,6 +277,38 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   setMenuShown( true );
   setToolShown( true );
 
+  if ( menuMgr() )
+    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;
 }
 
@@ -284,7 +320,13 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy )
 {
   MESSAGE( "SALOME_PYQT_Module::deactivateModule" );
 
-  bool res = SalomeApp_Module::deactivateModule( theStudy );
+  if ( menuMgr() )
+    disconnect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ),
+               this,      SLOT( onMenuHighlighted( int, int ) ) );
+
+  // remove menus & toolbars created from XML file if required
+  if ( myXmlHandler )
+    myXmlHandler->clearActions();
 
   // deactivate menus, toolbars, etc
   setMenuShown( false );
@@ -294,13 +336,13 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy )
   class DeactivateReq : public PyInterp_LockRequest
   {
   public:
-    DeactivateReq( PyInterp_base*      _py_interp, 
-                  SUIT_Study*         _study, 
-                  SALOME_PYQT_Module* _obj ) 
+    DeactivateReq( PyInterp_base*      _py_interp,
+                  SUIT_Study*         _study,
+                  SALOME_PYQT_Module* _obj )
       : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
         myStudy ( _study ),
         myObj   ( _obj   ) {}
-    
+
   protected:
     virtual void execute()
     {
@@ -315,7 +357,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 ) );
 }
 
 /*!
@@ -337,13 +410,13 @@ void SALOME_PYQT_Module::onGUIEvent()
   class GUIEvent : public PyInterp_LockRequest
   {
   public:
-    GUIEvent( PyInterp_base*      _py_interp, 
+    GUIEvent( PyInterp_base*      _py_interp,
              SALOME_PYQT_Module* _obj,
-             int                 _id ) 
+             int                 _id )
       : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
         myId    ( _id  ),
         myObj   ( _obj ) {}
-    
+
   protected:
     virtual void execute()
     {
@@ -362,19 +435,19 @@ void SALOME_PYQT_Module::onGUIEvent()
 /*!
  * Processes GUI action (from context popup menu, only for XML-based actions!)
  */
-void SALOME_PYQT_Module::onGUIEvent( int id ) 
+void SALOME_PYQT_Module::onGUIEvent( int id )
 {
   // perform synchronous request to Python event dispatcher
   class GUIEvent : public PyInterp_LockRequest
   {
   public:
-    GUIEvent( PyInterp_base*      _py_interp, 
+    GUIEvent( PyInterp_base*      _py_interp,
              SALOME_PYQT_Module* _obj,
-             int                 _id ) 
+             int                 _id )
       : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
         myId    ( _id  ),
         myObj   ( _obj ) {}
-    
+
   protected:
     virtual void execute()
     {
@@ -390,7 +463,43 @@ void SALOME_PYQT_Module::onGUIEvent( int id )
   PyInterp_Dispatcher::Get()->Exec( new GUIEvent( myInterp, this, id ) );
 }
 
-/*! 
+/*!
+ * Menu highlight processing
+ */
+void SALOME_PYQT_Module::onMenuHighlighted( int menu, int submenu )
+{
+  if ( !action( menu ) && registered( menu, submenu ) ) {
+    // perform synchronous request to Python event dispatcher
+    class MenuHighlightEvent : public PyInterp_LockRequest
+    {
+    public:
+      MenuHighlightEvent( PyInterp_base*      _py_interp,
+                         SALOME_PYQT_Module* _obj,
+                         int                 _menu,
+                         int                 _submenu )
+       : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
+         myMenu   ( _menu ),
+         mySubMenu( _submenu ),
+         myObj    ( _obj ) {}
+
+    protected:
+      virtual void execute()
+      {
+       myObj->menuHighlight( myMenu, mySubMenu );
+      }
+
+    private:
+      int                 myMenu;
+      int                 mySubMenu;
+      SALOME_PYQT_Module* myObj;
+    };
+
+    // Posting the request
+    PyInterp_Dispatcher::Get()->Exec( new MenuHighlightEvent( myInterp, this, menu, submenu ) );
+  }
+}
+
+/*!
   Context popup menu request.
   Called when user activates popup menu in some window (view, object browser, etc).
   */
@@ -401,15 +510,15 @@ void SALOME_PYQT_Module::contextMenuPopup( const QString& theContext, QPopupMenu
   class PopupMenuEvent : public PyInterp_LockRequest
   {
   public:
-    PopupMenuEvent( PyInterp_base*     _py_interp, 
+    PopupMenuEvent( PyInterp_base*     _py_interp,
                    SALOME_PYQT_Module* _obj,
-                   const QString&      _context, 
-                   QPopupMenu*        _popup ) 
+                   const QString&      _context,
+                   QPopupMenu*        _popup )
       : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
-        myContext( _context ), 
+        myContext( _context ),
         myPopup  ( _popup  ),
         myObj    ( _obj )   {}
-    
+
   protected:
     virtual void execute()
     {
@@ -430,13 +539,13 @@ void SALOME_PYQT_Module::contextMenuPopup( const QString& theContext, QPopupMenu
 
 /*!
  * Defines the dockable window associated with the module.
- * To fill the list of windows the correspondind Python module's windows() 
+ * To fill the list of windows the correspondind Python module's windows()
  * method is called from SALOME_PYQT_Module::init() method.
  * By default, ObjectBrowser, PythonConsole and LogWindow are provided.
  */
 void SALOME_PYQT_Module::windows( QMap<int, int>& mappa ) const
 {
-  // First clear the output parameters 
+  // First clear the output parameters
   QMap<int, int>::ConstIterator it;
   for ( it = myWindowsMap.begin(); it != myWindowsMap.end(); ++it ) {
     mappa[ it.key() ] = it.data();
@@ -445,7 +554,7 @@ void SALOME_PYQT_Module::windows( QMap<int, int>& mappa ) const
 
 /*!
  * Defines the compatible views which should be opened on module activation.
- * To fill the list of views the correspondind Python module's views() 
+ * To fill the list of views the correspondind Python module's views()
  * method is called from SALOME_PYQT_Module::init() method.
  * By default, the list is empty.
  */
@@ -482,20 +591,15 @@ void SALOME_PYQT_Module::init( CAM_Application* app )
 
   // initialize Python subinterpreter (on per study) and put it in <myInterp> variable
   initInterp( aStudyId );
-  if ( !myInterp ) 
-    return; // Error 
+  if ( !myInterp )
+    return; // Error
 
   // import Python GUI module
   importModule();
   if ( !myModule )
-    return; // Error 
-  myInitModule = this;
+    return; // Error
 
-  if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
-    // call Python module's setWorkspace() method
-    setWorkSpace();
-  }                         //__CALL_OLD_METHODS__
+  myInitModule = this;
 
   // then call Python module's initialize() method
   // ... first get python lock
@@ -508,7 +612,7 @@ void SALOME_PYQT_Module::init( CAM_Application* app )
       PyErr_Print();
     }
   }
-  
+
   // get the windows list from the Python module by calling windows() method
   // ... first put default values
   myWindowsMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft );
@@ -568,11 +672,10 @@ void SALOME_PYQT_Module::init( CAM_Application* app )
 }
 
 /*!
- * Performs internal activation: 
+ * 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 )
 {
@@ -582,14 +685,53 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy )
 
   // initialize Python subinterpreter (on per study) and put it in <myInterp> variable
   initInterp( aStudyId );
-  if ( !myInterp ) 
-    return; // Error 
+  if ( !myInterp )
+    return; // Error
 
   // import Python GUI module
   importModule();
   if ( !myModule )
-    return; // Error 
+    return; // Error
+
+  // 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<SalomeApp_Study*>( theStudy );
+  int aStudyId = aStudy ? aStudy->studyDS()->StudyId() : 0;
+
+  // initialize Python subinterpreter (on per study) and put it in <myInterp> 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();
 
@@ -602,18 +744,10 @@ 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();
-    }
-  }
 }
 
 /*!
- * Performs internal deactivation: 
+ * Performs internal deactivation:
  * - calls Python module's deactivate() method
  */
 void SALOME_PYQT_Module::deactivate( SUIT_Study* theStudy )
@@ -646,14 +780,19 @@ void SALOME_PYQT_Module::studyChanged( SUIT_Study* theStudy )
 
   // initialize Python subinterpreter (on per study) and put it in <myInterp> variable
   initInterp( aStudyId );
-  if ( !myInterp ) 
-    return; // Error 
+  if ( !myInterp )
+    return; // Error
 
   // import Python GUI module
   importModule();
   if ( !myModule )
-    return; // Error 
+    return; // Error
+
+  if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+    // call Python module's setWorkspace() method
+    setWorkSpace();
+  }                         //__CALL_OLD_METHODS__
+
   // get python lock
   PyLockWrapper aLock = myInterp->GetLockWrapper();
 
@@ -691,37 +830,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)
@@ -738,17 +846,17 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the
   // import first
   if ( !myInterp || !myModule )
     return;
-  
-  QString aContext( theContext ), aObject( "" ), aParent( "" );
+
+  QString aContext( "" ), aObject( "" ), aParent( theContext );
+
   if ( IsCallOldMethods && PyObject_HasAttrString(myModule , "definePopup") ) { //__CALL_OLD_METHODS__
     // call definePopup() Python module's function
     // this is obsolete function, used only for compatibility reasons
-    PyObjWrapper res(PyObject_CallMethod( myModule, 
-                                         "definePopup", 
+    PyObjWrapper res(PyObject_CallMethod( myModule,
+                                         "definePopup",
                                          "sss",
-                                         aContext.latin1(), 
-                                         aObject.latin1(), 
+                                         aContext.latin1(),
+                                         aObject.latin1(),
                                          aParent.latin1() ) );
     if( !res ) {
       PyErr_Print();
@@ -772,7 +880,7 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the
   PyObjWrapper sipPopup( sipBuildResult( 0, "M", thePopupMenu, sipClass_QPopupMenu ) );
 
   // then call Python module's createPopupMenu() method (for new modules)
-  if ( PyObject_HasAttrString(myModule , "createPopupMenu") ) { 
+  if ( PyObject_HasAttrString(myModule , "createPopupMenu") ) {
     PyObjWrapper res1( PyObject_CallMethod( myModule,
                                          "createPopupMenu",
                                          "Os",
@@ -790,8 +898,8 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the
                                            "customPopup",
                                            "Osss",
                                            sipPopup.get(),
-                                           aContext.latin1(), 
-                                           aObject.latin1(), 
+                                           aContext.latin1(),
+                                           aObject.latin1(),
                                            aParent.latin1() ) );
     if( !res2 ) {
       PyErr_Print();
@@ -802,15 +910,15 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the
 /*!
  * Processes GUI event
  * - calls Python module's OnGUIEvent() method
- */ 
+ */
 void SALOME_PYQT_Module::guiEvent( const int theId )
 {
   // Python interpreter should be initialized and Python module should be
   // import first
   if ( !myInterp || !myModule )
     return;
-  
-  if ( PyObject_HasAttrString(myModule , "OnGUIEvent") ) { 
+
+  if ( PyObject_HasAttrString(myModule , "OnGUIEvent") ) {
     PyObjWrapper res( PyObject_CallMethod( myModule, "OnGUIEvent", "i", theId ) );
     if( !res ) {
       PyErr_Print();
@@ -818,6 +926,25 @@ void SALOME_PYQT_Module::guiEvent( const int theId )
   }
 }
 
+/*!
+ * Menu highlight processing
+ * - calls Python module's menuActivated(int,int) method
+ */
+void SALOME_PYQT_Module::menuHighlight( const int menu, const int submenu )
+{
+  // Python interpreter should be initialized and Python module should be
+  // import first
+  if ( !myInterp || !myModule )
+    return;
+
+  if ( PyObject_HasAttrString(myModule , "menuHighlight") ) {
+    PyObjWrapper res( PyObject_CallMethod( myModule, "menuHighlight", "ii", menu, submenu ) );
+    if( !res ) {
+      PyErr_Print();
+    }
+  }
+}
+
 /*!
  *  Initialises python subinterpreter (one per study)
  */
@@ -837,13 +964,13 @@ void SALOME_PYQT_Module::initInterp( int theStudyId )
   }
   // not found - create a new one!
   ///////////////////////////////////////////////////////////////////
-  // Attention: the creation of Python interpretor must be protected 
+  // Attention: the creation of Python interpretor must be protected
   // by a C++ Lock because of C threads
   ///////////////////////////////////////////////////////////////////
   myInterp = new SALOME_PYQT_PyInterp();
   myInterp->initialize();
   myInterpMap[ theStudyId ] = myInterp;
-   
+
   // import 'salome' module and call 'salome_init' method;
   // do it only once on interpreter creation
   // ... first get python lock
@@ -856,7 +983,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();
@@ -912,7 +1040,7 @@ void SALOME_PYQT_Module::setWorkSpace()
     // Error!
     PyErr_Print();
     return;
-  }  
+  }
 
   if ( IsCallOldMethods ) { //__CALL_OLD_METHODS__
     // ... then get workspace object
@@ -929,7 +1057,7 @@ void SALOME_PYQT_Module::setWorkSpace()
     }
     PyObjWrapper pyws( sipBuildResult( 0, "M", aWorkspace, sipClass_QWidget ) );
     // ... and finally call Python module's setWorkspace() method (obsolete)
-    if ( PyObject_HasAttrString(myModule , "setWorkSpace") ) { 
+    if ( PyObject_HasAttrString(myModule , "setWorkSpace") ) {
       PyObjWrapper res( PyObject_CallMethod( myModule, "setWorkSpace", "O", pyws.get() ) );
       if( !res ) {
         PyErr_Print();
@@ -939,120 +1067,378 @@ void SALOME_PYQT_Module::setWorkSpace()
 }
 
 /*!
- * Adds an action into private action list [internal usage]
+ * Returns default menu group
  */
-void SALOME_PYQT_Module::addAction( const PyQtGUIAction type, QAction* action )
+int SALOME_PYQT_Module::defaultMenuGroup()
 {
-  switch ( type ) {
-  case PYQT_ACTION_MENU:
-    myMenuActionList.append( action );
-    break;
-  case PYQT_ACTION_TOOLBAL:
-    myToolbarActionList.append( action );
-    break;
-  case PYQT_ACTION_POPUP:
-    myPopupActionList.append( action );
-    break;
-  }
+  return __DEFAULT_GROUP__; 
 }
 
-
 /*!
- * The next methods just call the parent implementation.
+ * The next methods call the parent implementation.
  * This is done to open protected methods from CAM_Module class.
-*/
+ * 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 )
+
+int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( subMenu, menu, id, group, idx );
+  bool exists = hasMenu( subMenu, menu );
+  int regId = SalomeApp_Module::createMenu( subMenu, menu, id, group, idx, true );
+  if ( !exists )
+    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 )
+
+int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( subMenu, menu, id, group, idx );
+  QStringList menus = QStringList::split( "|", menu, false );
+  int pid = -1;
+  for (int i = 0; i < menus.count(); i++ ) {
+    pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu );
+    if ( pid == -1 ) break;
+  }
+  if ( pid != -1 )
+    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 )
+
+int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( id, menu, group, idx );
+  int regId = SalomeApp_Module::createMenu( id, menu, group, idx );
+  if ( regId != -1 )
+    registerMenu( regId, menu, constantMenu );
+  return regId;
 }
-int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx )
+
+int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( id, menu, group, idx );
+  QStringList menus = QStringList::split( "|", menu, false );
+  int pid = -1;
+  for (int i = 0; i < menus.count(); i++ ) {
+    pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu );
+    if ( pid == -1 ) break;
+  }
+  if ( pid != -1 )
+    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 )
+
+int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( a, menu, id, group, idx );
+  int regId = SalomeApp_Module::createMenu( a, menu, id, group, idx );
+  if ( regId != -1 )
+    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 )
+
+int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int id, const int group, const int idx, const bool constantMenu )
 {
-  return SalomeApp_Module::createMenu( a, menu, id, group, idx );
+  QStringList menus = QStringList::split( "|", menu, false );
+  int pid = -1;
+  for (int i = 0; i < menus.count(); i++ ) {
+    pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu );
+    if ( pid == -1 ) break;
+  }
+  if ( pid != -1 )
+    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
 {
-  QAction* a = SalomeApp_Module::action( id );
-  if ( !a ) // try own action map for menu items
-    a = SalomeApp_Module::action( id + PYQT_ACTION_MENU );
-  if ( !a ) // try own action map for toolbar items
-    a = SalomeApp_Module::action( id + PYQT_ACTION_TOOLBAL );
-  if ( !a ) // try own action map for popup items
-    a = SalomeApp_Module::action( id + PYQT_ACTION_POPUP );
-  return a;
+  return SalomeApp_Module::action( id );
 }
+
 int SALOME_PYQT_Module::actionId( const QAction* a ) const
 {
-  int id = SalomeApp_Module::actionId( a );
-  if ( myMenuActionList.contains( a ) )    // check own action map for menu items
-    id -= PYQT_ACTION_MENU;
-  if ( myToolbarActionList.contains( a ) ) // check own action map for toolbar items
-    id -= PYQT_ACTION_TOOLBAL;
-  if ( myPopupActionList.contains( a ) )   // check own action map for popup items
-    id -= PYQT_ACTION_POPUP;
-  return id;
+  return SalomeApp_Module::actionId( a );
 }
-QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, const QString& icon, 
+
+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 = loadIcon( icon );
+  QAction* a = action( id );
+  if ( a ) {
+    if ( a->text().isEmpty()      && !text.isEmpty() )  a->setText( text );
+    if ( a->menuText().isEmpty()  && !menu.isEmpty() )  a->setMenuText( menu );
+    if ( a->iconSet().isNull()    && !anIcon.isNull() ) a->setIconSet( anIcon );
+    if ( a->statusTip().isEmpty() && !tip.isNull() )    a->setStatusTip( tip );
+    if ( a->accel().isEmpty()     && key )              a->setAccel( key );
+    if ( a->isToggleAction() != toggle )                a->setToggleAction( toggle );
+    disconnect( a, SIGNAL( activated() ), this, SLOT( onGUIEvent() ) );
+    connect(    a, SIGNAL( activated() ), this, SLOT( onGUIEvent() ) );
+  }
+  else {
+    a = SalomeApp_Module::createAction( id, text, anIcon, menu, tip, key, getApp()->desktop(), toggle, this, SLOT( onGUIEvent() ) );
+  }
+  return a;
+}
+/*! 
+ * Load icon from resource file
+ */
+QIconSet SALOME_PYQT_Module::loadIcon( const QString& fileName )
 {
   QIconSet anIcon;
-  if ( !icon.isEmpty() ) {
-    QPixmap pixmap  = getApp()->resourceMgr()->loadPixmap( name(""), tr( icon ) );
+  if ( !fileName.isEmpty() ) {
+    QPixmap pixmap  = getApp()->resourceMgr()->loadPixmap( name(""), tr( fileName ) );
     if ( !pixmap.isNull() )
       anIcon = QIconSet( pixmap );
   }
-  return SalomeApp_Module::createAction( id, text, anIcon, menu, tip, key, getApp()->desktop(), toggle, this, SLOT( onGUIEvent() ) );
+  return anIcon;
 }
 
+/*!
+ * Returns TRUE if menu already exists
+ */
+bool SALOME_PYQT_Module::hasMenu( const QString& subMenu, const int menu )
+{
+  return menuMgr() && menuMgr()->containsMenu( subMenu, menu );
+}
+
+/*!
+ * Register the menu
+ */
+void SALOME_PYQT_Module::registerMenu( const int id, const int menu, const bool constantMenu )
+{
+  QAction* a = action( id );
+  QAction* s = separator();
+  if ( a && a == s )
+    return;
+  if ( !registered( id, menu ) ) 
+    myMenus[menu].append( MenuId( id, constantMenu ) );
+}
+
+/*!
+ * Unregister the menu
+ */
+void SALOME_PYQT_Module::unregisterMenu( const int id, const int menu )
+{
+  if ( myMenus.find( menu ) != myMenus.end() ) {
+    MenuIdList::iterator lit;
+    for ( lit = myMenus[menu].begin(); lit != myMenus[menu].end(); ++lit ) {
+      if ( (*lit).id == id ) {
+       myMenus[menu].remove( lit );
+       return;
+      }
+    }
+  }
+}
+
+/*!
+ * Returns TRUE if the menu is registered
+ */
+bool SALOME_PYQT_Module::registered( const int id, const int menu )
+{
+  MenuMap::iterator mit;
+  for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit ) {
+    MenuIdList::iterator lit;
+    for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit ) {
+      if ( (*lit).id == id && ( menu == 0 || mit.key() == menu ) )
+       return true;
+    }
+  }
+  return false;
+}
+
+/*!
+ * Returns TRUE if the menu is constant (not removed by clearMenu()).
+ * This concerns the menus which are created from XML files.
+ */
+bool SALOME_PYQT_Module::isConstantMenu( const int id, const int menu )
+{
+  if ( myMenus.find( menu ) != myMenus.end() ) {
+    MenuIdList& l = myMenus[ menu ];
+    MenuIdList::iterator lit;
+    for ( lit = l.begin(); lit != l.end(); ++lit ) {
+      if ( (*lit).id == id && (*lit).constantMenu )
+       return true;
+    }
+  }
+  return false;
+}
+
+/*!
+ * Displays/hides the module's menus.
+ */
+void SALOME_PYQT_Module::setMenuShown( const bool show )
+{
+  QtxActionMenuMgr* mMgr = menuMgr();
+  if ( !mMgr )
+    return;
+
+  bool upd = mMgr->isUpdatesEnabled();
+  mMgr->setUpdatesEnabled( false );
+
+  SalomeApp_Module::setMenuShown( show );
+
+  for ( MenuMap::iterator mit = myMenus.begin(); mit != myMenus.end(); ++mit ) {
+    MenuIdList::iterator lit;
+    for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit )
+      if ( !action( (*lit).id ) )
+       mMgr->setShown( (*lit).id, show );
+  }
+
+  mMgr->setUpdatesEnabled( upd );
+  if ( upd )
+    mMgr->update();
+}
+
+/*!
+ * Displays/hides the module's toolbars.
+ */
+void SALOME_PYQT_Module::setToolShown( const bool show )
+{
+  SalomeApp_Module::setToolShown( show );
+}
+
+/*!
+ * Clears the given menu.
+ * If <id> = 0   : clear all items in the <menu> menu
+ * If <menu> = 0 : clear all menus recursively starting from top-level.
+ * If <removeActions> = 0 : also unregister all removed actions (not delete!).
+ */
+bool SALOME_PYQT_Module::clearMenu( const int id, const int menu, const bool removeActions )
+{
+  QAction* a = action( id );
+  QAction* s = separator();
+  typedef QValueList<int> IntList;
+  if ( a && a != s ) {
+    // action
+    IntList menus;
+    if ( menu != 0 ) {
+      if ( registered( id, menu ) ) menus.append( menu );
+    }
+    else {
+      MenuMap::iterator mit;
+      for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit )
+       if ( registered( id, mit.key() ) ) menus.append( mit.key() );
+    }
+    for ( int i = 0; i < menus.count(); i++ ) {
+      if ( !isConstantMenu( id, menus[i] ) ) {
+       menuMgr()->remove( menuMgr()->actionId( a ), menus[ i ] );
+       unregisterMenu( id, menus[i] );
+      }
+    }
+    if ( !registered( id ) && removeActions )
+      unregisterAction( id );
+  }
+  else {
+    // menu
+    if ( id == 0 ) {
+      if ( menu == 0 ) {
+       // clear all menus recursively starting from top-level (main menu)
+       IntList l = myMenus.keys();
+       IntList::iterator lit;
+       for ( lit = l.begin(); lit != l.end(); ++lit )
+         clearMenu( 0, *lit, removeActions );
+      }
+      else {
+       if ( myMenus.find( menu ) != myMenus.end() ) {
+         // remove all items in the parent menu
+         IntList l;
+         MenuIdList::iterator lit;
+         for ( lit = myMenus[menu].begin(); lit != myMenus[menu].end(); ++lit )
+           l.append( (*lit).id );
+         for ( int i = 0; i < l.count(); i++ )
+           clearMenu( l[i], menu, removeActions );
+         if ( myMenus[menu].empty() )
+           myMenus.remove( menu );
+       }
+      }
+    }
+    else {
+      MenuMap::iterator mit;
+      for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit ) {
+       MenuIdList::iterator lit;
+       for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit ) {
+         if ( (*lit).id == id && ( menu == 0 || mit.key() == menu ) ) {
+           clearMenu( 0, id, removeActions ); // first remove all sub-menus
+           if ( !isConstantMenu( id, mit.key() ) ) {
+             menuMgr()->remove( id, mit.key() );
+             mit.data().remove( lit );
+             break;
+           }
+         }
+       }
+      }
+    }
+  }
+  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
 static QString tagName( const QDomElement& element ) {
- return element.tagName().stripWhiteSpace();
 return element.tagName().stripWhiteSpace();
 }
 
 // gets an attribute by it's name for the dom element [ static ]
@@ -1062,44 +1448,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 ) 
+static int checkInt( const QString& value, const int def = -1, const int shift = -1 )
 {
-  return value.isEmpty() ? -1 : 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 );
@@ -1112,14 +1522,44 @@ 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<QMenuData*>( 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<QMenuData*>( mi->popup() );
+      }
+      else
+       break;
+    }
+  }
+  myMenuItems.clear();
 }
 
 /*!
  *  Creates popup menu
  */
-void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu*    menu, 
-                                         const QString& context, 
-                                         const QString& parent, 
+void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu*    menu,
+                                         const QString& context,
+                                         const QString& parent,
                                          const QString& object )
 {
   // get document element
@@ -1146,26 +1586,70 @@ 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;
-  
+
   if ( parentNode.isNull() )
     return;
 
-  QDomElement parentElement = parentNode.toElement(); 
+  QDomElement parentElement = parentNode.toElement();
   if ( !parentElement.isNull() ) {
     QString plabel = attribute( parentElement, "label-id" );
     int     pid    = checkInt( attribute( parentElement, "item-id" ) );
     int     ppos   = checkInt( attribute( parentElement, "pos-id" ) );
+    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
-                                        80,             // group ID
-                                        ppos );         // position
+      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() ) {
@@ -1174,6 +1658,8 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM
          if ( aTagName == "popup-item" ) {
            int     id      = checkInt( attribute( elem, "item-id" ) );
            int     pos     = checkInt( attribute( elem, "pos-id" ) );
+           int     group   = checkInt( attribute( elem, "group-id" ), 
+                                       myModule->defaultMenuGroup() );
            QString label   = attribute( elem, "label-id" );
            QString icon    = attribute( elem, "icon-id" );
            QString tooltip = attribute( elem, "tooltip-id" );
@@ -1183,34 +1669,78 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM
 
            // -1 action ID is not allowed : it means that <item-id> attribute is missed in the XML file!
            // also check if the action with given ID is already created
-           if ( id != -1 && !myModule->action( SALOME_PYQT_Module::PYQT_ACTION_MENU + id ) ) {
-             // little trick to have several actions with same ID for menus and toolbars
-             id = SALOME_PYQT_Module::PYQT_ACTION_MENU + id;
-             // 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->addAction( SALOME_PYQT_Module::PYQT_ACTION_MENU, action );
-             myModule->createMenu( action, menuId, -1, 80, pos );
+           if ( id != -1 ) {
+             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
-           int     pos     = checkInt( attribute( elem, "pos-id" ) );
-           QAction* action = myModule->createSeparator();
-           myModule->createMenu( action, menuId, -1, 80, pos );
+           int id    = checkInt( attribute( elem, "item-id" ) );     // separator can have ID
+           int pos   = checkInt( attribute( elem, "pos-id" ) );
+           int group = checkInt( attribute( elem, "group-id" ), 
+                                 myModule->defaultMenuGroup() );
+           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();
     }
   }
 }
@@ -1222,11 +1752,11 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode )
 {
   if ( !myModule )
     return;
-  
+
   if ( parentNode.isNull() )
     return;
 
-  QDomElement parentElement = parentNode.toElement(); 
+  QDomElement parentElement = parentNode.toElement();
   if ( !parentElement.isNull() ) {
     QString aLabel = attribute( parentElement, "label-id" );
     if ( !aLabel.isEmpty() ) {
@@ -1249,9 +1779,7 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode )
 
            // -1 action ID is not allowed : it means that <item-id> attribute is missed in the XML file!
            // also check if the action with given ID is already created
-           if ( id != -1 && !myModule->action( SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL + id ) ) {
-             // little trick to have several actions with same ID for menus and toolbars
-             id = SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL + id;
+            if ( id != -1 ) {
              // create toolbar action
              QAction* action = myModule->createAction( id,                               // ID
                                                        tooltip,                          // tooltip
@@ -1260,11 +1788,10 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode )
                                                        tooltip,                          // status-bar text
                                                        QKeySequence( accel ),            // keyboard accelerator
                                                        toggle );                         // toogled action
-             myModule->addAction( SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL, action );
              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();
@@ -1274,14 +1801,17 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode )
        node = node.nextSibling();
       }
     }
-  }      
+  }
 }
 
+/*!
+ * Fill popup menu with items
+ */
 void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* menu )
 {
   if ( !myModule )
     return;
-  
+
   if ( parentNode.isNull() )
     return;
 
@@ -1308,7 +1838,7 @@ void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu*
          if ( !pixmap.isNull() )
            anIcon = QIconSet( pixmap );
         }
-       
+
        // -1 action ID is not allowed : it means that <item-id> attribute is missed in the XML file!
        // also check if the action with given ID is already created
        if ( id != -1 ) {
index 2582ee59edb00b5b0160916be00781b06997d96f..7d20a34008e7389ed54bb12f1035a97518643812 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//=============================================================================
-// 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
@@ -60,20 +52,22 @@ private:
   SALOME_PYQT_PyInterp*            myInterp;
   /* Python GUI module loaded */
   PyObjWrapper                     myModule;
-  /* Pytho GUI being initialized (not zero only during the initialization)*/
-  static SALOME_PYQT_Module* myInitModule;
-
-  typedef QPtrList<QAction> ActionList;
-  
-  /* own actions list */
-  ActionList                       myMenuActionList;
-  ActionList                       myPopupActionList;
-  ActionList                       myToolbarActionList;
+  /* Python GUI being initialized (not zero only during the initialization)*/
+  static SALOME_PYQT_Module*       myInitModule;
+
+  /* own menus list */
+  struct MenuId
+  {
+    int  id;
+    bool constantMenu;
+    MenuId() : id( -1 ), constantMenu( false ) {}
+    MenuId( const int _id, const bool _constantMenu )
+      : id( _id ), constantMenu( _constantMenu ) {}
+  };
+  typedef QValueList<MenuId>   MenuIdList;
+  typedef QMap<int,MenuIdList> MenuMap;
+  MenuMap                      myMenus;
  
-  enum PyQtGUIAction { PYQT_ACTION_MENU    = 10000000,
-                      PYQT_ACTION_TOOLBAL = 20000000,
-                      PYQT_ACTION_POPUP   = 30000000 };
-
   /* XML resource file parser */
   SALOME_PYQT_XmlHandler*          myXmlHandler;  
   /* windows map*/
@@ -121,6 +115,9 @@ public:
   /* called when study desktop is activated */
   virtual void    studyActivated();
 
+  /* returns default menu group */
+  static int             defaultMenuGroup();
+
   /* working with toolbars : open protected methods */
   int                    createTool( const QString& );
   int                    createTool( const int, const int, const int = -1 );
@@ -129,12 +126,15 @@ public:
   int                    createTool( QAction*, const QString&, const int = -1, const int = -1 );
 
   /* working with menus : open protected methods */
-  int                    createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1 );
-  int                    createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1 );
-  int                    createMenu( const int, const int, const int = -1, const int = -1 );
-  int                    createMenu( const int, const QString&, const int = -1, const int = -1 );
-  int                    createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1 );
-  int                    createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1 );
+  int                    createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( const int, const int, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( const int, const QString&, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1, const bool = false );
+  int                    createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1, const bool = false );
+
+  /* clear given menu */
+  bool                   clearMenu( const int = 0, const int = 0, const bool = true );
 
   /* create separator : open protected method */
   QAction*               createSeparator();
@@ -144,6 +144,12 @@ 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 );
+  void                   setToolShown( const bool );
 
 public slots:
   /* activation */
@@ -160,6 +166,17 @@ public slots:
   void            onGUIEvent();
   void            onGUIEvent( int );
 
+protected:
+  /* Menu processing */
+  bool            hasMenu( const QString&, const int );
+  void            registerMenu( const int, const int, const bool = false );
+  void            unregisterMenu( const int, const int );
+  bool            registered( const int, const int = 0 );
+  bool            isConstantMenu( const int, const int );
+
+protected slots:
+  void            onMenuHighlighted( int, int );
+
 private:
   /* internal initizalition */ 
   void            init        ( CAM_Application* );
@@ -167,15 +184,16 @@ 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 */
   void            contextMenu( const QString&, QPopupMenu* );
   /* GUI event processing */
   void            guiEvent( const int );
-
-  /* add action to the private action map */ 
-  void            addAction   ( const PyQtGUIAction, QAction* );
+  /* Menu highlight processing */
+  void            menuHighlight( const int, const int );
 
   /* initialize a Python subinterpreter */
   void            initInterp  ( int );
index 1956ec3afcf688486df9e3cb2b221ecfa97b5ff7..f25a2ca053f78ef8c8a26f481b82b1c9d605fcf4 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : SALOME_PYQT_PyInterp.cxx
 //  Author : Christian CAREMOLI, Paul RASCLE, EDF
index 1e15494e8ecfd021b24511a4d9d6a0a9c788de69..42ac5d2d7f76c8752d219e01bfb5e46c489fb6f1 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//=============================================================================
-// 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
index 79ac12b9e4b377d4f5bc5010c9e51bcec79ede72..31a845634062ce4b871268dd7d774db51c6dc46a 100644 (file)
@@ -1,11 +1,24 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+# Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
 #
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #  File   : Makefile.in
 #  Author : Nicolas REJNERI
 #  Module : SALOME
-#  $Header$
 
 top_srcdir=@top_srcdir@
 top_builddir=../../..
@@ -101,9 +114,9 @@ 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 -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeDS -lSalomePyQtGUI
+LDFLAGS  += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI
 
 
 # Custom build step: generate C++ wrapping according to $(SIP_FILES)
index d7b887fe673f5e3278d587536df8cc8d9f75cc39..d76d0bd1d774ab015cb3ff5a7c83393f3c996bb6 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//=============================================================================
-// 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"
 
 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<SalomeApp_Application*, SALOME_Selection*> 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,11 +982,38 @@ 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 ) );
 }
 
+/*!
+  SalomePyQt::defaultMenuGroup
+  Returns default menu group
+*/
+class TDefMenuGroupEvent: public SALOME_Event {
+public:
+  typedef int TResult;
+  TResult myResult;
+  TDefMenuGroupEvent() : myResult( -1 ) {}
+  virtual void Execute() {
+    myResult = SALOME_PYQT_Module::defaultMenuGroup();
+  }
+};
+
+/*!
+  \return default menu group
+*/
+int SalomePyQt::defaultMenuGroup()
+{
+  return ProcessEvent( new TDefMenuGroupEvent() );
+}
+
 /*!
   SalomePyQt::createTool
   These methods allow operating with the toolbars:
@@ -1005,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 ) ) );
@@ -1045,10 +1127,10 @@ int SalomePyQt::createTool( QtxAction* a, const QString& tBar, const int id, con
 class CrMenu
 {
 public:
-  CrMenu( const QString& subMenu, const int menu, const int group, const int idx ) 
-    : myCase( 0 ), mySubMenuName( subMenu ), myMenuId( menu ), myGroup( group ), myIndex( idx ) {}
-  CrMenu( const QString& subMenu, const QString& menu, const int group, const int idx ) 
-    : myCase( 1 ), mySubMenuName( subMenu ), myMenuName( menu ), myGroup( group ), myIndex( idx ) {}
+  CrMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx ) 
+    : myCase( 0 ), mySubMenuName( subMenu ), myMenuId( menu ), myId( id ), myGroup( group ), myIndex( idx ) {}
+  CrMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx ) 
+    : myCase( 1 ), mySubMenuName( subMenu ), myMenuName( menu ), myId( id ), myGroup( group ), myIndex( idx ) {}
   CrMenu( const int id, const int menu, const int group, const int idx ) 
     : myCase( 2 ), myId( id ), myMenuId( menu ), myGroup( group ), myIndex( idx ) {}
   CrMenu( const int id, const QString& menu, const int group, const int idx ) 
@@ -1063,9 +1145,9 @@ public:
     if ( module ) {
       switch ( myCase ) {
       case 0:
-        return module->createMenu( mySubMenuName, myMenuId, -1, myGroup, myIndex );
+        return module->createMenu( mySubMenuName, myMenuId, myId, myGroup, myIndex );
       case 1:
-        return module->createMenu( mySubMenuName, myMenuName, -1, myGroup, myIndex );
+        return module->createMenu( mySubMenuName, myMenuName, myId, myGroup, myIndex );
       case 2:
         return module->createMenu( myId, myMenuId, myGroup, myIndex );
       case 3:
@@ -1104,14 +1186,14 @@ public:
     }
   }
 };
-int SalomePyQt::createMenu( const QString& subMenu, const int menu, const int group, const int idx )
+int SalomePyQt::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx )
 {
-  return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, group, idx ) ) );
+  return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, id, group, idx ) ) );
 }
 
-int SalomePyQt::createMenu( const QString& subMenu, const QString& menu, const int group, const int idx )
+int SalomePyQt::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx )
 {
-  return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, group, idx ) ) );
+  return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, id, group, idx ) ) );
 }
 
 int SalomePyQt::createMenu( const int id, const int menu, const int group, const int idx )
@@ -1253,3 +1335,32 @@ int SalomePyQt::actionId( const QtxAction* a )
 {
   return ProcessEvent( new TActionIdEvent( a ) );
 }
+
+/*!
+  SalomePyQt::clearMenu
+  Clears given menu (recursively if necessary)
+*/
+class TClearMenuEvent: public SALOME_Event {
+public:
+  typedef  bool TResult;
+  TResult  myResult;
+  int      myId;
+  int      myMenu;
+  bool     myRemoveActions;
+  TClearMenuEvent( const int id, const int menu, const bool removeActions )
+    : myResult( false ), myId( id ), myMenu( menu ), myRemoveActions( removeActions ) {}
+  virtual void Execute() {
+    if ( SalomeApp_Application* anApp = getApplication() ) {
+      SALOME_PYQT_Module* module = SALOME_PYQT_Module::getInitModule();
+      if ( !module )
+        module = dynamic_cast<SALOME_PYQT_Module*>( anApp->activeModule() );
+      if ( module )
+        myResult = module->clearMenu( myId, myMenu, myRemoveActions );
+    }
+  }
+};
+bool SalomePyQt::clearMenu( const int id, const int menu, const bool removeActions )
+{
+  return ProcessEvent( new TClearMenuEvent( id, menu, removeActions ) );
+}
+
index 51f245f2300d64a5aaf95f0c8c883331a6629cf3..b656cd1c0c19267b5e58ccf67e237d559075a36c 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//=============================================================================
-// 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
@@ -102,6 +94,8 @@ public:
 
   static bool              dumpView( const QString& );
 
+  static int               defaultMenuGroup();
+
   static int               createTool( const QString& );
   static int               createTool( const int,  const int,      const int = -1 );
   static int               createTool( const int,  const QString&, const int = -1 );
@@ -109,9 +103,9 @@ public:
   static int               createTool( QtxAction*, const QString&, const int = -1, const int = -1 );
 
   static int               createMenu( const QString&, const int = -1,
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 );
   static int               createMenu( const QString&, const QString& = QString::null, 
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 );
   static int               createMenu( const int,      const int = -1,
                                       const int = -1, const int = -1 );
   static int               createMenu( const int,      const QString& = QString::null, 
@@ -130,6 +124,9 @@ public:
   static QtxAction*        action( const int );
   static int               actionId( const QtxAction* );
 
+  static bool              clearMenu( const int = 0, const int = 0,
+                                     const bool = true );
+
   static void              addSetting    ( const QString&, const QString&, const double );
   static void              addSetting    ( const QString&, const QString&, const int );
   static void              addSetting    ( const QString&, const QString&, const QString& );
index 3824647dd325f6a3d75c96b640451a44b615951f..dcb6501786d0fec147cca9f9aa74aed89d50ccdc 100644 (file)
@@ -39,7 +39,7 @@ enum MenuName {
   Help        = 7  
 };
 
-enum {
+enum WindowType {
   WT_ObjectBrowser,
   WT_PyConsole,
   WT_LogWindow,
@@ -81,6 +81,8 @@ public:
 
   static bool              dumpView( const QString& );
 
+  static int               defaultMenuGroup();
+
   static int               createTool( const QString& );
   static int               createTool( const int,  const int,      int = -1 );
   static int               createTool( const int,  const QString&, int = -1 );
@@ -88,9 +90,9 @@ public:
   static int               createTool( QtxAction*, const QString&, int = -1, int = -1 );
 
   static int               createMenu( const QString&, const int,
-                                      int = -1,       int = -1 );
+                                      int = -1, int = -1, int = -1 );
   static int               createMenu( const QString&, const QString&, 
-                                      int = -1,       int = -1 );
+                                      int = -1, int = -1, int = -1 );
   static int               createMenu( const int,      const int,
                                       int = -1,       int = -1 );
   static int               createMenu( const int,      const QString&, 
@@ -109,13 +111,16 @@ public:
   static QtxAction*        action( const int );
   static int               actionId( const QtxAction* );
 
+  static bool              clearMenu( int = 0, int = 0,
+                                     bool = true  );
+
   static void              addSetting    ( const QString&, const QString&, const double );
   static void              addSetting    ( const QString&, const QString&, const int /Constrained/ );
   static void              addSetting    ( const QString&, const QString&, const QString& );
   static void              addSetting    ( const QString&, const QString&, const QColor& );
   static int               integerSetting( const QString&, const QString&, int = 0 );
   static double            doubleSetting ( const QString&, const QString&, int = 0 );
-  static bool              boolSetting   ( const QString&, const QString&, bool = 0 );
+  static bool              boolSetting   ( const QString&, const QString&, bool = false );
   static QString           stringSetting ( const QString&, const QString&, const QString& = QString("") );
   static QColor            colorSetting  ( const QString&, const QString&, const QColor& = QColor() );
   static void              removeSetting ( const QString&, const QString& );
index f306399b184aabe9a0bd09a81417f4bcc59fc4db..3d0196f88ada474ff0e9dfd4d5492fe2023dc745 100644 (file)
@@ -39,7 +39,7 @@ enum MenuName {
   Help        = 7  
 };
 
-enum {
+enum WindowType {
   WT_ObjectBrowser,
   WT_PyConsole,
   WT_LogWindow,
@@ -74,13 +74,15 @@ public:
   static void              updateObjBrowser( const int = 0, bool = true );
 
   static QString           getFileName         ( QWidget*, const QString&, const QStringList&, const QString&, bool ) /ReleaseGIL/ ;
-  static QStringList       getOpenFileNames    ( QWidget*, const QString&, const QStringList&, const QString& );
-  static QString           getExistingDirectory( QWidget*, const QString&, const QString& );
+  static QStringList       getOpenFileNames    ( QWidget*, const QString&, const QStringList&, const QString& ) /ReleaseGIL/ ;
+  static QString           getExistingDirectory( QWidget*, const QString&, const QString& ) /ReleaseGIL/ ;
 
   static void              helpContext( const QString&, const QString& );
 
   static bool              dumpView( const QString& );
 
+  static int               defaultMenuGroup();
+
   static int               createTool( const QString& );
   static int               createTool( const int,  const int,      const int = -1 );
   static int               createTool( const int,  const QString&, const int = -1 );
@@ -88,9 +90,9 @@ public:
   static int               createTool( QtxAction*, const QString&, const int = -1, const int = -1 );
 
   static int               createMenu( const QString&, const int,
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 );
   static int               createMenu( const QString&, const QString&, 
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 );
   static int               createMenu( const int,      const int,
                                       const int = -1, const int = -1 );
   static int               createMenu( const int,      const QString&, 
@@ -99,7 +101,6 @@ public:
                                       const int = -1, const int = -1 );
   static int               createMenu( QtxAction*,     const QString&, const int = -1, 
                                       const int = -1, const int = -1 );
-
   static QtxAction*        createSeparator();
 
   static QtxAction*        createAction( const int, const QString&, 
@@ -109,13 +110,16 @@ public:
   static QtxAction*        action( const int );
   static int               actionId( const QtxAction* );
 
+  static bool              clearMenu( const int = 0, const int = 0,
+                                     const bool = true );
+
   static void              addSetting    ( const QString&, const QString&, const double );
   static void              addSetting    ( const QString&, const QString&, const int /Constrained/ );
   static void              addSetting    ( const QString&, const QString&, const QString& );
   static void              addSetting    ( const QString&, const QString&, const QColor& );
   static int               integerSetting( const QString&, const QString&, const int = 0 );
   static double            doubleSetting ( const QString&, const QString&, const int = 0 );
-  static bool              boolSetting   ( const QString&, const QString&, const bool = 0 );
+  static bool              boolSetting   ( const QString&, const QString&, const bool = false );
   static QString           stringSetting ( const QString&, const QString&, const QString& = QString("") );
   static QColor            colorSetting  ( const QString&, const QString&, const QColor& = QColor() );
   static void              removeSetting ( const QString&, const QString& );
index 19142ae1bdda9f05275e3568bc80e8c5eb5781a3..80cc9daf3e79dc9c300b5b69e7ddb62168c55d8b 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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
 
index 0c8e1764d402e06687cce089b7a51669728ea718..ccf9b841abee3f1da60b4b0a9ce5ffb114865257 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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 ) );
index f335e21e270eead581f9badc398ea9bc6cee63e8..456211227b3359593c5b8fecbd1917f524b4d8b5 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 05121fff1418b634ceb3c1d7d35ffe573366b59c..8ad7a3ae05ad1ffc62c41d5f3dafc0dfc105a0c4 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 086d5e7fefb2a49b1d4312ac1f17b04d63cc744c..25170ebfd9db25ca7495ca1096f8b905d707e77d 100755 (executable)
@@ -1,9 +1,30 @@
+#  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/ or email : webmaster.salome@opencascade.com
+#
 """
 
 """
 
 import SALOME_Session_idl
 
+from import_hook import register_name
+register_name("SalomePyQt")
+   
 # this function is required
 
 def init_shared_modules():
index 58a49bec3c51da78d90ec1806bef720a7c8040ea..e214bedf808386cb5810a1668238144a14fbb99a 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index 988ad4cbc96c7a86311902b7d506ab7081ef7bc3..a96601f7e395e06f9d52870e9775dc0496586730 100755 (executable)
@@ -15,7 +15,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
diff --git a/src/SALOME_SWIG/salome_test.py b/src/SALOME_SWIG/salome_test.py
deleted file mode 100755 (executable)
index 75e5f0b..0000000
+++ /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);
index 56bdd9bf50cf3fadcf3b434b9e286780e00c7e04..3513150283f0f9a015b703b02d70386f3cba4f76 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #==============================================================================
 #  File      : supervisionexample.py
 #  Created   : 23 nov 2001
index 8c56bb1f2efc86a77288b9060205ae8927fd7c83..bf9e5b7461bb52d564fefd173ef27f85b566c206 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 
 # Generated python file of Graph GraphGeom2Essai
 
index 689567e2c2c73709e11b3b90527a18c54c6b6a71..78fa2e347599147f47a48c50b92c0c643bca23ce 100755 (executable)
@@ -1,6 +1,20 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+# Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
 #
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #  File   : test_big_table.py
 #  Author : Vadim SANDLER
index e7023e470e17164998a0291cd8b93f085ef53d8b..98de03f1e8351cba38fc977184243e40797f68a5 100755 (executable)
@@ -1,6 +1,20 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+# Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
 #
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #  File   : visu_many_objects.py
 #  Author : Vadim SANDLER
index 7842a0ecdc3a5062f0aec2aceaf56013d4f70405..dcc18c92211bf38046c061824095b378fce17f65 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index c1d58d997f7c01c9048afa5534b78547d22fbe69..0727594ceb20a542693959c843dc9e32130a6080 100755 (executable)
@@ -1,6 +1,20 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+# Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
 #
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #  File   : test_table.py
 #  Author : Vadim SANDLER
index ce3816891a8aab629371656aeda2b8ae9a1b37b5..18f091546c602af774a43e95e9c501b1f1e14b66 100755 (executable)
@@ -15,7 +15,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index 36b2aa6970594e3e1bd3ec105e38e7e3d4da78df..f1ad967785017ccf273c87fac0df96758ca01843 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Alexander Solovyov(OCN)
 #  Module : SOCC
index c5f6322388d3ef1379c8b40aea83e4f888eb7fbc..99e77291a09b1821e7ecf3688bb3966275ea955e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifdef WNT
 #ifdef SOCC_EXPORTS
index c16368dfa3a1266fb9a2339b10b69242d709a037..eb2cb6821bdfe493c4af96a80e8084845c5ba1cc 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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() == Standard_True;
 }
 
-//=================================================================
 /*!
- *  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;
index 1e7706342236dc2f9d06c4827ff9088faaf7b0c8..06fbce141a890e131b8cc45405fce4ccb69e7356 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index b199cceb4eee2ce07c81e190a48b8924e3335107..8d425a47c63d9d753e5dc20e575a0bd979a22b6e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SOCC_ViewModel.h"
 
@@ -66,7 +66,7 @@
   // 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); 
+//  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
 //  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 )
 {
@@ -124,6 +137,11 @@ bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj,
   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 )
 {
@@ -148,6 +166,10 @@ bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj,
   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;
@@ -166,6 +188,12 @@ bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj )
   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 )
 {
@@ -186,6 +214,12 @@ void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj,
   }
 }
 
+/*!
+  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 )
 {
@@ -206,6 +240,12 @@ void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)&
   }
 }
 
+/*!
+  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 )
 {
@@ -226,6 +266,11 @@ void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj,
   }
 }
 
+/*!
+  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 )
 {
@@ -259,10 +304,11 @@ void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj,
   }
 }
 
-//=======================================================================
-// name    : Display
-// Purpose : Display presentation
-//=======================================================================
+
+/*!
+  Display presentation
+  \param prs - presentation
+*/
 void SOCC_Viewer::Display( const SALOME_OCCPrs* prs )
 {
   // try do downcast object
@@ -379,10 +425,12 @@ void SOCC_Viewer::Display( const SALOME_OCCPrs* prs )
   }
 }
 
-//=======================================================================
-// name    : Erase
-// Purpose : Erase presentation
-//=======================================================================
+
+/*!
+  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
@@ -428,10 +476,11 @@ void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced )
   }
 }
 
-//=======================================================================
-// name    : EraseAll
-// Purpose : Erase all presentations
-//=======================================================================
+
+/*!
+  Erase all presentations
+  \param forced - removes all objects from context
+*/
 void SOCC_Viewer::EraseAll( const bool forced )
 {
   // get SALOMEDS Study
@@ -480,10 +529,10 @@ void SOCC_Viewer::EraseAll( const bool forced )
     Repaint();
 }
 
-//=======================================================================
-// name    : CreatePrs
-// Purpose : Create presentation corresponding to the entry
-//=======================================================================
+/*!
+  Create presentation corresponding to the entry
+  \param entry - entry
+*/
 SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry )
 {
   SOCC_Prs* prs = new SOCC_Prs();
@@ -513,10 +562,9 @@ SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry )
   return prs;
 }
 
-//=======================================================================
-// name    : LocalSelection
-// Purpose : Activates selection of sub shapes
-//=======================================================================
+/*!
+  Activates selection of sub shapes
+*/
 void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode )
 {
   Handle(AIS_InteractiveContext) ic = getAISContext();
@@ -559,10 +607,9 @@ void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode
   }
 }
 
-//=======================================================================
-// name    : GlobalSelection
-// Purpose : Deactivates selection of sub shapes
-//=======================================================================
+/*!
+  Deactivates selection of sub shapes
+*/
 void SOCC_Viewer::GlobalSelection( const bool update ) const
 {
   Handle(AIS_InteractiveContext) ic = getAISContext();
@@ -574,29 +621,25 @@ void SOCC_Viewer::GlobalSelection( const bool update ) const
   }
 }
 
-//=======================================================================
-// name    : BeforeDisplay
-// Purpose : Axiluary method called before displaying of objects
-//=======================================================================
+/*!
+  Auxiliary 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
-//=======================================================================
+/*!
+  Auxiliary 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
-//=======================================================================
+/*!
+  Get new and current trihedron size corresponding to the current model size
+*/
 bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize )
 {
   theNewSize = 100;
@@ -628,7 +671,7 @@ bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize )
 
   float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.);
 
-  static double EPS = 5.0E-3;
+  static float EPS = 5.0E-3;
   theSize = getTrihedron()->Size();
   theNewSize = aMaxSide*aSizeInPercents / 100.0;
 
@@ -636,20 +679,20 @@ bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize )
          fabs( theNewSize - theSize) > theNewSize * EPS;
 }
 
-//=======================================================================
-// name    : Repaint
-// Purpose : 
-//=======================================================================
+
+/*!
+  Updates current viewer
+*/
 void SOCC_Viewer::Repaint()
 {
 //  onAdjustTrihedron();
   getViewer3d()->Update();
 }
 
-//=======================================================================
-// name    : createView
-// Purpose : create SOCC_ViewWindow
-//=======================================================================
+
+/*!
+  create SOCC_ViewWindow
+*/
 SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop )
 {
   SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this);
index bf57aa8d72c613dfd8a55907f64bc2cbd185057e..6d2d040258bbdba80f30c9e67bfdc751962237f5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SOCC_VIEWMODEL_H
 #define SOCC_VIEWMODEL_H
index ce28624a01bd9e13fb603a0df7e48b483ac50535..2e519687b3f10c88cc49826ddebe071f7bcbbf0d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SOCC_ViewWindow.h"
 
@@ -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;
 }
index 7b4f225514620f18b7a8c1b89ef11b41f281fe22..e30afe5110997c20e13d8acb62b22cd14591ef0d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SOCC_VIEWWINDOW_H
 #define SOCC_VIEWWINDOW_H
@@ -35,7 +35,7 @@ public:
   virtual ~SOCC_ViewWindow();
   
 protected:
-  virtual void      action( const int );
+  virtual bool      action( const int );
 
 };
 
index d0a8d16044e78e359aafb14d6591b1ff1f6e1f5f..0304abbeed2c4d31f005a4b1d09bdf6b6241e9dc 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # source path
 top_srcdir=@top_srcdir@
 top_builddir=../..
@@ -27,20 +45,8 @@ 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) -I$(KERNEL_ROOT_DIR)/include/salome
-LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lsuit -lPlot2d -lSalomePrs
+CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS)
+LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs
 
 
 @CONCLUDE@
index aa9d5fec266d6a050eb74d4ca91fc78ff7c51ea8..39e4c1245dd0b4742db04636d337afe0abd8014f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifdef WNT
 #ifdef SPLOT2D_EXPORTS
index e6b2c5b8312a784c16f156332a27460e5fe0eb2c..87439441fe26e010215289adc0b8f5fc8e18f3d9 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_Curve.cxx
 //  Author : Sergey RUIN
@@ -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;
index 21ebc8a940bed4f9f68805080c891e8a9fce5a4d..f75519ead0557f12f6ebb8c5364aa4c83d91ae53 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_Curve.h
 //  Author : Sergey RUIN
index 38756328ce51816a32a416e139e0c9c3f7915a2b..68739a0c6f3d61c12ca8ec6e24b2eaf54903bbd6 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_Prs.cxx
 //  Author : Sergey RUIN
 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()
 { 
 }
index 65f1743eee8082bd51020afbd276c7780142dd01..77e878172034a7a6c28912631f5e1c8d3954b6a4 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_Prs.h
 //  Author : Sergey RUIN
index 554927ff59508645b8213cf08bc822516c7d45f4..4ac94388f3f518f1c2aa64a648a8beff54f72cd1 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_Viewer.cxx
 //  Author : Sergey RUIN
@@ -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 )
index 09005da78ee20fa0e95bf802a9843b08d1f433e8..c9968c0550988c94494882bb3dd9881b63336121 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SPlot2d_ViewModel.h
 //  Author : Sergey RUIN
index 7bcec25613c5698e4b25cfedf1b80d20e6ed282a..cfd6deca0870088ff8c1b8ac9199ce147db93bfe 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : STD
index d74b12e099d423cd596e1685d57b1ba02f0080b3..caeee3b3fa21a3976ba25bfc1568140c24a7e58d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_H
 #define STD_H
index a3ab1739eb2fd06afa0b4dec4ebd6e2700d6c67e..5a74b47853b76b1eb51074c6900452c9da893a37 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_Application.h"
 
@@ -199,32 +199,32 @@ void STD_Application::createActions()
 
   // Create menus
 
-  int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1, -1, 0 );
-  int editMenu = createMenu( tr( "MEN_DESK_EDIT" ), -1, -1, 10 );
-  int viewMenu = createMenu( tr( "MEN_DESK_VIEW" ), -1, -1, 10 );
-  int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1, 1000 );
+  int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1, MenuFileId, 0 );
+  int editMenu = createMenu( tr( "MEN_DESK_EDIT" ), -1, MenuEditId, 10 );
+  int viewMenu = createMenu( tr( "MEN_DESK_VIEW" ), -1, MenuViewId, 10 );
+  int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, MenuHelpId, 1000 );
 
   // Create menu items
 
-  createMenu( FileNewId, fileMenu, 0 );
-  createMenu( FileOpenId, fileMenu, 0 );
-  createMenu( FileLoadId, fileMenu, 0 );  //SRN: BugID IPAL9021, add a menu item "Load"
-  createMenu( FileCloseId, fileMenu, 0 );
-  createMenu( separator(), fileMenu, -1, 0 );
-  createMenu( FileSaveId, fileMenu, 0 );
+  createMenu( FileNewId,    fileMenu, 0 );
+  createMenu( FileOpenId,   fileMenu, 0 );
+  createMenu( FileLoadId,   fileMenu, 0 );  //SRN: BugID IPAL9021, add a menu item "Load"
+  createMenu( FileCloseId,  fileMenu, 0 );
+  createMenu( separator(),  fileMenu, -1, 0 );
+  createMenu( FileSaveId,   fileMenu, 0 );
   createMenu( FileSaveAsId, fileMenu, 0 );
-  createMenu( separator(), fileMenu, -1, 0 );
+  createMenu( separator(),  fileMenu, -1, 0 );
 
-  createMenu( separator(), fileMenu );
-  createMenu( FileExitId, fileMenu );
+  createMenu( separator(),  fileMenu );
+  createMenu( FileExitId,   fileMenu );
 
-  createMenu( EditCopyId, editMenu );
+  createMenu( EditCopyId,  editMenu );
   createMenu( EditPasteId, editMenu );
   createMenu( separator(), editMenu );
 
-  createMenu( ViewWindowsId, viewMenu );
+  createMenu( ViewWindowsId,   viewMenu );
   createMenu( ViewStatusBarId, viewMenu );
-  createMenu( separator(), viewMenu );
+  createMenu( separator(),     viewMenu );
 
   createMenu( HelpAboutId, helpMenu );
   createMenu( separator(), helpMenu );
@@ -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() );
@@ -547,8 +551,8 @@ void STD_Application::setEditEnabled( bool theEnable )
 
   for ( int i = EditCopyId; i <= EditPasteId; i++ )
   {
-    mMgr->setShown( i, myEditEnabled );
-    tMgr->setShown( i, myEditEnabled );
+    mMgr->setShown( mMgr->actionId(action(i)), myEditEnabled );
+    tMgr->setShown( tMgr->actionId(action(i)), myEditEnabled );
   }
 }
 
@@ -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();
index c8e3b4ad59d0c844bca607902f3b4b62c1966c77..b6ca7fc08d476827e21fbb52f836329274c0b4f9 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_APPLICATION_H
 #define STD_APPLICATION_H
@@ -120,9 +120,19 @@ private slots:
   virtual void          onViewManagerActivated( SUIT_ViewManager* );
 
 protected:
-  enum {  FileNewId, FileOpenId, FileCloseId, FileSaveId, FileSaveAsId,
-          FileExitId, EditCutId, EditCopyId, EditPasteId, ViewStatusBarId,
-          NewWindowId, HelpAboutId, ViewWindowsId, FileLoadId, UserID };
+  enum {  MenuFileId = 1,
+          MenuViewId = 2,
+          MenuEditId = 3,
+          MenuHelpId = 7
+       };
+
+  enum {  FileNewId,   FileOpenId,   FileLoadId, FileCloseId,
+         FileSaveId,  FileSaveAsId, FileExitId, 
+         ViewStatusBarId, ViewWindowsId, NewWindowId,
+          EditCutId, EditCopyId, EditPasteId,
+          HelpAboutId,
+         UserID
+       };
  
 protected:
   virtual void          createActions();
index a06d8c6c58887321140a8a92da93187d474c1539..ff09c551ac04d9ff7654b89d94feabb91e1c58c1 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_CloseDlg.h"
 
@@ -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();
index a7ec4616d117e820bb4da48d191221ce000279db..6975e88f474340aab9b4de3da4771fe1a12c791c 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_CloseDlg_H
 #define STD_CloseDlg_H
index b8a655249a90e7f3d13db13984c6f9d77149f1d5..5dc4c0d5a93d77a22a56799c085aba942bedfa6b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_LoadStudiesDlg.h"
 
index 141d064da32024591ccd12209afe5d4a79070cf7..268b161352d9b1f9b55992c481a331998972b990 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_LOADSTUDIESDLG_H
 #define STD_LOADSTUDIESDLG_H
index aec25bb597857eaf9ac523da10171d3e9d0ab418..9a446ab64da6664db95ce41ecf7e3dd395edcc3f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_MDIDesktop.h"
 
@@ -183,7 +183,7 @@ void STD_MDIDesktop::createActions()
   if ( !mMgr )
     return;
 
-  int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 );
+  int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100, MenuWindowId );
   mMgr->insert( myWorkspaceAction, winMenuId, -1 );
   mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 );
 }
index 25ec9cb0800c8252815e098f0af0ae5833e4eaa9..f4136444d4088d23353cf44a27e86479d5727a82 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_MDIDESKTOP_H
 #define STD_MDIDESKTOP_H
@@ -37,6 +37,7 @@ class STD_EXPORT STD_MDIDesktop: public SUIT_Desktop
   Q_OBJECT
 
 public:
+  enum { MenuWindowId = 6 };
   enum { Cascade, Tile, HTile, VTile };
 
 public:
index a3a04ca5e8d4433055986c04e3ac856b866ccd10..9bcc92a5625e5da44192680984146f40be676910 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_SDIDesktop.h"
 
index 91184b8ce59b193267020796c430d251feb804cd..78b1bb78d2a7f58d0ff531c8262eee0933dbe54c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_SDIDESKTOP_H
 #define STD_SDIDESKTOP_H
index 24dfd5ccf27a321ceb42002a9c6ecac05c578fde..64518803523ec5598c2f4835b6840e9f53ad38ac 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "STD_TabDesktop.h"
 
@@ -177,7 +177,7 @@ void STD_TabDesktop::createActions()
   if ( !mMgr )
     return;
 
-  int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 );
+  int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100, MenuWindowId );
   mMgr->insert( myWorkstackAction, winMenuId, -1 );
   mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 );
 }
index f3b1d1282606fd44bf044d764800b4b997df7e52..aa63db0654800971b76cc86ef8a8d9ad7b21a699 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef STD_TABDESKTOP_H
 #define STD_TABDESKTOP_H
@@ -38,6 +38,7 @@ class STD_EXPORT STD_TabDesktop: public SUIT_Desktop
   Q_OBJECT
 
 public:
+  enum { MenuWindowId = 6 };
   enum { VSplit, HSplit };
 
 public:
index 08410020cc2a0a552baa8692771d1cd24b9b9db7..71e0a99479bfa961491ea177c0c9ea60a5909998 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index 2c5d9fd37858b8f4f920e5bfea134f9b65762f2e..eef69e683e788434578dc18b3d99819072f25d8f 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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"
index a6bab14a7fd9c5d5da28ae290b4f156805148bda..bc25b713220bd92209c93f3bcd828bcf63fd2dbf 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : suit
index b84cf06ef711b86e57d5c02264ff78bb30aab9ab..82940286ad934effc76e4d8aa5a8b7de6a85d692 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_H
 #define SUIT_H
index a72a317e1c0c002cdae784615b34a14451583ca7..7bc7b5167d5a6865851fd0ba03efe82c1228df94 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // SUIT_Accel.cxx: implementation of the SUIT_Accel class.
-//
-//////////////////////////////////////////////////////////////////////
 
 #include "SUIT_Accel.h"
-#include "SUIT_Desktop.h"
-#include "SUIT_ViewManager.h"
 #include "SUIT_ViewWindow.h"
+#include "SUIT_ViewManager.h"
 #include "SUIT_ViewModel.h"
 
-#include <qaccel.h>
+#include <qobjectlist.h>
+#include <qapplication.h>
+#include <qnamespace.h>
 
-/*!\class SUIT_Accel
- * Class handles keyboard accelerator bindings.
- */
 
-/*! Constructor.*/
-SUIT_Accel::SUIT_Accel(SUIT_Desktop* theDesktop)
-  : QObject( theDesktop, "SUIT_Accel" ),
-    myDesktop( theDesktop )
+SUIT_Accel* SUIT_Accel::myself = 0;
+
+/*! Constructor [private].*/
+SUIT_Accel::SUIT_Accel()
+  : QObject( qApp, "SUIT_Accel" )
 {
-  myAccel = new QAccel( theDesktop, "SUIT_Accel_interal_qaccel" );
-  connect( myAccel, SIGNAL( activated( int ) ), this, SLOT( onActivated( int ) ) );
+  qApp->installEventFilter( this );
 }
 
-/*! Destructor.*/
-SUIT_Accel::~SUIT_Accel()
+/*! getAccel() : public interface for SUIT_Accel object.  Only one instance is created and returned. */
+SUIT_Accel* SUIT_Accel::getAccel() 
 {
+  if ( !myself )
+    myself = new SUIT_Accel();
+  return myself;
 }
 
-/*! setActionKey  assign a ceratain action for a key accelerator */
+/*! setActionKey() : assign a ceratain action for a key accelerator */
 void SUIT_Accel::setActionKey( const int action, const int key, const QString& type )
-{    
-  // 1. get or generate interal "id" of action
-  int id = myAccel->findKey( key );
-  if ( id == -1 )
-    id = myAccel->insertItem( key );
-
+{
   IdActionMap idActionMap;
   if ( myMap.contains( type ) )
     idActionMap = myMap[type];
 
-  idActionMap[id] = action;
+  idActionMap[key] = action;
   myMap[type] = idActionMap;
+
+  myOptMap[key] = true;
+}
+
+/*! unsetActionKey() : unregister a certain key accelerator */
+void SUIT_Accel::unsetActionKey( const int key, const QString& type )
+{
+  if ( myMap.contains( type ) ) {
+    IdActionMap idActionMap = myMap[type];
+    if ( idActionMap.contains( key ) ) {
+      idActionMap.erase( key );
+      myMap[type] = idActionMap;
+    }
+  }
 }
 
-/*! onActivated  slot called when a registered key accelerator was activated */
-void SUIT_Accel::onActivated( int id )
+/*! getParentViewWindow() : returns given object or any of its parents-grandparents-.. if it is a SUIT_ViewWindow */ 
+SUIT_ViewWindow* getParentViewWindow( const QObject* obj )
 {
-  if ( myDesktop ) {
-    if ( SUIT_ViewWindow* vw = myDesktop->activeWindow() ) {
+  if ( obj ) {
+    if ( obj->inherits( "SUIT_ViewWindow" ) )
+      return (SUIT_ViewWindow*)obj;
+    else
+      return getParentViewWindow( obj->parent() );
+  }
+  return 0;
+}
+
+/*! getKey() : returns integer key code (with modifiers) made of key pressed 'inside' given event */
+int getKey( QKeyEvent *keyEvent )
+{
+  int key = keyEvent->key(), 
+    state = keyEvent->state();
+  if ( state & Qt::ShiftButton )   
+    key += Qt::SHIFT;
+  if ( state & Qt::ControlButton ) 
+    key += Qt::CTRL;
+  if ( state & Qt::AltButton )     
+    key += Qt::ALT;
+  if ( state & Qt::MetaButton )    
+    key += Qt::META;
+  return key;
+}
+
+/*! getAccelKey() : returns key pressed if 1) event was KeyPress 2) pressed key is a registered accelerator */ 
+int SUIT_Accel::getAccelKey( QEvent *event )
+{
+  if ( event && event->type() == QEvent::KeyPress ) {
+    int key = ::getKey( (QKeyEvent*)event );
+    if ( myOptMap.contains( key ) )
+      return key;
+  }
+  return 0;
+}
+
+/*! eventFilter() : filtering ALL events of QApplication. */
+bool SUIT_Accel::eventFilter( QObject *obj, QEvent *event )
+{
+  const int key = getAccelKey( event );
+  if ( key ) {
+    SUIT_ViewWindow* vw = ::getParentViewWindow( obj ); 
+    if ( vw ) {
       QString type = vw->getViewManager()->getViewModel()->getType();
-      if (  myMap.contains( type ) ) {
+      if ( myMap.contains( type ) ) {
        IdActionMap idActionMap = myMap[type];
-       if ( idActionMap.contains( id ) ) {
-         vw->onAccelAction( idActionMap[id] );
+       if ( idActionMap.contains( key ) ) {
+         return vw->onAccelAction( idActionMap[key] );
        }
       }
     }
   }
+  return false;
 }
-
index 78c9bff30161c9102ecf692682cc113ac533e63f..fdc9cd384c97bc4055bdb29243d26817ef395845 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // SUIT_Accel.h: interface for the SUIT_Accel class.
-//
-//////////////////////////////////////////////////////////////////////
 
 #ifndef SUIT_Accel_h 
 #define SUIT_Accel_h
 #include <qstring.h>
 #include <qmap.h>
 
-class QAccel;
-class SUIT_Desktop;
-
+/*!
+  \class SUIT_Accel
+  Manager of keyboard accelerator bindings
+*/
 class SUIT_EXPORT SUIT_Accel: public QObject
 {
   Q_OBJECT
@@ -53,21 +52,28 @@ public:
   };
 
 public:
-  SUIT_Accel( SUIT_Desktop* theDesktop );
-  virtual ~SUIT_Accel();
+  static SUIT_Accel* getAccel();
 
   void setActionKey( const int action, const int key, const QString& type );
+  void unsetActionKey( const int key, const QString& type );
 
-protected slots:
-  void onActivated( int );
+protected:
+  bool eventFilter( QObject *, QEvent * );
 
 private:
-  QAccel* myAccel; 
-  SUIT_Desktop* myDesktop;
+  SUIT_Accel();
+
+  int getAccelKey( QEvent* ); // returns key pressed if 1) event was KeyPress 
+                              // 2) pressed key is a registered accelerator 
 
-  typedef QMap<int, int> IdActionMap; // internal_id - to - action map
+  typedef QMap<int, int> IdActionMap; // key - to - action_id map
   typedef QMap<QString, IdActionMap> ViewerTypeIdActionMap; // viewer_type - to - IdActionMap
   ViewerTypeIdActionMap myMap;
+
+  QMap<int, bool> myOptMap; // key - to - <not_used> map, used for optimazation.  all registered keys (accelerators)
+                            // are stored in this map.
+
+  static SUIT_Accel* myself;
 };
 
 #endif
index 8c24cf59a00bee393801a2d5bc51ef22dfb1ced2..d56f01705fc1310dbb6a30be466f4511aef82b18 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_ActionOperation.h"
 
index c9e9d774d72e5c0d3486c17cbefa15531324c791..bed11e318b3be184d977bf49295a4afe7dc10153 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_ACTIONOPERATION_H
 #define SUIT_ACTIONOPERATION_H
index f187bfabd84b2bc9802b57fd76f6285e3b8f63ec..a4a21d8623fb062d71e8f0c460382553fb8edbf4 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Application.h"
 
@@ -30,6 +30,9 @@
 #include <QtxActionMenuMgr.h>
 #include <QtxActionToolMgr.h>
 
+/*!
+  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,155 +260,288 @@ 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() )
     return -1;
 
-  int regId = desktop()->toolMgr()->registerAction( a, id );
-  return desktop()->toolMgr()->insert( regId, tBar, idx );
+  int regId = registerAction( id, a );
+  int intId = desktop()->toolMgr()->insert( a, tBar, idx );
+  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() )
     return -1;
 
-  return desktop()->toolMgr()->insert( a, tBar, idx );
+  int regId = registerAction( id, a );
+  int intId = desktop()->toolMgr()->insert( a, tBar, idx );
+  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() )
     return -1;
 
-  return desktop()->toolMgr()->insert( id, tBar, idx );
+  int intId = desktop()->toolMgr()->insert( action( id ), tBar, 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() )
     return -1;
 
-  return desktop()->toolMgr()->insert( id, tBar, idx );
+  int intId = desktop()->toolMgr()->insert( action( id ), tBar, idx );
+  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 )
 {
   if ( !desktop() || !desktop()->menuMgr() )
     return -1;
 
-  return desktop()->menuMgr()->insert( subMenu, menu, group, index );
+  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 )
 {
   if ( !desktop() || !desktop()->menuMgr() )
     return -1;
 
-  return desktop()->menuMgr()->insert( subMenu, menu, group, index );
+  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() )
     return -1;
 
-  int regId = desktop()->menuMgr()->registerAction( a, id );
-  return desktop()->menuMgr()->insert( regId, menu, group, index );
+  int regId = registerAction( id, a );
+  int intId = desktop()->menuMgr()->insert( a, menu, group, index );
+  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() )
     return -1;
 
-  int regId = desktop()->menuMgr()->registerAction( a, id );
-  return desktop()->menuMgr()->insert( regId, menu, group, index );
+  int regId = registerAction( id, a );
+  int intId = desktop()->menuMgr()->insert( a, menu, group, index );
+  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() )
     return -1;
 
-  return desktop()->menuMgr()->insert( id, menu, group, index );
+  int intId = desktop()->menuMgr()->insert( action( id ), menu, group, index );
+  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() )
     return -1;
 
-  return desktop()->menuMgr()->insert( id, menu, group, index );
+  int intId = desktop()->menuMgr()->insert( action( id ), menu, group, index );
+  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
 {
-  SUIT_Application* that = (SUIT_Application*)this;
-  SUIT_Desktop* desk = that->desktop();
-  if ( !desk )
-    return 0;
-
   QAction* a = 0;
-  if ( desk->menuMgr() )
-    a = desk->menuMgr()->action( id );
-  if ( !a && desk->toolMgr() )
-    a = desk->toolMgr()->action( id );
+  if ( myActionMap.contains( id ) )
+    a = myActionMap[id];
   return a;
 }
 
+/*!
+  \return SUIT identificator of action
+  \param a - action
+*/
 int SUIT_Application::actionId( const QAction* a ) const
 {
-  SUIT_Application* that = (SUIT_Application*)this;
-  SUIT_Desktop* desk = that->desktop();
-  if ( !desk )
-    return 0;
-
   int id = -1;
-  if ( desk->menuMgr() )
-    id = desk->menuMgr()->actionId( a );
-  if ( id == -1 && desk->toolMgr() )
-    id = desk->toolMgr()->actionId( a );
+  for ( QMap<int, QAction*>::ConstIterator it = myActionMap.begin(); 
+       it != myActionMap.end() && id == -1;
+       ++it ) {
+    if ( it.data() == a )
+      id = it.key();
+  }
   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 )
@@ -345,20 +557,46 @@ QAction* SUIT_Application::createAction( const int id, const QString& text, cons
   return a;
 }
 
-void SUIT_Application::registerAction( const int id, QAction* 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 );
+  if ( ident != -1 )
+    return ident;
+
+  static int generatedId = -1;
+  ident = id == -1 ? --generatedId : id;
+
+  if ( action( ident ) ) 
+    qWarning( "Action registration id is already in use: %d", ident );
+
+  myActionMap.insert( ident, a );
+
   if ( desktop() && desktop()->menuMgr() )
-    desktop()->menuMgr()->registerAction( a, id );
+    desktop()->menuMgr()->registerAction( a );
 
   if ( desktop() && desktop()->toolMgr() )
-    desktop()->toolMgr()->registerAction( a, id );
+    desktop()->toolMgr()->registerAction( 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 );
index b630177e6bb601199b33754ad838381fb7a655ac..72dc89363a4efe379f4923c74c642723fcbe7a11 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_APPLICATION_H
 #define SUIT_APPLICATION_H
@@ -146,7 +146,7 @@ protected:
   static QAction*       separator();
   QAction*              action( const int ) const;
   int                   actionId( const QAction* ) const;
-  void                  registerAction( const int, QAction* );
+  int                   registerAction( const int, QAction* );
   QAction*              createAction( const int, const QString&, const QIconSet&, const QString&,
                                       const QString&, const int, QObject* = 0,
                                       const bool = false, QObject* = 0, const char* = 0 );
@@ -157,6 +157,7 @@ protected slots:
 private:
   SUIT_Study*           myStudy;
   SUIT_Desktop*         myDesktop;
+  QMap<int, QAction*>   myActionMap;
 
   QLabel*               myStatusLabel;
 };
index 36e1985da07943959419226fe3b13a222d4d1549..fd37969fb57298ca4eadddc4b7d867819b562fc7 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // 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_
index afc3446f3f43daad7ea5db8058f0532b4d1b3280..1082579fc137817c41e73b3aab5100de6ca489e5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_DataObject.h"
 
@@ -22,8 +22,6 @@
 
 #include "SUIT_DataObjectKey.h"
 
-#include <iostream> // for cout in dump()
-
 /*!
     Constructor
 */
@@ -466,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;
@@ -491,7 +495,7 @@ SUIT_DataObjectKey* SUIT_DataObject::key() const
 void SUIT_DataObject::dump( const int indent ) const
 {
   QString strIndent = QString().fill( ' ', indent ); // indentation string 
-  std::cout << strIndent << name() << std::endl;     // dump to cout
+  printf( "%s%s\n", strIndent.latin1(), name().latin1() );
   for ( DataObjectListIterator it( myChildren ); it.current(); ++it ) // iterate all children
     it.current()->dump( indent + 2 );  // dump every child with indent + 2 spaces
 }
index bb14608c30c0645dbbaf9cafb42607c1bff2a4fc..01f0ffa599545604e7aa0cc7c9cfa8bbdc40fffc 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_DATAOBJECT_H
 #define SUIT_DATAOBJECT_H
@@ -37,7 +37,9 @@ typedef QPtrListIterator<SUIT_DataObject> 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
index 09a2c8bc21878ce1b95d7da2092cd11fc1d01417..c5f66be5cee0a34c9e45e940d9b4b4bb6d693e75 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_DataObjectIterator.h"
 
index 45b8f7082368fe15175a7954fc16813fca46fd9d..e51a23abfdb3fad64370ad1647357ddda27e9623 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_DATAOBJECT_ITERATOR_H
 #define SUIT_DATAOBJECT_ITERATOR_H
 #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:
index 477ebd2f9b3705fce8c3af84f6c91a66f58320c2..01a91404ab3c2a14676e1dedc4fee1ade74a995e 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_DataObjectKey.h"
 
index 40aea1454dc0828fe3dc83c959aa12b0a49b117d..9f4227d488a3dae21d1535f93f4df41b2b46ccc9 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_DATAOBJECTKEY_H
 #define SUIT_DATAOBJECTKEY_H
index 28ceb5153309429119247351d051ca54de0ebada..826bd89bfa439b15b6f134fd46b1cf126cf6f862 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_DataOwner.h"
 
 #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<SUIT_DataOwnerPtr>(),
     mySkipEqual( true )
 {
 }
 
-//====================================================================
-//! Constructor (default)
-//====================================================================
+/*!
+  Constructor (default)
+*/
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqual )
   : QValueList<SUIT_DataOwnerPtr>(),
     mySkipEqual( skipAllEqual )
 {
 }
 
-//====================================================================
-//! Constructor (copy)
-//====================================================================
+/*!
+  Constructor (copy)
+*/
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
   : QValueList<SUIT_DataOwnerPtr>( l ),
     mySkipEqual( true )
 {
 }
 
-//====================================================================
-//! Constructor (copy)
-//====================================================================
+/*!
+  Constructor (copy)
+*/
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual )
   : QValueList<SUIT_DataOwnerPtr>(),
     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<SUIT_DataOwnerPtr>& l )
   : QValueList<SUIT_DataOwnerPtr>( l ),
     mySkipEqual( true )
@@ -113,9 +107,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>
 #endif
 
 #ifndef QT_NO_STL
-//====================================================================
-//! Constructor (from stl)
-//====================================================================
+/*!
+  Constructor (from stl)
+*/
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqual )
   : QValueList<SUIT_DataOwnerPtr>(),
     mySkipEqual( skipAllEqual )
@@ -127,9 +121,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>
 }
 #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<SUIT_DataOwnerPtr>::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<SUIT_DataOwnerPtr>::remove( x );
 }
 
-//====================================================================
-//! 
-//====================================================================
+/*!
+  Operator < allows to order suit data owners for map
+*/
 bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
 {
   return p1.get()<p2.get();
index cbc5b84649de7470866ad7415287ff84e28a525c..bc2ef2615535a148e165754413b81e3352865bb7 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_DATAOWNER_H
 #define SUIT_DATAOWNER_H
 #pragma warning( disable:4275 )
 #endif
 
+/*!
+  \class SUIT_DataOwner
+  Represents abstract selected objects.
+  Used for selection synchronizing between windows(e.g. ObjectBrowser) and viewers
+*/
+
 class SUIT_EXPORT SUIT_DataOwner : public RefCount 
 {
 public:
index 8e7faecf5b6ccb20aad7c27b565abaaa7c6137d7..6c6bcb37e8632891bb6753a0ea6f6a9f5d9b9a56 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Desktop.h"
 
index c437dbb1c414fd3a6ca07233f171b5e57f834516..d63657956e981fe9075c10a46aa69680a7ced01c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_DESKTOP_H
 #define SUIT_DESKTOP_H
@@ -31,6 +31,11 @@ class SUIT_ViewWindow;
 class QtxActionMenuMgr;
 class QtxActionToolMgr;
 
+/*!
+  \class SUIT_Desktop
+  Provides standard desktop: main window with
+  main menu manager, toolbars manager and logo.
+*/
 class SUIT_EXPORT SUIT_Desktop : public QtxMainWindow
 {
   Q_OBJECT
index 39109341837ddc3c5a13a5ccf871be3a00d58040..7a5083c91799c3f4d1e45147f3c2fdc1d7fa9065 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_ExceptionHandler.h"
 
@@ -49,6 +49,9 @@ void SUIT_ExceptionHandler::showMessage( const QString& title, const QString& ms
 {
   if ( !qApp )
     return;
-
+  
+  while ( QApplication::overrideCursor() )
+    QApplication::restoreOverrideCursor();
+  
   SUIT_MessageBox::error1( qApp->mainWidget(), title, msg, "OK" );
 }
index f050e2183271ac1d69054784ecaa82160c39655c..d3c48455cd7f083d40eef7b7ebf14a35b7cfe3d8 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_EXCEPTIONHANDLER_H
 #define SUIT_EXCEPTIONHANDLER_H
index ec580efd639c20c984d8e6e7e8d5e1654e1c94aa..7fb1ee7c6a4b424fc09d75bc84a464736ea5bfe4 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//*********************************************************************************
-// SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box.
-// To get the file/directory name(s) call static methods:
-//
-// to invoke "Open file" or "Save file" dialog box
-//    static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters, 
-//                               const QString& caption, const bool open, const bool showQuickDir = true,
-//                               SUIT_FileValidator* validator = 0);
-//
-// to invoke "Open files" dialog box (to get the multiple file selection)
-//    static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters, 
-//                                        const QString& caption, bool showQuickDir = true
-//                                        SUIT_FileValidator* validator = 0);
-//
-// to invoke "Select directory" dialog box
-//    static QString getExistingDirectory(QWidget* parent, const QString& initial,
-//                                        const QString& caption, const bool showQuickDir = true);
-//
-// The parameters:
-// - parent        parent widget (if 0, the current desktop is used)
-// - initial       starting directory or file name (if null, last visited directory is used)
-// - filters       file filters list; patterns inside the filter can be separated by ';','|' or ' ' 
-//                 symbols
-// - caption       dialog box's caption: if null, the default one is used
-// - open          open flag - true for "Open File" and false for "Save File" dialog box
-// - showQuickDir  this flag enables/disables "Quick directory list" controls
-// - validator     you can provide custom file validator with this parameter
-//
-// Examples:
-//   ...
-//   QStringList flist;
-//   flist.append( "Image files (*.bmp *.gif *.jpg )" );
-//   flist.append( "All files (*.*)" );
-//   QMyFileValidator* v = new QMyFileValidator( 0 );
-//   QString fileName =  SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v );
-//   if ( !fileName.isEmpty() ) {
-//      ... writing image to the file 
-//   }
-//   ...
-//   QStringList flist;
-//   flist.append( "*.cpp | *.cxx | *.c++" );
-//   flist.append( "*.h | *.hpp | *.hxx" );
-//   QString fileName =  SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true );
-//
-//*********************************************************************************
+
+/*!
+  SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box.
+  To get the file/directory name(s) call static methods:
+
+  to invoke "Open file" or "Save file" dialog box
+  static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters, 
+                               const QString& caption, const bool open, const bool showQuickDir = true,
+                               SUIT_FileValidator* validator = 0);
+
+  to invoke "Open files" dialog box (to get the multiple file selection)
+  static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters
+                                        const QString& caption, bool showQuickDir = true, 
+                                        SUIT_FileValidator* validator = 0);
+
+ to invoke "Select directory" dialog box
+    static QString getExistingDirectory(QWidget* parent, const QString& initial,
+                                        const QString& caption, const bool showQuickDir = true);
+
+ The parameters:
+ - parent        parent widget (if 0, the current desktop is used)
+ - initial       starting directory or file name (if null, last visited directory is used)
+ - filters       file filters list; patterns inside the filter can be separated by ';','|' or ' ' 
+                 symbols
+ - caption       dialog box's caption: if null, the default one is used
+ - open          open flag - true for "Open File" and false for "Save File" dialog box
+ - showQuickDir  this flag enables/disables "Quick directory list" controls
+ - validator     you can provide custom file validator with this parameter
+
+ Examples:
+   ...
+   QStringList flist;
+   flist.append( "Image files (*.bmp *.gif *.jpg )" );
+   flist.append( "All files (*.*)" );
+   QMyFileValidator* v = new QMyFileValidator( 0 );
+   QString fileName =  SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v );
+   if ( !fileName.isEmpty() ) {
+      ... writing image to the file 
+   }
+   ...
+   QStringList flist;
+   flist.append( "*.cpp | *.cxx | *.c++" );
+   flist.append( "*.h | *.hpp | *.hxx" );
+   QString fileName =  SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true );
+*/
 
 #include "SUIT_FileDlg.h"
 
index fcdb7da1351a64669481561031ea4d181b1060f1..04418800333ee7b1da6c509bb94efb98e91c840a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_FILEDIALOG_H
 #define SUIT_FILEDIALOG_H
index 3298cdb9be12ceaa8b3c3351861841563509db54..ab09fc6654fa4b7a2959db6f92013e6c162fb4b9 100755 (executable)
@@ -1,11 +1,24 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : SUIT_FileValidator.cxx
-//  Author : 
 //  Module : SALOME
 //  $Header$
 
index ecba9f2c73c7b5ddab7b1249e7e62100021a4a63..197f6a2abd853637bc86771f6c8f815d3ed7a374 100755 (executable)
@@ -1,13 +1,25 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// 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.
 //
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
 //
 //  File   : SUIT_FileValidator.h
-//  Author : 
 //  Module : SALOME
-//  $Header$
 
 #ifndef SUIT_FILEVALIDATOR_H
 #define SUIT_FILEVALIDATOR_H
 #include <qwidget.h>
 #include "SUIT.h"
 
+/*!
+  \class SUIT_FileValidator
+  Provides functionality to check file
+*/
 class SUIT_EXPORT SUIT_FileValidator
 {
 public:
index 1d4d03cada3d6d54a1577c9204b36b312349c0b6..e80ff74f04ae6a3b65b36242688e8ef03f6d46b5 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/********************************************************************
-**  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"
index f8cf626be96d4dadd4a5ea879c5b8674c3aeb6b0..24b350605f06d5d5e6ef0c1b7a144df2e2a3056c 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/********************************************************************
-**  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
 
 #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:
index 658ff20173dfc936c55b01e4175965d19819b988..2df0b7d240840c03341269ffbc4a5eb911c49406 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/**
-*  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"
 #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(),
index 4f1b617b98575ddb0e62199f5a4b621974b86d76..3d15f058c5774367fd2f3bb050f13898519e4357 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-/**
-*  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
index 3d276a989d2b916afc3f86983d5a13260c2eb4d0..0dab97a5869350a9bf4a9bc67885fb13d4ea5c70 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_OverrideCursor.h"
 
index 0fd4428eb2af5eea36a9723ddd184566478ea5bd..ee89235d6105dc09f2c2bb53329505ba05af7e77 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_OVERRIDECURSOR_H
 #define SUIT_OVERRIDECURSOR_H
index 44689d1143dc6adb8c69f129c2a15e51bf2dc5da..fa3768ff1f8aea4e1560f7d769bc6bc46fad3ff3 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index b5e724a6cbc8ec6a0f4d628e75e51d61a82666b5..16d74a2fb2815c2b2aa1c42df383dd72ee565690 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 2bb8cde7664ba96c2e8d9936a204dfed29e9b286..fd2c40d9f2ba5a4aab87ee626a3c074b1183fd4f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_PopupClient.h"
 
index e5a007b79a81f5dd73ca95b958d34d40e1719d63..7d4023f3a398b6d06ec145382f4d6bb16536e23c 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_POPUPCLIENT_H
 #define SUIT_POPUPCLIENT_H
index ed8f3a87273d3dedfd8e2f9958cf512965bd22ff..c184037fae411e24e8afd318978b1d3eb786152d 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_ResourceMgr.h"
 
+#include <qfileinfo.h>
+#include <qdir.h>
+
 /*!
     Constructor
 */
@@ -61,15 +64,61 @@ QString SUIT_ResourceMgr::loadDoc( const QString& prefix, const QString& id ) co
   return path( docSection, prefix, id );
 }
 
+#ifndef WIN32
+#include <unistd.h>
+#endif
 /*!
     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;
+}
index 2b1a18bec5fc3c785425c84619fee4d7418050a3..db0eda7119c5881d9053fc69c2f687bf741b5e5f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_RESOURCEMGR_H
 #define 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;
index abb30272c998b6a8ae538881e1d4f018a30fc4e6..f4cd983a251ca4562c7b5275a156b94cc9fc5f82 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_SelectionFilter.h"
 
index 2f64f7ec96bf2b3bca2a7d427ffd7eae522cfc50..a26510108f64487ac20a8ab43ebf74e2e395579b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_SELECTIONFILTER_H
 #define SUIT_SELECTIONFILTER_H
index 98a33e83a99fdda74688286741e65a892aa0f68b..895486f218845f6ea34312b65a5cafa33d72a2af 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_SelectionMgr.h"
 
index d471b2f730fcd05446f2c91da2708174a392c5e6..79576568f38d49f8ed6855f0b0f2c8acdf097c1f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_SELECTIONMGR_H
 #define SUIT_SELECTIONMGR_H
index 7b23bb9f9c66b47b78beaaddb14f30ddefc47c62..ebda6a065ac5be3f6973adb2a3c10821a1586684 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Selector.h"
 
index 5d1ae0e3a55a065ee8f0b8ae5243c8a0ff54111d..058506d24620ab334a32e9a6d41e72fc8a7b1889 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_SELECTOR_H
 #define SUIT_SELECTOR_H
 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
index 03f32ee749318e472227184295e05ecd5f0fb000..6d5f0669dda3d121dff1d413188cb09d2d338ba5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Session.h"
 
@@ -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 );
+  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 ) );
 }
 
 /*!
index 505f00c1a5f2df98751b4d49271b7f1a3ec3b735..08078ff74f9dc6c6f0dc7f32ce4b3da90b0c743d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_SESSION_H
 #define SUIT_SESSION_H
index 4f0d7a4c90c61c6b58e179453c89f6be190375f5..ee28cf5e1c201a212d1f5e01616ce040cf617dfe 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if !defined(__SUIT_SMARTPTR_H)
 #define __SUIT_SMARTPTR_H
index 2f83179c4655966d56b8fd458e7de08a701a4bd3..a3baef3ce8bc7dfa153cea62db34b2e91c3cd4a4 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Study.h"
 
@@ -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
-   */
 }
 
 /*!
@@ -510,3 +511,18 @@ bool SUIT_Study::hasTransaction() const
 {
   return false;
 }
+
+/*!
+ * \brief Stores the study state
+*/
+int SUIT_Study::storeState()
+{
+  return -1;
+}
+/*!
+ * \brief Restores the study state
+*/
+void SUIT_Study::restoreState(int savePoint)
+{
+}
index c1163cc6c5049d0b2556c808a279e3e8a183a44c..156c6bc74df61f24a70f95fe04b46b75bd69e98a 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_STUDY_H
 #define SUIT_STUDY_H
@@ -75,6 +75,9 @@ public:
   bool              suspend( SUIT_Operation* );
   bool              resume( SUIT_Operation* );
 
+  virtual int       storeState();
+  virtual void      restoreState(int savePoint);
+
 signals:
   void              studyModified( SUIT_Study* );
 
index f0434db3c47985980d46f6d26cb52ba9fa1f6413..35e009c6de7ca66a829a5c255ad202a3e4f4ce20 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "SUIT_ToolButton.h"
index 6b8f51601eaf4e31af4c5c01d08faf53bef3b816..10abe2629ccc188d990e06e34b73caf5498b0fd0 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_TOOLBUTTON_H
 #define SUIT_TOOLBUTTON_H
index 3e728fe51e581746559373667bace452b9b78dd9..953de65d4f20c4ac8bcb5df183f2331e499c7b8c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_Tools.h"
 
index 07d8ff059bc599bcd38243dc8838b61dfede257a..62bc8d1633b08f7d94580b2f39337a19ce6eb100 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_TOOLS_H
 #define SUIT_TOOLS_H
 #include <qfont.h>
 #include <qstring.h>
 
+/*!
+  \class SUIT_Tools
+  Prodives set of auxiliary static methods
+*/
 class SUIT_EXPORT SUIT_Tools : public Qtx
 {
 public:
index d38f6fcdfcc02c8203cfbdc9ae8cf7572c7e592a..602a8913bf72f502dd78a25dde6c28de7bcff369 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 
 #ifndef SUIT_TREE_SYNC_HEADER
 #define SUIT_TREE_SYNC_HEADER
 #include <qptrlist.h>
 #include <qvaluelist.h>
 
+/*!
+  \struct DiffItem
+  \brief Struct representing difference between items
+*/
 template <class SrcItem, class TrgItem>
 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 <class SrcItem, class TrgItem, class TreeData>
 TrgItem synchronize( const SrcItem&, const TrgItem&, const TreeData& );
 
+/*!
+  \brief compares children 
+*/
 template <class SrcItem, class TrgItem, class TreeData>
 void diffSiblings( const SrcItem&, const TrgItem&,
                    QValueList < DiffItem < SrcItem,TrgItem > >&,
                    const TreeData& );
 
+/*!
+  \brief create item with children (subtree)
+*/
 template <class SrcItem, class TrgItem, class TreeData>
 TrgItem createSubTree( const SrcItem&, const TrgItem&, const TrgItem&, const bool, const TreeData& );
 
+/*!
+  \brief find equal element in list
+*/
 template <class SrcItem, class TrgItem, class TreeData>
 const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<TrgItem>& l,
                                                              const typename QValueList<TrgItem>::const_iterator& first,
@@ -33,20 +75,44 @@ const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<T
 
 
 
-
-//int gSync = 0;
+/*!
+  Synchronizes two trees by comparing corresponding items
+  \param r1 - start item from first tree
+  \param r2 - start item from second tree
+  \param td - auxiliary class providing following methods:
+  <ul>
+  <li> bool     isEqual( const SrcItem&, const TrgItem& ) const - returns true if items are equal
+  <li> SrcItem  nullSrc() const - returns null SrcItem
+  <li> TrgItem  nullTrg() const - returns null TrgItem
+  <li> TrgItem  createItem( 
+    <ol>
+      <li> const SrcItem& src,    - corresponding SrcItem
+      <li> const TrgItem& parent, - parent TrgItem
+      <li> const TrgItem& after,  - TrgItem after that new item must be added
+      <li> const bool prepend     - whether new item must be added as first 
+    </ol>
+    ) const - creates new TrgItem
+  <li> void     updateItem( const TrgItem& ) const - updates TrgItem without recreation
+  <li> void     deleteItemWithChildren( const TrgItem& ) const - deletes TrgItem with all children
+  <li> void     children( const SrcItem&, QValueList<SrcItem>& ) const - fills list with children
+  <li> void     children( const TrgItem&, QValueList<TrgItem>& ) const - fills list with children
+  <li> SrcItem  parent( const SrcItem& ) const - return parent SrcItem
+  <li> TrgItem  parent( const TrgItem& ) const - return parent SrcItem
+  </ul>
+*/
 template <class SrcItem, class TrgItem, class TreeData>
 TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td )
 {
-  //  printf( "--- synchronize : %d ---\n", ++gSync );
-
   if( td.isEqual( r1, r2 ) )
   {
+    // update items themselves
+    td.updateItem( r2 );
+
+    // iterate 'siblings' (direct children) 
     QValueList< DiffItem< SrcItem, TrgItem > > d;
     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++ )
@@ -62,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
        {
@@ -71,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
@@ -86,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 <class SrcItem, class TrgItem, class TreeData>
 const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<TrgItem>& l,
                                                              const typename QValueList<TrgItem>::const_iterator& first,
@@ -99,13 +174,20 @@ const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<T
   return last;
 }
 
+/*!
+  Compares children of objects src and trg
+  \param src - SrcItem to be checked
+  \param trg - TrgItem to be checked
+  \param d - map of difference to be filled
+  \param td - tree data object (provides auxiliary methods)
+*/
 template <class SrcItem, class TrgItem, class TreeData>
 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<SrcItem> src_ch;
   QValueList<TrgItem> trg_ch;
@@ -153,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 <class SrcItem, class TrgItem, class TreeData>
 TrgItem createSubTree( const SrcItem& src, const TrgItem& parent,
                       const TrgItem& after, const bool asFirst,
index 69288994b2cf10a6bacfdf19be8ab3714f6acb7d..619b9c488522fe9e451c8e9d01bfa7c4558c4006 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUIT_ViewManager.h"
 
@@ -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 );
 }
 
index e0ca57fb261dc9d1ef85b71533a1721daf0eddaa..8cacbe253904f5fcf4996954577088b01fd6fa43 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_VIEWMANAGER_H
 #define SUIT_VIEWMANAGER_H
index 38a9aac1e1706a2914ec6820788b46c68ea7b600..86c0f00993990218304efa4dd2bd10f4e2342f5c 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // SUIT_ViewModel.cxx: implementation of the SUIT_ViewModel class.
 //
-//////////////////////////////////////////////////////////////////////
 
 #include "SUIT_ViewModel.h"
 
index b99c4025c60feb8e946ec5407545a1aa54edbd9a..4be9fd777d9e65bacaeb11599a01c34047ead3cb 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUIT_VIEWMODEL_H
 #define SUIT_VIEWMODEL_H
index bd4c32e69b7c278483c1b5d2caea1588637e1dfd..0df3081c310cbcc28b42a47069f832054d6a6b77 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class.
 //
-//////////////////////////////////////////////////////////////////////
 
 #include "SUIT_ViewWindow.h"
 #include "SUIT_Desktop.h"
@@ -54,24 +53,39 @@ 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();
 }
 
-bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format )
+/*!
+  Saves image to file according to the format
+  \param image - image
+  \param fileName - name of file
+  \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG")
+*/
+bool SUIT_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format )
 {
-  QImage img = dumpView();
   if( img.isNull() )
     return false; 
 
@@ -87,6 +101,16 @@ bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString&
   return res;
 }
 
+/*!
+  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 )
+{
+  return dumpViewToFormat( dumpView(), fileName, format );
+}
+
 /*! Close event \a theEvent.
 */
 void SUIT_ViewWindow::closeEvent(QCloseEvent* theEvent)
@@ -111,6 +135,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" );
@@ -125,13 +152,15 @@ bool SUIT_ViewWindow::event( QEvent* e )
     bool bOk = false;
     if ( myManager && myManager->study() && myManager->study()->application() )
     {
+      QImage im = dumpView();
+
       // get file name
       SUIT_Application* app = myManager->study()->application();
       QString fileName = app->getFileName( false, QString::null, filter(), tr( "TLT_DUMP_VIEW" ), 0 );
       if( !fileName.isEmpty() )
       {
        QString fmt = SUIT_Tools::extension( fileName ).upper();
-       bOk = dumpViewToFormat( fileName, fmt );
+       bOk = dumpViewToFormat( im, fileName, fmt );
       }
       else
       {
@@ -148,13 +177,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 )
 {
 }
index 1ac79a504d8472736c7a33d68088b6ff34d23db4..2e5eb7804028577bea7157c854b2d13c04a444da 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 // 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_
@@ -48,9 +47,12 @@ public:
   bool              event(QEvent*);
 
   virtual QImage    dumpView();
-  virtual bool      dumpViewToFormat( const QString& fileName, const QString& format );
+  bool              dumpViewToFormat( const QString& fileName, const QString& format );
 
-  void              onAccelAction( int );
+  bool              onAccelAction( int );
+
+  virtual QString   getVisualParameters();
+  virtual void      setVisualParameters( const QString& parameters );
 
 public slots:
   virtual void      onDumpView();
@@ -70,7 +72,8 @@ protected:
   void              closeEvent( QCloseEvent* );
   virtual void      contextMenuEvent( QContextMenuEvent* );
   virtual QString   filter() const;
-  virtual void      action( const int );
+  virtual bool      action( const int );
+  virtual bool      dumpViewToFormat( const QImage&, const QString& fileName, const QString& format );
 
   SUIT_Desktop*     myDesktop;
   SUIT_ViewManager* myManager;
index b22696bbdef170736517017b276afe4bbaf4565b..88441a5f197edbf224afef3496a678c0c2d89697 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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".
index 95f43c7478f6c2f65414540106f205750eb95f7f..480ab305b4adeda43d10b02975be2e8654a1404f 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # 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"
 
index cfc5ed0e53a1bae2e42bea6e41ca377248e1e8fd..a82d31726d02dd4e49f66233c01e9b45852cc840 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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 <<MESS_END}
index 9fb9dc088243f3120aea0f5acf75b1a2ec49fafd..1265308b42741251517664eab597a8965ddea157 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : suitApp
index 497906700d51bd86b9e042b0d26df6b6d3415760..f343c435e623ee1ae8cd0645b645bddb7653c33c 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #if defined WNT
 
@@ -29,6 +29,7 @@
 #include <SUIT_Desktop.h>
 #include <SUIT_ResourceMgr.h>
 
+#include <QtxSplash.h>
 
 #ifdef SUIT_ENABLE_PYTHON
 #include <Python.h>
@@ -38,6 +39,7 @@
 #include <qfile.h>
 #include <qstring.h>
 #include <qstringlist.h>
+#include <qregexp.h>
 
 #include <stdlib.h>
 
@@ -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;
   }
index 744d84acc481b4ee0ecc7302dac66b89e4b13626..4639f100d79933cce38cbf6c192eed56eca62494 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUITApp_Application.h"
 
@@ -31,6 +31,9 @@
 #include <unistd.h>
 #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;
index 4fe9acebdee096a724bba2874ff04b2d9ba116e9..479f07a20fffae6b3ebca33091c1d58053aa914b 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUITAPP_APPLICATION_H
 #define SUITAPP_APPLICATION_H
index fa5399056f9eafe0be63ee9100770c2c90b1bf8f..3e268b6cf0d0b46f77b0a5ea2e42c13ce1079aa3 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 
 msgid "APP_ERROR"
 msgstr "Error"
index 149feb93f4b7650e79eded6ccc533e0de94b8032..334a2c9fb2939d33e82cd2ab276b9bca99dac77d 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 # source path
 top_srcdir=@top_srcdir@
 top_builddir=../..
@@ -34,8 +52,8 @@ RESOURCES_FILES = view_pan.png \
 
 LIB_CLIENT_IDL = 
 
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib
+CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS)
+LDFLAGS+=$(QT_MT_LIBS) -lsuit
 
 
 @CONCLUDE@
index 2b8f3d87f102f53878ae32d6141ced237589e18e..d570c614a15a59d85b8fe54b226264cd392845b6 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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);
index 599857d00913979a5515e25686d6ac3049831ac1..eef17b99834e805f4c90cb2afddaec7479dfad94 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 716cc8fcac8f1aa6c2325fe0521f907e5e685a4c..e20b59768f619c1c862ef1df042310df1ff1e7c5 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 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 );
index df3266dd2f5ee81c2451176ea97d988460d549c4..f2d336449e5fe089b82cc6f4e3be8d2db6b7485a 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 9cf508b3156d8ddc1e1e85e1533b0e01e7c78fdd..0f890c4b564a1ac81870d5aa77ca9cfdc33fd875 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUPERVGraph_ViewManager.h"
 
 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 );
index f35557960013aa26f7c67a88aa70787c2ff77caf..94c5a850df26ef5936aecc53e6dc2dd4cdec7d50 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUPERVGRAPH_VIEWMANAGER_H
 #define SUPERVGRAPH_VIEWMANAGER_H
index c6fe5f9ea7288a901042a568408aaf4cc4fced82..a9911da3e4af1ab32c4b6df838be8091d0ffed18 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SUPERVGraph_ViewModel.h"
 #include "SUPERVGraph_ViewFrame.h"
 #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 );
index 82c6f6f93d8b97e66f04eb2d62fb6f67052fd177..9de2ffa509516184e648a1cf1b11c8b25a9f2237 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SUPERVGRAPH_VIEWMODEL_H
 #define SUPERVGRAPH_VIEWMODEL_H
index 3b41ded0f24876589b5343a01722feee03fb5587..97cab3fd6d7ec47a3ab725f10ed657157fbc8bdb 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SUPERVGraph_images.po
 // Created:   11/22/2005 10:52:37 PM
 // Author:    Margarita Karpunina
index b9ac39b42c6c62941e410f5e9d503762ad37e8ff..1bad63bd6690c67ad39bc0e93c266e9ddb23c496 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SUPERVGraph_msg_en.po
 // Created:   11/22/2005 10:55:36 PM
 // Author:    Margarita Karpunina
index 038fba118736ff3732a97e0e62ea4420022560ff..50db458282a6e86810830ade6ad681c47bb3da5e 100644 (file)
Binary files a/src/SUPERVGraph/resources/view_pan.png and b/src/SUPERVGraph/resources/view_pan.png differ
index 12850643e8c561aae15dc7c2990028d57ac9d1bf..7ba93b98f8d8483609b8655b3306038cade3d9ad 100644 (file)
Binary files a/src/SUPERVGraph/resources/view_reset.png and b/src/SUPERVGraph/resources/view_reset.png differ
index 58c7e6fdb0843cda861f4a555fa8e2b21a4766c8..f45b583aa187d138a3a2ee12bce558538703d9bd 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  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
index 9b1b7937d02b90b562884b45d15d114651c3b99c..8bd1cbd4323660a6670287c8a5c99c28bb4dbf1f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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) 
index d377ff633a148f0a96680711ef0f00c8d08f5f0e..03c4ca7a77f169a7a17b8ed4425aca4f6b685249 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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
index 0be0d5cfdfbadccaea9bda865199a57ba084ff1e..674714f7751ac9322e6373695f54ad7621ea1ee0 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index a5b0ba91680e179857eaf2e036a5b28f8275ea5f..b07763c0b41008e425db98c6916be7d879b6c2af 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+#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
+#  ifdef SVTK_EXPORTS
+#    define SVTK_EXPORT __declspec(dllexport)
+#  else
+#   define SVTK_EXPORT __declspec(dllimport)
+#  endif
 #else
-#define SVTK_EXPORT
+#  define SVTK_EXPORT
 #endif
 
 #if defined WNT
 #pragma warning ( disable: 4251 )
 #pragma warning ( disable: 4786 )
 #endif
+
+#endif
index 337075bb1a4e8d52e43b9dfba5b3886709200cfc..036926fb869f806db86ed5ab09ddd47a0493c94a 100644 (file)
@@ -15,7 +15,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 
 #include "SVTK_Actor.h"
 #include "SALOME_Actor.h"
@@ -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;
 }
-
-//----------------------------------------------------------------------------
index 9d1dcb224c3fb62b7ef8107722ff0ddcfa3705bb..bb7542da36249e8c73e3f9c070f8a8b3079b48a0 100644 (file)
@@ -15,7 +15,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 
 #ifndef SVTK_ACTOR_H
 #define SVTK_ACTOR_H
index 3fdcf72f38f5c111b99a3ea52be5ca1d8df093ce..823c072240e1facfc0669003870d7740e94ceb95 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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;i<numOfLabelsX;i++){
 #endif
-    float val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
+    vtkFloatingPointType val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
     XCoords->InsertNextValue(val);
   }
   // YCoords coordinates for Y grid
@@ -459,7 +465,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport)
 #else
   for(i=0;i<numOfLabelsX;i++){
 #endif
-    float val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
+    vtkFloatingPointType val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
     YCoords->InsertNextValue(val);
   }
   // ZCoords coordinates for Z grid
@@ -469,7 +475,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport)
 #else
   for(i=0;i<numOfLabelsZ;i++){
 #endif
-    float val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
+    vtkFloatingPointType val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
     ZCoords->InsertNextValue(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.
index 1de1c1ce84ef02cba8887db89704a7457fca5774..b9583c642ba6997e0f989f7401b4271c50974b4b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -41,7 +41,8 @@ class vtkPolyDataMapper;
 class vtkRectilinearGridGeometryFilter;
 class VTKViewer_Transform;
 
-#include <SVTK.h>
+#include "SVTK.h"
+#include "VTKViewer.h"
 
 #ifndef WNT
 class VTK_HYBRID_EXPORT SVTK_CubeAxesActor2D : public vtkCubeAxesActor2D
index daed6845ecfe90c11504991f5ae26c1639a87b7e..94e4af88f0957e40d178debaf8e38164f8343ad9 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -33,6 +33,7 @@
 #include "SVTK_CubeAxesActor2D.h"
 
 #include "QtxAction.h"
+#include "QtxIntSpinBox.h"
 
 #include <qlayout.h>
 #include <qframe.h>
  * Description : Tab of dialog
  */
 
-//=======================================================================
-// name    : SVTK_AxisWidget::AxisWg
-// Purpose : Constructor
-//=======================================================================
+/*!
+  Constructor
+*/
 SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent)
 :  QFrame(theParent)
 {
@@ -88,15 +88,13 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent)
   aHBox = new QHBox(myLabelsGrp);
   aHBox->setSpacing(5);
   aLabel = new QLabel(tr("NUMBER"), aHBox);
-  myLabelNumber = new QLineEdit(aHBox);
-  myLabelNumber->setValidator(new QIntValidator(0, 25, this));
-  myLabelNumber->installEventFilter(this);
+  myLabelNumber = new QtxIntSpinBox(0,25,1,aHBox,"SpinBoxLabelNumber");
   aLabels.append(aLabel);
 
   aHBox = new QHBox(myLabelsGrp);
   aHBox->setSpacing(5);
   aLabel = new QLabel(tr("OFFSET"), aHBox);
-  myLabelOffset = new QLineEdit(aHBox);
+  myLabelOffset = new QtxIntSpinBox(0,100,1,aHBox,"SpinBoxLabellOffset");
   aLabels.append(aLabel);
 
   aHBox = new QHBox(myLabelsGrp);
@@ -113,7 +111,8 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent)
   aHBox = new QHBox(myTicksGrp);
   aHBox->setSpacing(5);
   aLabel = new QLabel(tr("LENGTH"), aHBox);
-  myTickLength = new QLineEdit(aHBox);
+  myTickLength = new QtxIntSpinBox(0,100,1,aHBox,"SpinBoxTickLength");
+  
   aLabels.append(aLabel);
 
   // Layout
@@ -143,6 +142,9 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent)
   connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked()));
 }
 
+/*!
+  Destructor
+*/
 SVTK_AxisWidget::~SVTK_AxisWidget()
 {
 }
@@ -154,20 +156,6 @@ void SVTK_AxisWidget::updateControlState()
   onTicksChecked();
 }
 
-bool SVTK_AxisWidget::eventFilter(QObject* o, QEvent* e)
-{
-  if (e->type() == QEvent::FocusOut) {
-    bool isOK = false;
-    int k = myLabelNumber->text().toInt(&isOK);
-    if (isOK && k > 25) myLabelNumber->setText("25");
-  }
-  return false;
-}
-
-//=======================================================================
-// name    : SVTK_AxisWidget::onNameChecked
-// Purpose :
-//=======================================================================
 void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState)
 {
   QObjectList aChildren(*theGrp->children());
@@ -177,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,
@@ -235,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)
@@ -258,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();
@@ -286,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();
@@ -296,8 +256,8 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor)
   }
 
   myIsLabelsVisible->setChecked(useLabels);
-  myLabelNumber->setText(QString("%1").arg(nbLabels));
-  myLabelOffset->setText(QString("%1").arg(anOffset));
+  myLabelNumber->setValue(nbLabels);
+  myLabelOffset->setValue(anOffset);
   myLabelsFont->SetData(aLabelsColor, aLabelsFontFamily, isLabelsBold, isLabelsItalic, isLabelsShadow);
 
   // Tick marks
@@ -305,15 +265,11 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor)
   int aTickLength = theActor->GetTickLength();
 
   myIsTicksVisible->setChecked(useTickMarks);
-  myTickLength->setText(QString("%1").arg(aTickLength));
+  myTickLength->setValue(aTickLength);
 
   return true;
 }
 
-//=======================================================================
-// name    : SVTK_CubeAxesDlg::Apply
-// Purpose :
-//=======================================================================
 bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor)
 {
    if (theActor == 0)
@@ -350,14 +306,11 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor)
 
   theActor->SetLabelVisibility(myIsLabelsVisible->isChecked() ? 1 : 0);
 
-  bool isOk = false;
-  int nbLabels = myLabelNumber->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetNumberOfLabels(nbLabels);
+  int nbLabels = myLabelNumber->value();
+  theActor->SetNumberOfLabels(nbLabels);
 
-  int anOffset = myLabelOffset->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetTickOffset(anOffset);
+  int anOffset = myLabelOffset->value();
+  theActor->SetTickOffset(anOffset);
 
   QColor aLabelsColor(255, 255, 255);
   int aLabelsFontFamily = VTK_ARIAL;
@@ -385,9 +338,8 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor)
 
   // Tick marks
   theActor->SetTickVisibility(myIsTicksVisible->isChecked());
-  int aTickLength = myTickLength->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetTickLength(aTickLength);
+  int aTickLength = myTickLength->value();
+  theActor->SetTickLength(aTickLength);
 
   return true;
 }
@@ -397,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);
@@ -447,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);
@@ -476,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();
@@ -499,25 +447,27 @@ 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;
 
   try
   {
+    QWidget *aCurrWid = this->focusWidget();
+    aCurrWid->clearFocus();
+    aCurrWid->setFocus();
+
     isOk = isOk && myAxes[ 0 ]->Apply(myActor->GetXAxisActor2D());
     isOk = isOk && myAxes[ 1 ]->Apply(myActor->GetYAxisActor2D());
     isOk = isOk && myAxes[ 2 ]->Apply(myActor->GetZAxisActor2D());
@@ -544,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 );
 }
index bd7e5254c7414b561de9fac0f4eedfb4715cc80b..c4277db69363cdd4aa6783cd9c3d7600f5c4936a 100644 (file)
@@ -15,7 +15,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -27,7 +27,8 @@
 #ifndef SVTK_CubeAxesDlg_H
 #define SVTK_CubeAxesDlg_H
 
-#include <qdialog.h>
+#include "SVTK_DialogBase.h"
+
 #include <qframe.h>
 
 class QWidget;
@@ -39,6 +40,7 @@ class QLineEdit;
 class QGroupBox;
 
 class QtxAction;
+class QtxIntSpinBox;
 
 class vtkAxisActor2D;
 class SVTK_CubeAxesActor2D;
@@ -51,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();
@@ -68,8 +70,6 @@ private slots:
   bool            onApply();
   void            onClose();
 
-  virtual void    done( int );
-
 private:
   QWidget*        createButtonFrame( QWidget* );
   QWidget*        createMainFrame  ( QWidget* );
@@ -78,7 +78,6 @@ private:
 private:
   SVTK_MainWindow *myMainWindow;
   SVTK_CubeAxesActor2D* myActor;
-  QtxAction* myAction;
 
   QTabWidget*     myTabWg;
   QCheckBox*      myIsVisible;
@@ -107,9 +106,6 @@ public:
   bool            ReadData( vtkAxisActor2D* );
   bool            Apply( vtkAxisActor2D* );
 
-protected:
-  bool            eventFilter(QObject*, QEvent*);
-
 private slots:
   void            onNameChecked();
   void            onLabelsChecked();
@@ -129,14 +125,14 @@ private:
   // labels
   QGroupBox*      myLabelsGrp;
   QCheckBox*      myIsLabelsVisible;
-  QLineEdit*      myLabelNumber;
-  QLineEdit*      myLabelOffset;
+  QtxIntSpinBox*  myLabelNumber;
+  QtxIntSpinBox*  myLabelOffset;
   SVTK_FontWidget* myLabelsFont;
 
   // tick marks
   QGroupBox*      myTicksGrp;
   QCheckBox*      myIsTicksVisible;
-  QLineEdit*      myTickLength;
+  QtxIntSpinBox*  myTickLength;
 
   friend class SVTK_CubeAxesDlg;
 };
index be959115cd70535e0f41e59b466884d5f7a6fb79..279015efdd5b55699c075e7e9654c08291db6885 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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;
index 38378d2953616799b391581369a39c002d2f1001..c68829de92886477771cefaa1d7fee2e7e668d42 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -29,6 +29,9 @@
 #ifndef SVTK_DEVICE_ACTOR_H
 #define SVTK_DEVICE_ACTOR_H
 
+#include "SVTK.h"
+#include "VTKViewer.h"
+
 #include <vector>
 
 #include <vtkLODActor.h>
@@ -44,9 +47,6 @@ class vtkDataSet;
 class vtkShrinkFilter;
 class vtkDataSetMapper;
 
-#include "SVTK.h"
-
-//----------------------------------------------------------------------------
 namespace SVTK
 {
   namespace Representation
@@ -60,7 +60,6 @@ namespace SVTK
 }
 
 
-//----------------------------------------------------------------------------
 class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 {
  public:
@@ -97,7 +96,7 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   GetNodeObjId(int theVtkID);
 
   virtual
-  float
+  vtkFloatingPointType
   GetNodeCoord(int theObjID);
 
   virtual
@@ -120,12 +119,12 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 
   /** @name For shrink mamnagement purpose */
   //@{
-  float
+  vtkFloatingPointType
   GetShrinkFactor();
 
   virtual 
   void  
-  SetShrinkFactor(float value);
+  SetShrinkFactor(vtkFloatingPointType value);
 
   virtual
   void
@@ -155,11 +154,11 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   GetRepresentation();
 
   virtual
-  float
+  vtkFloatingPointType
   GetDefaultPointSize();
 
   virtual
-  float
+  vtkFloatingPointType
   GetDefaultLineWidth();
 
   bool
@@ -192,11 +191,13 @@ class SVTK_EXPORT 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();
index f4c1c42eccc98a236c7b7d57f63002561809c92e..fa415ab831145c7a1df22ba3ca8ca9f8564ea92f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index edaa9a6c07f24dc62d5d98979cc2e3ddff1c4e13..4269b5b6b2e68fd916169c1971287dd3e41deabb 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
  * 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,
index c2b62ee8d8bb4d735bd6ebaae64d3d0377eae812..953072a9446e6bb5c4291a8285ae9c09b3888aa5 100644 (file)
@@ -15,7 +15,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index b47d26e6c8757a08fdf0e61c77a11c8c3a0c259d..d76a9354898900d22a5bcfef791af36c7db2f183 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SVTK_Functor_H
 #define SVTK_Functor_H
index e3cb3c8e289d61422d534f1840eda38909ac7105..ecb406b1ba0a67a6e4a4fd3fe92531f23cc29e63 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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)
index d15fdc557f994a1e40a6cff5397eba096da52063..b47705d503da2e8d17355552cba7957d7b29c01b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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
index 963aa1894733d7fd039d7a8b89608e7d78c9fa16..4f8dfaa60858dfd927dca36eefc5b98c17b6b831 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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;
index 97a9ecdb7bd30c25c442baa84b45f46ee5b81418..93a1b2b6ec13f7ea14e9307fd440d1d962424c1b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -45,7 +45,6 @@
 
 #include <vtkObject.h>
 //
-//-------------------------------------------
 //! Control the value of increment  in SALOME way.
 /*!
   This class controls of value of increment,
@@ -77,7 +76,6 @@ class SVTK_EXPORT 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_EXPORT 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* );
index ad01609bca4b246d55ef16a78362d282aae2670b..2cb5d437959cd2b1c25187277716ea02ef34cce7 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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 <qimage.h>
 
-
-//----------------------------------------------------------------------------
+/*!
+  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,17 +319,18 @@ SVTK_MainWindow
   return GetRenderer()->GetTrihedronSize();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Redirect the request to SVTK_Renderer::SetTrihedronSize
+*/
 void 
 SVTK_MainWindow
-::SetTrihedronSize( const int theSize )
+::SetTrihedronSize( const int theSize, const bool theRelative )
 {
-  GetRenderer()->SetTrihedronSize(theSize);
+  GetRenderer()->SetTrihedronSize(theSize, theRelative);
   Repaint();
 }
 
 
-//----------------------------------------------------------------------------
 /*! 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()
index 758093797f06e18aca5b1d604e784b3873198cdb..3d9637a40482fdfac5be52804861bb7a4e9660ae 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #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
@@ -150,7 +168,7 @@ public:
 
   //! Redirect the request to #SVTK_Renderer::SetTrihedronSize
   void
-  SetTrihedronSize(const int theSize);
+  SetTrihedronSize(const int theSize, const bool theRelative = true);
 
   //! Redirect the request to #SVTK_Renderer::AdjustActors
   void 
@@ -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<int, QtxAction*> TActionsMap;
 
   SUIT_ViewWindow* myViewWindow;
 
   SVTK_NonIsometricDlg* myNonIsometricDlg;
+  SVTK_UpdateRateDlg* myUpdateRateDlg;
   SVTK_CubeAxesDlg* myCubeAxesDlg;
 
   vtkSmartPointer<vtkObject> myEventDispatcher;
index a01bcbdcb7729ca31ce328ee1f3ad721c786acf3..7b99f2c9c1d31d0691954537bd73c9ec261129b4 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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 <Reset> 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 <OK> 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 <Apply> 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 <Cancel> 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 );
 }
index 6a11a14f649c151eed39918854108200ad0129a3..66be82a3957d147d95b230f9e5ec2db94010f346 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -29,7 +29,7 @@
 #ifndef SVTK_NONISOMETRICDLG_H
 #define SVTK_NONISOMETRICDLG_H
 
-#include <qdialog.h>
+#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
index 9db710484ad57dc25f138f378030c2ce904d6de5..11e4b20f5e0c56bc4ba4b381261d1b8a866bded9 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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; 
index 3446e9afeadf8496b810bd2a522dcef533fd8d0d..218a9f101764d42f5aa41fbe159449a0c47b86fc 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 775782e807eaea11b3d7214397c48b7486593671..9aaad409eeb3d19dc660ec8b3f1f176c99b17b14 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include <vtkCamera.h>
 #include <vtkCell.h>
 
-//----------------------------------------------------------------------------
 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
index a9837c2d9cdc647f6a66a29c71dd73b8461d90af..d70ed0a1a2934512aefc1e82e6a3b3b8b736d1aa 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -29,6 +29,7 @@
 #define __SVTK_RectPicker_h
 
 #include "SVTK.h"
+#include "VTKViewer.h"
 
 #include <map>
 #include <vector>
@@ -40,7 +41,7 @@ class vtkRenderer;
 /*! \class vtkAbstractPropPicker
  * \brief For more information see <a href="http://www.vtk.org/">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<vtkIdType> TVectorIds;
   typedef std::map<vtkActor*,TVectorIds> 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
index bc4de96c6653ca36601047a18bae8bf3baa9e4c7..69d19aa6e3ec9ae6760483a66152ce8cbf6dadf3 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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,8 +81,12 @@ QVTK_RenderWindowInteractor
   myRenderWindow->SetWindowId((void*)winId());
 }
 
-
-void QVTK_RenderWindowInteractor::Initialize( vtkGenericRenderWindowInteractor* theDevice )
+/*!
+  To initialize by vtkGenericRenderWindowInteractor instance
+*/
+void 
+QVTK_RenderWindowInteractor
+::Initialize(vtkGenericRenderWindowInteractor* theDevice)
 {
   if ( GetDevice() )
     myDevice->SetRenderWindow( NULL );
@@ -91,8 +97,11 @@ void QVTK_RenderWindowInteractor::Initialize( vtkGenericRenderWindowInteractor*
     theDevice->SetRenderWindow( getRenderWindow() );
 }
 
-//----------------------------------------------------------------------------
-QVTK_RenderWindowInteractor::~QVTK_RenderWindowInteractor() 
+/*!
+  Destructor
+*/
+QVTK_RenderWindowInteractor
+::~QVTK_RenderWindowInteractor() 
 {
 #ifndef WIN32
   SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
@@ -101,13 +110,20 @@ QVTK_RenderWindowInteractor::~QVTK_RenderWindowInteractor()
 #endif
 }
 
-//----------------------------------------------------------------------------
-vtkGenericRenderWindowInteractor* QVTK_RenderWindowInteractor::GetDevice()
+
+/*!
+  \return corresponding render window interactor
+*/
+vtkGenericRenderWindowInteractor* 
+QVTK_RenderWindowInteractor
+::GetDevice()
 {
   return myDevice.GetPointer();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  \return corresponding render window
+*/
 vtkRenderWindow*
 QVTK_RenderWindowInteractor
 ::getRenderWindow()
@@ -115,7 +131,9 @@ QVTK_RenderWindowInteractor
   return myRenderWindow.GetPointer();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Just to simplify usage of its device (vtkGenericRenderWindowInteractor)
+*/
 void
 QVTK_RenderWindowInteractor
 ::InvokeEvent(unsigned long theEvent, void* theCallData)
@@ -123,7 +141,9 @@ QVTK_RenderWindowInteractor
   GetDevice()->InvokeEvent(theEvent,theCallData);
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Need for initial contents display on Win32
+*/
 void
 QVTK_RenderWindowInteractor
 ::show()
@@ -132,7 +152,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()
@@ -145,7 +167,9 @@ QVTK_RenderWindowInteractor
   }
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To adjust widget and vtkRenderWindow size
+*/
 void
 QVTK_RenderWindowInteractor
 ::resize(int w, int h) 
@@ -153,16 +177,20 @@ QVTK_RenderWindowInteractor
   GetDevice()->UpdateSize(w,h);
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Custom paint event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::paintEvent( QPaintEvent* theEvent ) 
 {
-  GetDevice()->Render();
+  GetDevice()->CreateTimer(VTKI_TIMER_FIRST);
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom resize event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::resizeEvent( QResizeEvent* theEvent )
@@ -194,14 +222,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 ) 
@@ -214,7 +246,9 @@ QVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse press event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::mousePressEvent( QMouseEvent* event ) 
@@ -232,7 +266,9 @@ QVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse release event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::mouseReleaseEvent( QMouseEvent *event )
@@ -251,14 +287,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 )
@@ -268,7 +308,9 @@ QVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom key press event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::keyPressEvent( QKeyEvent* event ) 
@@ -280,7 +322,9 @@ QVTK_RenderWindowInteractor
   GetDevice()->CharEvent();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Custom key release event handler
+*/
 void
 QVTK_RenderWindowInteractor
 ::keyReleaseEvent( QKeyEvent * event ) 
@@ -292,7 +336,9 @@ QVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom enter event handler
+*/
 void  
 QVTK_RenderWindowInteractor
 ::enterEvent( QEvent* event )
@@ -304,7 +350,9 @@ QVTK_RenderWindowInteractor
   GetDevice()->EnterEvent();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Custom leave event handler
+*/
 void  
 QVTK_RenderWindowInteractor
 ::leaveEvent( QEvent * )
@@ -312,9 +360,13 @@ QVTK_RenderWindowInteractor
   GetDevice()->LeaveEvent();
 }
 
-
-//----------------------------------------------------------------------------
-void QVTK_RenderWindowInteractor::focusInEvent( QFocusEvent* event )
+/*!
+  Reimplemented from QWidget in order to set window - receiver
+  of space mouse events. 
+*/
+void  
+QVTK_RenderWindowInteractor
+::focusInEvent( QFocusEvent* event )
 {
   QWidget::focusInEvent( event );
 
@@ -333,8 +385,13 @@ void QVTK_RenderWindowInteractor::focusInEvent( QFocusEvent* event )
 #endif
 }
 
-//----------------------------------------------------------------------------
-void QVTK_RenderWindowInteractor::focusOutEvent( QFocusEvent* event )
+/*!
+  Reimplemented from QWidget in order to set window - receiver
+  of space mouse events. 
+*/
+void  
+QVTK_RenderWindowInteractor
+::focusOutEvent ( QFocusEvent* event )
 {
   QWidget::focusOutEvent( event );
 
@@ -347,9 +404,11 @@ void QVTK_RenderWindowInteractor::focusOutEvent( QFocusEvent* event )
 }
 
 
-//----------------------------------------------------------------------------
 #ifdef WIN32
 
+/*!
+  To handle native Win32 events (from such devices as SpaceMouse)
+*/
 bool QVTK_RenderWindowInteractor::winEvent( MSG* msg )
 {
   // TODO: Implement event handling for SpaceMouse
@@ -358,7 +417,12 @@ bool QVTK_RenderWindowInteractor::winEvent( MSG* msg )
 
 #else
 
-bool QVTK_RenderWindowInteractor::x11Event( XEvent *xEvent )
+/*!
+  To handle native X11 events (from such devices as SpaceMouse)
+*/
+bool 
+QVTK_RenderWindowInteractor
+::x11Event( XEvent *xEvent )
 {
   // handle 3d space mouse events
   if ( SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance() )
@@ -387,7 +451,9 @@ bool QVTK_RenderWindowInteractor::x11Event( XEvent *xEvent )
 
 #endif
 
-//----------------------------------------------------------------------------
+/*!
+  Constructor
+*/
 SVTK_RenderWindowInteractor
 ::SVTK_RenderWindowInteractor(QWidget* theParent, 
                               const char* theName):
@@ -402,6 +468,9 @@ SVTK_RenderWindowInteractor
   myEventCallbackCommand->SetCallback(SVTK_RenderWindowInteractor::ProcessEvents);
 }
 
+/*!
+  To initialize properly the class
+*/
 void
 SVTK_RenderWindowInteractor
 ::Initialize(vtkGenericRenderWindowInteractor* theDevice,
@@ -413,7 +482,9 @@ SVTK_RenderWindowInteractor
   SetSelector(theSelector);
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Destructor
+*/
 SVTK_RenderWindowInteractor
 ::~SVTK_RenderWindowInteractor() 
 {
@@ -431,7 +502,9 @@ SVTK_RenderWindowInteractor
   GetDevice()->SetRenderWindow(NULL);
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To get corresponding SVTK_Renderer instance
+*/
 SVTK_Renderer* 
 SVTK_RenderWindowInteractor
 ::GetRenderer()
@@ -439,6 +512,9 @@ SVTK_RenderWindowInteractor
   return myRenderer.GetPointer();
 }
 
+/*!
+  To get corresponding SVTK_Renderer device (just to simplify collobaration with SVTK_Renderer)
+*/
 vtkRenderer* 
 SVTK_RenderWindowInteractor
 ::getRenderer()
@@ -446,6 +522,10 @@ SVTK_RenderWindowInteractor
   return GetRenderer()->GetDevice();
 }
 
+/*!
+  Changes renderer
+  \param theRenderer - new renderer
+*/
 void
 SVTK_RenderWindowInteractor
 ::SetRenderer(SVTK_Renderer* theRenderer)
@@ -463,7 +543,10 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Changes interactor style
+  \param theStyle - new interactor style
+*/
 void
 SVTK_RenderWindowInteractor
 ::InitInteractorStyle(vtkInteractorStyle* theStyle)
@@ -471,8 +554,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)
@@ -481,8 +565,9 @@ SVTK_RenderWindowInteractor
   InitInteractorStyle(theStyle);
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  To restore previous interactor style
+*/
 void
 SVTK_RenderWindowInteractor
 ::PopInteractorStyle()
@@ -494,8 +579,9 @@ SVTK_RenderWindowInteractor
     InitInteractorStyle(GetInteractorStyle());
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  To get current interactor style
+*/
 vtkInteractorStyle* 
 SVTK_RenderWindowInteractor
 ::GetInteractorStyle()
@@ -504,7 +590,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  To get current selector
+*/
 SVTK_Selector* 
 SVTK_RenderWindowInteractor
 ::GetSelector() 
@@ -513,6 +601,10 @@ SVTK_RenderWindowInteractor
 }
 
 
+/*!
+  Changes selector
+  \param theSelector - new selector
+*/
 void
 SVTK_RenderWindowInteractor
 ::SetSelector(SVTK_Selector* theSelector)
@@ -528,8 +620,9 @@ SVTK_RenderWindowInteractor
                            myPriority);
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  Main process VTK event method
+*/
 void 
 SVTK_RenderWindowInteractor
 ::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
@@ -546,8 +639,9 @@ SVTK_RenderWindowInteractor
   }
 }
 
-
-//----------------------------------------------------------------
+/*!
+  To change selection mode (just to simplify collobaration with SVTK_Selector)
+*/
 void
 SVTK_RenderWindowInteractor
 ::SetSelectionMode(Selection_Mode theMode)
@@ -555,8 +649,9 @@ SVTK_RenderWindowInteractor
   mySelector->SetSelectionMode(theMode);
 }
 
-
-//----------------------------------------------------------------
+/*!
+  To get current selection mode (just to simplify collobaration with SVTK_Selector)
+*/
 Selection_Mode
 SVTK_RenderWindowInteractor
 ::SelectionMode() const
@@ -565,7 +660,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------
+/*!
+  Emits signal selectionChanged()
+*/
 void
 SVTK_RenderWindowInteractor
 ::onEmitSelectionChanged()
@@ -574,7 +671,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse move event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::mouseMoveEvent( QMouseEvent* event ) 
@@ -586,7 +685,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse press event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::mousePressEvent( QMouseEvent* event ) 
@@ -598,7 +699,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse release event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::mouseReleaseEvent( QMouseEvent *event )
@@ -610,7 +713,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse double click event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::mouseDoubleClickEvent( QMouseEvent* event )
@@ -622,7 +727,9 @@ SVTK_RenderWindowInteractor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  Custom mouse wheel event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::wheelEvent( QWheelEvent* event )
@@ -638,8 +745,9 @@ SVTK_RenderWindowInteractor
     emit WheelMoved( event );
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  Custom key press event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::keyPressEvent( QKeyEvent* event ) 
@@ -650,7 +758,9 @@ SVTK_RenderWindowInteractor
     emit KeyPressed( event );
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Custom key release event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::keyReleaseEvent( QKeyEvent * event ) 
@@ -661,7 +771,9 @@ SVTK_RenderWindowInteractor
     emit KeyReleased( event );
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Custom context menu event handler
+*/
 void
 SVTK_RenderWindowInteractor
 ::contextMenuEvent( QContextMenuEvent* event )
index 42011c4e2a85966fff17259d587c0773bb667a2e..ce1f76a88b04471e3505a4cd507fda5cfab6937b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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.
@@ -128,9 +128,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,
index cad43a139ad925709e6a2317a4c09b14acc79017..2ca7c7aef08f4490c82a24c420ca1d2f2827aab2 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #undef max
 
 
-//----------------------------------------------------------------------------
 vtkStandardNewMacro(SVTK_Renderer);
 
-//----------------------------------------------------------------------------
+/*!
+  Constructor
+*/
 SVTK_Renderer
 ::SVTK_Renderer():
   myDevice(vtkRenderer::New()),
@@ -74,7 +75,8 @@ SVTK_Renderer
   myTransform(VTKViewer_Transform::New()),
   myCubeAxes(SVTK_CubeAxesActor2D::New()),
   myTrihedron(SVTK_Trihedron::New()),
-  myTrihedronSize(105)
+  myTrihedronSize(105),
+  myIsTrihedronRelative(true)
 {
   myDevice->Delete();
   myTransform->Delete();
@@ -151,6 +153,9 @@ SVTK_Renderer
                           myPriority);
 }
 
+/*!
+  Destructor
+*/
 SVTK_Renderer
 ::~SVTK_Renderer()
 {
@@ -175,6 +180,9 @@ SVTK_Renderer
 }
 
 
+/*!
+  Main process event method
+*/
 void 
 SVTK_Renderer
 ::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
@@ -197,7 +205,9 @@ SVTK_Renderer
   }
 }
 
-//----------------------------------------------------------------------------
+/*!
+  \return renderer's device
+*/
 vtkRenderer* 
 SVTK_Renderer
 ::GetDevice()
@@ -205,6 +215,9 @@ SVTK_Renderer
   return myDevice.GetPointer();
 }
 
+/*!
+  Initialize renderer
+*/
 void 
 SVTK_Renderer
 ::Initialize(vtkRenderWindowInteractor* theInteractor,
@@ -214,7 +227,9 @@ SVTK_Renderer
   mySelector = theSelector;
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Publishes pointed actor into the renderer
+*/
 void
 SVTK_Renderer
 ::AddActor(VTKViewer_Actor* theActor)
@@ -238,6 +253,9 @@ SVTK_Renderer
   }
 }
 
+/*!
+  Removes pointed actor from the renderer
+*/
 void
 SVTK_Renderer
 ::RemoveActor(VTKViewer_Actor* theActor)
@@ -263,6 +281,9 @@ SVTK_Renderer
   }
 }
 
+/*!
+  Get special container that keeps scaling of the scene
+*/
 VTKViewer_Transform* 
 SVTK_Renderer
 ::GetTransform()
@@ -270,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] ) 
@@ -277,6 +301,9 @@ SVTK_Renderer
   myTransform->GetMatrixScale( theScale );
 }
 
+/*!
+  Allows to apply a scale on the whole scene
+*/
 void
 SVTK_Renderer
 ::SetScale( double theScale[3] ) 
@@ -285,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, 
@@ -299,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, 
@@ -312,7 +342,9 @@ SVTK_Renderer
   myPreHighlightProperty->SetPointSize( theWidth );
 }
 
-//----------------------------------------------------------------------------
+/*!
+  Setup requested tolerance for the picking
+*/
 void
 SVTK_Renderer
 ::SetSelectionTolerance(const double& theTolNodes, 
@@ -326,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 &&
@@ -342,6 +373,9 @@ CheckBndBox(const float theBounds[6])
   return false;
 }
 
+/*!
+  Adjusts size of actors
+*/
 bool
 SVTK_Renderer
 ::OnAdjustActors()
@@ -349,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;
 
@@ -362,9 +396,14 @@ SVTK_Renderer
       myCubeAxes->VisibilityOff();
 
     // if the new trihedron size have sufficient difference, then apply the value
-    double aSize = myTrihedron->GetSize();
-    ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize);
-    myTrihedron->SetSize(aSize);
+    vtkFloatingPointType aSize = myTrihedron->GetSize();
+    if ( IsTrihedronRelative() )
+      {
+       ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize);
+       myTrihedron->SetSize(aSize);
+      }
+    else
+      myTrihedron->SetSize( myTrihedronSize );
 
     // iterate through displayed objects and set size if necessary
     vtkActorCollection* anActors = GetDevice()->GetActors();
@@ -374,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]) 
@@ -408,6 +447,9 @@ SVTK_Renderer
   return false;
 }
 
+/*!
+  Adjusts size of actors
+*/
 void
 SVTK_Renderer
 ::AdjustActors()
@@ -416,16 +458,26 @@ 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)
+::SetTrihedronSize(int theSize, const bool theRelative)
 {
-  if(myTrihedronSize != theSize){
+  if(myTrihedronSize != theSize || myIsTrihedronRelative != theRelative){
     myTrihedronSize = theSize;
+    myIsTrihedronRelative = theRelative;
     AdjustActors();
   }
 }
 
+/*!
+  \return size of the trihedron in percents from bounding box of the scene
+*/
 int
 SVTK_Renderer
 ::GetTrihedronSize() const
@@ -433,8 +485,19 @@ SVTK_Renderer
   return myTrihedronSize;
 }
 
+/*!
+  \return true if the size of the trihedron is relative
+*/
+bool 
+SVTK_Renderer
+::IsTrihedronRelative() const
+{
+  return myIsTrihedronRelative;
+}
 
-//----------------------------------------------------------------------------
+/*!
+  \return trihedron control
+*/
 VTKViewer_Trihedron* 
 SVTK_Renderer
 ::GetTrihedron()
@@ -442,6 +505,9 @@ SVTK_Renderer
   return myTrihedron.GetPointer();
 }
 
+/*!
+  \return true if trihedron is displayed
+*/
 bool
 SVTK_Renderer
 ::IsTrihedronDisplayed()
@@ -449,6 +515,9 @@ SVTK_Renderer
   return myTrihedron->GetVisibility() == VTKViewer_Trihedron::eOn;
 }
 
+/*!
+  Toggle trihedron visibility
+*/
 void 
 SVTK_Renderer
 ::OnViewTrihedron()
@@ -459,6 +528,9 @@ SVTK_Renderer
     myTrihedron->VisibilityOn();
 }
 
+/*!
+  Adjust size of the trihedron to the bounding box of the scene
+*/
 void
 SVTK_Renderer
 ::OnAdjustTrihedron()
@@ -466,8 +538,9 @@ SVTK_Renderer
   AdjustActors();
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  \return graduated rules control
+*/
 SVTK_CubeAxesActor2D* 
 SVTK_Renderer
 ::GetCubeAxes()
@@ -475,6 +548,9 @@ SVTK_Renderer
   return myCubeAxes.GetPointer();
 }
 
+/*!
+  \return true if graduated rules displayed
+*/
 bool
 SVTK_Renderer
 ::IsCubeAxesDisplayed()
@@ -482,6 +558,9 @@ SVTK_Renderer
   return myCubeAxes->GetVisibility() == 1;
 }
 
+/*!
+  Toggle graduated rules visibility
+*/
 void
 SVTK_Renderer
 ::OnViewCubeAxes()
@@ -492,6 +571,9 @@ SVTK_Renderer
     myCubeAxes->VisibilityOn();
 }
 
+/*!
+  Adjust size of the graduated rules to the bounding box of the scene
+*/
 void
 SVTK_Renderer
 ::OnAdjustCubeAxes()
@@ -499,8 +581,9 @@ SVTK_Renderer
   AdjustActors();
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  Sets camera into predefined state
+*/
 void
 SVTK_Renderer
 ::OnResetView()
@@ -527,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()
@@ -571,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()
@@ -581,8 +666,9 @@ SVTK_Renderer
   ::ResetCameraClippingRange(GetDevice());
 }
 
-
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to front view
+*/
 void
 SVTK_Renderer
 ::OnFrontView()
@@ -594,7 +680,9 @@ SVTK_Renderer
   this->OnFitAll();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to back view
+*/
 void
 SVTK_Renderer
 ::OnBackView()
@@ -606,7 +694,9 @@ SVTK_Renderer
   this->OnFitAll();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to top view
+*/
 void
 SVTK_Renderer
 ::OnTopView()
@@ -618,7 +708,9 @@ SVTK_Renderer
   this->OnFitAll();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to bottom view
+*/
 void
 SVTK_Renderer
 ::OnBottomView()
@@ -630,7 +722,9 @@ SVTK_Renderer
   this->OnFitAll();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to left view
+*/
 void
 SVTK_Renderer
 ::OnLeftView()
@@ -642,7 +736,9 @@ SVTK_Renderer
   this->OnFitAll();
 }
 
-//----------------------------------------------------------------------------
+/*!
+  To reset direction of the camera to right view
+*/
 void
 SVTK_Renderer
 ::OnRightView()
index 5f486543ca9c3e9f5f1a7fe1be48cb531619cb73..c9908539d1c050855e967d791200374151b40482 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -30,6 +30,7 @@
 #define SVTK_Renderer_h
 
 #include "SVTK.h"
+#include "VTKViewer.h"
 
 #include <vtkObject.h>
 #include <vtkSmartPointer.h>
@@ -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);
@@ -127,12 +128,16 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject
 
   //! Set size of the trihedron in percents from bounding box of the scene
   void
-  SetTrihedronSize(int theSize);
+  SetTrihedronSize(int theSize, const bool theRelative = true);
  
   //! Get size of the trihedron in percents from bounding box of the scene
   int  
   GetTrihedronSize() const;
 
+  //! Shows if the size of the trihedron is relative
+  bool  
+  IsTrihedronRelative() const;
+
   //----------------------------------------------------------------------------
   //! Get trihedron control
   VTKViewer_Trihedron* 
@@ -205,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<vtkCallbackCommand> myEventCallbackCommand;
@@ -238,8 +243,9 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject
   //----------------------------------------------------------------------------
   vtkSmartPointer<SVTK_CubeAxesActor2D> myCubeAxes;
   vtkSmartPointer<VTKViewer_Trihedron> myTrihedron;  
-  int myTrihedronSize;
-  float myBndBox[6];
+  int  myTrihedronSize;
+  bool myIsTrihedronRelative;
+  vtkFloatingPointType myBndBox[6];
 };
 
 #endif
index 3307565c24959beb09f32d00e6a177902e4c09b6..4b0b4f55d6266bf64cef88b523264fb394361800 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index cfa753f9794921fde9cd8f6d12eda4e12fd254ad..75d01316f0ddbc9dd9b824c3725af908d3adaf7f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index b05a168a2a1f4ce09494975525e6aaa6cde3f9a2..d93bd4b448f7e24a1786cf20dd21bc01bdb6338f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -36,6 +36,9 @@
 
 #include <vtkCallbackCommand.h>
 
+/*!
+  \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,8 +267,15 @@ SVTK_SelectorDef
     theIndex.Clear();
 }
 
-bool SVTK_SelectorDef::IsIndexSelected( const Handle(SALOME_InteractiveObject)& theIO, 
-                                                   int theIndex) const
+/*!
+  \return true if the index presents in subselection 
+  \param theIO - SALOME_InteractiveObject
+  \param theIndex - index
+*/
+bool
+SVTK_SelectorDef
+::IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, 
+                 int theIndex) const
 {
   TMapIOSubIndex::const_iterator anIter = myMapIOSubIndex.find(theIO);
   if(anIter != myMapIOSubIndex.end()){
@@ -248,6 +308,12 @@ static bool removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, const int theI
   return anId != 0;
 }
 
+/*!
+  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, 
@@ -277,6 +343,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, 
@@ -307,6 +379,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, 
@@ -337,6 +415,12 @@ SVTK_SelectorDef
   return false;
 }
 
+
+/*!
+  Removes index of subselection for SALOME_InteractiveObject
+  \param theIO - SALOME_InteractiveObject
+  \param theIndex - index
+*/
 void
 SVTK_SelectorDef
 ::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, 
@@ -349,6 +433,9 @@ SVTK_SelectorDef
   }
 }
 
+/*!
+  Clears all indices of subselection
+*/
 void 
 SVTK_SelectorDef
 ::ClearIndex()
@@ -356,7 +443,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)
@@ -364,7 +454,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
@@ -372,7 +465,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)
@@ -381,7 +477,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,
@@ -398,7 +499,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
index 8d8fec33cd2fedbdf7481bbad06e80e7b82c6964..380e28b31ef2e37ccc9a0265d2be8c0499480c6b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -128,7 +128,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, 
@@ -155,7 +155,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, 
index 050a6838a3fd15d48c442c9b2b494778e1482e3a..e20d764ec73c54b1b358f83c8dfd02b5b6a08e6d 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 8ee2e21d77e37311006ca046eae2d4b81753e1bc..7d858a7809b2aff7fe0b5152e0f2227eb5ef3c5c 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 #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 )
@@ -51,7 +52,9 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance()
   return myInstance;
 }
 
-//---------------------------------------------
+/*!
+  Constructor
+*/
 SVTK_SpaceMouse::SVTK_SpaceMouse()
 {
 #ifndef WIN32
@@ -60,9 +63,11 @@ SVTK_SpaceMouse::SVTK_SpaceMouse()
   spaceMouseOn = 0;
 }
 
-//---------------------------------------------
 #ifndef WIN32
 
+/*!
+  Initialization
+*/
 int SVTK_SpaceMouse::initialize( Display *display, Window window )
 {
  XMotionEvent        = XInternAtom( display, "MotionEvent",        1 );
@@ -84,7 +89,6 @@ int SVTK_SpaceMouse::initialize( Display *display, Window window )
  return spaceMouseOn; 
 }
 
-//---------------------------------------------
 static int errorCallback( Display *display, XErrorEvent *Error )
 {
   char msg[ 128 ];
@@ -95,7 +99,9 @@ static int errorCallback( Display *display, XErrorEvent *Error )
   return 0;
 }
 
-//---------------------------------------------
+/*!
+  Initialize by window
+*/
 int SVTK_SpaceMouse::setWindow( Display *display, Window window )
 {
   XTextProperty winName;
@@ -152,7 +158,9 @@ int SVTK_SpaceMouse::setWindow( Display *display, Window window )
   return result;
 }
 
-//---------------------------------------------
+/*!
+  Close
+*/
 int SVTK_SpaceMouse::close(Display *display)
 {
   initialize( display, (Window)InputFocus );
@@ -161,7 +169,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 )
 {
index a282dae6f5b5b14acc320e44c331a92b8a69d03a..f920bf44a9ed4e5d273f93a60a89b5058b31595a 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index ea8783a0764b4d24cfb0dd48bfbc923f2b5593f7..ac0bbd4d89b8dd41e7252cce952185bbca6078a8 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SVTK_Trihedron.h"
 #include "SALOME_Actor.h"
 #include <vtkActorCollection.h>
 #include <vtkRenderer.h>
 
-//****************************************************************
 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)
index 69a80303e3a7a25a88e630837df77b3aad3355b8..3f410cde1210a790949166ab7ceb2fc49df805bc 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SVTK_TRIHEDRON_H
 #define SVTK_TRIHEDRON_H
index 966ff234064483293d1d318e354c785ef020930f..882728b3ae045ff48e015db26c9a877847ad01cf 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -40,8 +40,9 @@
 #include <vtkActorCollection.h>
 #include <vtkRenderer.h>
 
-
-//----------------------------------------------------------------------------
+/*!
+  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<SALOME_Actor>(getRenderer()->GetActors(),
+                      TIsSameEntry<SALOME_Actor>(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<SALOME_Actor>(getRenderer()->GetActors(),
                          TIsSameIObject<SALOME_Actor>(theIObject),
-                         TSetFunction<SALOME_Actor,float>
+                         TSetFunction<SALOME_Actor,vtkFloatingPointType>
                          (&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<SALOME_Actor>(getRenderer()->GetActors(),
                          TIsSameIObject<SALOME_Actor>(theIObject),
-                         TSetFunction<SALOME_Actor,const float*>
+                         TSetFunction<SALOME_Actor,const vtkFloatingPointType*>
                          (&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<SALOME_Actor>(getRenderer()->GetActors(),
                       TIsSameIObject<SALOME_Actor>(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));
   }
index 2512c34979a60495ac7970279e7f66dc892129d1..4c25de9bcead69118b2ec683f2c0e43b6774733a 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #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);
 
index 4822bf63929f04f9bfa7afa976cfcc09c5a0e36d..3465d153573435e354a50f93dde8d74448084dd8 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SVTK_ViewManager.h"
 #include "SVTK_ViewModel.h"
 
 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);
index b200ccc5bd5df9ade5e993fd9cc9a3409f99c892..eda0626005a9b9a8951d87476588a5ca57cccded 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SVTK_VIEWMANAGER_H
 #define SVTK_VIEWMANAGER_H
@@ -36,6 +36,8 @@ public:
   //! Destroy the view manager
   virtual ~SVTK_ViewManager();
 
+  SUIT_Desktop* getDesktop();
+
 protected:
   void setViewName( SUIT_ViewWindow* theView );
 
index 08c2169d53e32a80e1534ca5726943cdbc1fc8f1..61cde9d5bfc80bad611320c7689f643201eeb71e 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include <qpopupmenu.h>
 #include <qcolordialog.h>
 //  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
@@ -77,6 +85,10 @@ SVTK_Viewer
   return myBgColor;
 }
 
+/*!
+  Changes background color
+  \param theColor - new background color
+*/
 void
 SVTK_Viewer
 ::setBackgroundColor( const QColor& theColor )
@@ -88,7 +100,7 @@ SVTK_Viewer
   for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){
     if(SUIT_ViewWindow* aViewWindow = aViews.at(i)){
       if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViewWindow)){
-       aView->getMainWindow()->SetBackgroundColor(theColor);
+       aView->setBackgroundColor(theColor);
       }
     }
   }
@@ -96,46 +108,62 @@ SVTK_Viewer
   myBgColor = theColor;
 }
 
-//==========================================================
-SUIT_ViewWindow* 
+/*!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 )
 {
-  SVTK_ViewWindow* aViewWindow = new SVTK_ViewWindow(theDesktop);
+  TViewWindow* aViewWindow = new TViewWindow(theDesktop);
   aViewWindow->Initialize(this);
-    
+
   aViewWindow->setBackgroundColor( backgroundColor() );
-  aViewWindow->SetTrihedronSize( trihedronSize() );
+  aViewWindow->SetTrihedronSize( trihedronSize(), trihedronRelative() );
 
   return aViewWindow;
 }
 
+/*!
+  \return trihedron size
+*/
 int SVTK_Viewer::trihedronSize() const
 {
   return myTrihedronSize;
 }
 
-void SVTK_Viewer::setTrihedronSize( const int sz )
+/*!
+  \return true if thihedron changes size in accordance with bounding box
+*/
+bool SVTK_Viewer::trihedronRelative() const
 {
-  myTrihedronSize = sz;
-
-  SUIT_ViewManager* vm = getViewManager();
-  if ( !vm )
-    return;
-
-  QPtrVector<SUIT_ViewWindow> vec = vm->getViews();
-  for ( int i = 0; i < vec.count(); i++ )
-  {
-    SUIT_ViewWindow* win = vec.at( i );
-    if ( !win || !win->inherits( "SVTK_ViewWindow" ) )
-      continue;
+  return myTrihedronRelative;
+}
 
-    SVTK_ViewWindow* vw = (SVTK_ViewWindow*)win;
-    vw->SetTrihedronSize( sz );
+/*!
+  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;
+  myTrihedronRelative = theRelative;
+
+  if (SUIT_ViewManager* aViewManager = getViewManager()) {
+    QPtrVector<SUIT_ViewWindow> aViews = aViewManager->getViews();
+    for (int i = 0; i < aViews.count(); i++) {
+      if (TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at(i))) {
+       aView->SetTrihedronSize(theSize, theRelative);
+      }
+    }
   }
 }
 
-//==========================================================
+/*!
+  Sets new view manager
+  \param theViewManager - new view manager
+*/
 void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
 {
   SUIT_ViewModel::setViewManager(theViewManager);
@@ -153,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 )
@@ -164,31 +194,40 @@ SVTK_Viewer
   thePopup->insertSeparator();
 
   if(TViewWindow* aView = dynamic_cast<TViewWindow*>(myViewManager->getActiveView())){
-    if ( !aView->getView()->GetMainWindow()->getToolBar()->isVisible() ){
+    if ( !aView->getMainWindow()->getToolBar()->isVisible() ){
       thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
     }
   }
 }
 
-//==========================================================
+/*!
+  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)
@@ -197,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)
@@ -206,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()
@@ -214,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()
@@ -225,7 +272,9 @@ SVTK_Viewer
   }
 }
 
-//==========================================================
+/*!
+  SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window
+*/
 void
 SVTK_Viewer
 ::onShowToolbar() 
@@ -233,12 +282,15 @@ SVTK_Viewer
   QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
   for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){
     if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at(i))){
-      aView->getView()->GetMainWindow()->getToolBar()->show();
+      aView->getMainWindow()->getToolBar()->show();
     }
   }
 }
 
-//==========================================================
+/*!
+  Display presentation
+  \param prs - presentation
+*/
 void
 SVTK_Viewer
 ::Display( const SALOME_VTKPrs* prs )
@@ -283,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 )
@@ -323,8 +379,11 @@ SVTK_Viewer
     }
   }
 }
-  
-//==========================================================
+
+/*!
+  Erase all presentations
+  \param forced - removes all objects from view
+*/
 void
 SVTK_Viewer
 ::EraseAll( const bool forced )
@@ -369,7 +428,10 @@ SVTK_Viewer
   Repaint();
 }
 
-//==========================================================
+/*!
+  Create presentation corresponding to the entry
+  \param entry - entry
+*/
 SALOME_Prs* 
 SVTK_Viewer
 ::CreatePrs( const char* entry )
@@ -393,7 +455,9 @@ SVTK_Viewer
   return prs;
 }
 
-//==========================================================
+/*!
+  Auxiliary method called before displaying of objects
+*/
 void
 SVTK_Viewer
 ::BeforeDisplay( SALOME_Displayer* d )
@@ -401,29 +465,37 @@ 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 )
 {
   QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
   for(int i = 0, iEnd = aViews.size(); i < iEnd; i++)
-    if(SVTK_ViewWindow* aViewWindow = dynamic_cast<SVTK_ViewWindow*>(aViews.at(i)))
-      if(SVTK_View* aView = aViewWindow->getView())
-       if(!aView->isVisible( io ))
-         return false;
+    if(SUIT_ViewWindow* aViewWindow = aViews.at(i))
+      if(TViewWindow* aViewWnd = dynamic_cast<TViewWindow*>(aViewWindow))
+        if(SVTK_View* aView = aViewWnd->getView())
+          if(!aView->isVisible( io ))
+            return false;
 
   return true;
 }
 
-//==========================================================
+/*!
+  Updates current viewer
+*/
 void 
 SVTK_Viewer
 ::Repaint()
@@ -431,7 +503,7 @@ SVTK_Viewer
 //  if (theUpdateTrihedron) onAdjustTrihedron();
   QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
   for(int i = 0, iEnd = aViews.size(); i < iEnd; i++)
-    if(SVTK_ViewWindow* aViewWindow = dynamic_cast<SVTK_ViewWindow*>(aViews.at(i)))
+    if(TViewWindow* aViewWindow = dynamic_cast<TViewWindow*>(aViews.at(i)))
       if(SVTK_View* aView = aViewWindow->getView())
        aView->Repaint();
 }
index 5875d465e57aecb54e59b34d820ee5c37d246beb..3c55105c11344537a2c229b36a2404a5f8ed3ebd 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SVTK_VIEWMODEL_H
 #define SVTK_VIEWMODEL_H
@@ -65,8 +65,11 @@ public:
   //! Get size of trihedron of the viewer (see #SVTK_Renderer::SetTrihedronSize)
   int trihedronSize() const;
 
+  //! Shows if the size of trihedron relative (see #SVTK_Renderer::SetTrihedronSize)
+  bool trihedronRelative() const;
+
   //! Set size of trihedron of the viewer (see #SVTK_Renderer::SetTrihedronSize)
-  void setTrihedronSize( const int );
+  void setTrihedronSize( const int, const bool = true );
 
 public:
   void enableSelection(bool isEnabled);
@@ -115,6 +118,7 @@ protected slots:
 private:
   QColor myBgColor;
   int    myTrihedronSize;
+  bool   myTrihedronRelative;
   bool   mySelectionEnabled;
   bool   myMultiSelectionEnabled;
 };
index d58827229b1859960be995921d70c33ae99c41e2..49f335e664616348db9c41088c9884fdd537539e 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef SVTK_SELECTIONCHANGED_H
 #define SVTK_SELECTIONCHANGED_H
 
index b95a23d20a35b7a479fa6438cfd6e9a0b62fb034..3fee43d8e104b13f9659982791524520c7e65834 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SALOME_Actor.h"
 
@@ -28,6 +28,7 @@
 #include <vtkCamera.h>
 #include <vtkPointPicker.h>
 #include <vtkCellPicker.h>
+#include <vtkAxisActor2D.h>
 
 #include "QtxAction.h"
 
 #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,11 +554,16 @@ SVTK_ViewWindow
   return myMainWindow->GetTrihedronSize();
 }
 
+/*!
+  Sets trihedron size
+  \param theSize - new trihedron size
+  \param theRelative - trihedron relativeness
+*/
 void
 SVTK_ViewWindow
-::SetTrihedronSize(const int theSize)
+::SetTrihedronSize(const int theSize, const bool theRelative)
 {
-  myMainWindow->SetTrihedronSize(theSize);
+  myMainWindow->SetTrihedronSize(theSize, theRelative);
 }
 
 /*! If parameter theIsForcedUpdate is true, recalculate parameters for
@@ -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,15 +742,273 @@ 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
+ */
+QString
+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 );
+  camera->GetViewUp( viewUp );
+  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] );
+
+  // 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
+*/
+void
+SVTK_ViewWindow
+::setVisualParameters( const QString& parameters )
+{
+  SVTK_RenderWindowInteractor* anInteractor = getMainWindow()->GetInteractor();
+  if ( anInteractor->isVisible() ) {
+    doSetVisualParameters( parameters ); 
+  }
+  else {
+    myVisualParams = parameters;
+    anInteractor->installEventFilter(this);
+  }
+}
+
+/*!
+  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() >= nNormalParams ) {
+    // 'reading' list of parameters
+    double pos[3], focalPnt[3], viewUp[3], parScale, scale[3];
+    pos[0] = paramsLst[0].toDouble();
+    pos[1] = paramsLst[1].toDouble();
+    pos[2] = paramsLst[2].toDouble();
+    focalPnt[0] = paramsLst[3].toDouble();
+    focalPnt[1] = paramsLst[4].toDouble();
+    focalPnt[2] = paramsLst[5].toDouble();
+    viewUp[0] = paramsLst[6].toDouble();
+    viewUp[1] = paramsLst[7].toDouble();
+    viewUp[2] = paramsLst[8].toDouble();
+    parScale = paramsLst[9].toDouble();
+    scale[0] = paramsLst[10].toDouble();
+    scale[1] = paramsLst[11].toDouble();
+    scale[2] = paramsLst[12].toDouble();
+    
+    // applying parameters
+    vtkCamera* camera = getRenderer()->GetActiveCamera();
+    camera->SetPosition( pos );
+    camera->SetFocalPoint( focalPnt );
+    camera->SetViewUp( viewUp );
+    camera->SetParallelScale( parScale );
+    SetScale( scale );
+
+    // 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();
+    }
+  }
+}
+
+
+/*!
+  Delayed setVisualParameters
+*/
+bool SVTK_ViewWindow::eventFilter( QObject* theWatched, QEvent* theEvent )
+{
+  if ( theEvent->type() == QEvent::Show && theWatched->inherits( "SVTK_RenderWindowInteractor" ) ) {
+    SVTK_RenderWindowInteractor* anInteractor = (SVTK_RenderWindowInteractor*)theWatched;
+    if ( anInteractor->isVisible() ) {
+      doSetVisualParameters( myVisualParams );
+      anInteractor->removeEventFilter( this ); // theWatched = RenderWindowInteractor
+    }
+  }
+  return SUIT_ViewWindow::eventFilter( theWatched, theEvent );
 }
index 0c1479a394cd8fa829d471103fc4029e398ec1c1..7a0808be5318cd6eacf274ebe83749d516638917 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SVTK_VIEWWINDOW_H
 #define 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);
@@ -219,7 +219,7 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   //! Redirect the request to #SVTK_Renderer::SetTrihedronSize
   virtual
   void 
-  SetTrihedronSize( const int );
+  SetTrihedronSize( const int, const bool = true );
 
   //! Redirect the request to #SVTK_Renderer::SetSelectionProp
   virtual
@@ -242,6 +242,19 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   void
   SetSelectionTolerance(const double& theTolNodes = 0.025, 
                        const double& theTolCell = 0.001);
+
+  //! Methods to save/restore visual parameters of a view (pan, zoom, etc.)
+  virtual 
+  QString   
+  getVisualParameters();
+  
+  virtual
+  void
+  setVisualParameters( const QString& parameters );
+
+  virtual
+  bool
+  eventFilter( QObject*, QEvent* );
   
 public slots:
   virtual
@@ -326,12 +339,17 @@ protected:
   Initialize(SVTK_View* theView,
             SVTK_ViewModelBase* theModel);
 
+  void
+  doSetVisualParameters( const QString& );
+
   QImage dumpView();
-  virtual void action( const int );
+  virtual bool action( const int );
 
   SVTK_View* myView;
   SVTK_MainWindow* myMainWindow;
   SVTK_ViewModelBase* myModel;
+
+  QString myVisualParams; // used for delayed setting of view parameters 
 };
 
 extern "C"
index eb7db7c202b227788cfd34721e39cfc2a81420ae..1e28bfdbd21fae8236b84b49bb99b328518f7e28 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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, -"
+
index 308e5126b4c896efd012c360cd5b02d467cdf9a5..ed377dfaf377db71f9f9d7f093b5a4c20c78372b 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  File   : Makefile.in
 #  Author : Vladimir Klyachin (OCN)
 #  Module : SalomeApp
@@ -25,7 +43,8 @@ EXPORT_HEADERS= SalomeApp.h \
                SalomeApp_Filter.h \
                SalomeApp_TypeFilter.h \
                SalomeApp_StudyPropertiesDlg.h \
-               SalomeApp_CheckFileDlg.h
+               SalomeApp_CheckFileDlg.h \
+               SalomeApp_VisualState.h
 
 # .po files to transform in .qm
 PO_FILES = SalomeApp_images.po \
@@ -48,7 +67,8 @@ LIB_SRC= SalomeApp_Module.cxx \
         SalomeApp_TypeFilter.cxx \
         SalomeApp_StudyPropertiesDlg.cxx \
         SalomeApp_ListView.cxx \
-        SalomeApp_CheckFileDlg.cxx
+        SalomeApp_CheckFileDlg.cxx \
+        SalomeApp_VisualState.cxx
 
 LIB_MOC = SalomeApp_Application.h \
          SalomeApp_DataModel.h \
@@ -65,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 $(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@
 
index d590d27a793f2370fd47dbf30c08efafccf8c080..130299b083a15629df889a2ec49c8541746ae952 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp.h
 // Created:   November, 2004
 // Author:    OCC team
index 5139ce4f2a74240ae1f3fafdd2d405a940225e9b..5e73de8a68d0e045911a1063dcb3b84bd7447f67 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_Application.cxx
 // Created:   10/22/2004 3:23:45 PM
 // Author:    Sergey LITONIN
 #include "SalomeApp_DataModel.h"
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_EventFilter.h"
+#include "SalomeApp_VisualState.h"
 
 #include "SalomeApp_StudyPropertiesDlg.h"
 
-#include "SalomeApp_CheckFileDlg.h"
-
 #include "LightApp_Application.h"
 #include "LightApp_Preferences.h"
 #include "LightApp_WidgetContainer.h"
 #include "LightApp_SelectionMgr.h"
+#include "LightApp_NameDlg.h"
 
 #include "STD_LoadStudiesDlg.h"
 
 #include <qcombobox.h>
 #include <qlistbox.h>
 #include <qregexp.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
 
-#include "SALOMEDS_StudyManager.hxx"
-#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDSClient_ClientFactory.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
 
 #include "SALOME_ListIteratorOfListIO.hxx"
 #include "SALOME_ListIO.hxx"
 #include "ToolsGUI_CatalogGeneratorDlg.h"
 #include "ToolsGUI_RegWidget.h"
 
+#include <SALOMEDSClient_ClientFactory.hxx>
+
 /*!Create new instance of SalomeApp_Application.*/
 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()
@@ -99,6 +117,12 @@ void SalomeApp_Application::createActions()
 
   SUIT_Desktop* desk = desktop();
   
+  //! Save GUI state
+  // "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" ),
@@ -126,6 +150,10 @@ void SalomeApp_Application::createActions()
 
   int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -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 );
@@ -133,7 +161,7 @@ void SalomeApp_Application::createActions()
   createMenu( PropertiesId, fileMenu, 10, -1 );
   createMenu( separator(), fileMenu, -1, 15, -1 );
 
-  int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, -1, 50 );
+  int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, MenuToolsId, 50 );
   createMenu( CatalogGenId, toolsMenu, 10, -1 );
   createMenu( RegDisplayId, toolsMenu, 10, -1 );
   createMenu( separator(), toolsMenu, -1, 15, -1 );
@@ -327,6 +355,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())
     {
@@ -362,12 +398,8 @@ void SalomeApp_Application::onSelectionChanged()
          _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry());
 
          if ( so ) {
-           SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(so.get());
-
-           if ( aSO ) {
              canCopy = studyMgr()->CanCopy(so);
              canPaste = studyMgr()->CanPaste(so);
-           }
          }
        }
      }
@@ -424,10 +456,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 );
@@ -441,10 +472,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();
@@ -459,14 +489,41 @@ void SalomeApp_Application::updateCommandsStatus()
   if ( a )
     a->setEnabled( activeStudy() );
 
+  // Properties menu
   a = action( PropertiesId );
   if( a )
     a->setEnabled( activeStudy() );
 
+  // Save GUI state menu
+  a = action( SaveGUIStateId );
+  if( a )
+    a->setEnabled( activeStudy() );
+
   // update state of Copy/Paste menu items
   onSelectionChanged();
 }
 
+/*!
+  \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
+{
+public:
+  DumpStudyFileDlg( QWidget* parent ) : SUIT_FileDlg( parent, false, true, true ) 
+  {
+    QHBox* hB = new QHBox( this );
+    myPublishChk = new QCheckBox( tr("PUBLISH_IN_STUDY"), hB );
+    mySaveGUIChk = new QCheckBox( tr("SAVE_GUI_STATE"), hB );
+    QPushButton* pb = new QPushButton(this);      
+    addWidgets( new QLabel("", this), hB, pb );
+    pb->hide();    
+  }
+  QCheckBox* myPublishChk;
+  QCheckBox* mySaveGUIChk;
+};
+
 /*!Private SLOT. On dump study.*/
 void SalomeApp_Application::onDumpStudy( )
 {
@@ -477,23 +534,35 @@ void SalomeApp_Application::onDumpStudy( )
   QStringList aFilters;
   aFilters.append( tr( "PYTHON_FILES_FILTER" ) );
 
-  SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg( desktop(), false, tr("PUBLISH_IN_STUDY"), true, true);
+  DumpStudyFileDlg* fd = new DumpStudyFileDlg( desktop() );
   fd->setCaption( tr( "TOT_DESK_FILE_DUMP_STUDY" ) );
   fd->setFilters( aFilters );
-  fd->SetChecked(true);
+  fd->myPublishChk->setChecked( true );
+  fd->mySaveGUIChk->setChecked( true );
   fd->exec();
   QString aFileName = fd->selectedFile();
-  bool toPublish = fd->IsChecked();
+  bool toPublish = fd->myPublishChk->isChecked();
+  bool toSaveGUI = fd->mySaveGUIChk->isChecked();
   delete fd;
 
-  if(!aFileName.isEmpty()) {
+  if ( !aFileName.isEmpty() ) {
     QFileInfo aFileInfo(aFileName);
-    bool res = aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish );
+    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
+      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 ) 
+      appStudy->removeSavePoint(savePoint); //SRN: remove the created temporary save point.
     if ( !res )
-    SUIT_MessageBox::warn1 ( desktop(),
-                            QObject::tr("WRN_WARNING"),
-                            tr("WRN_DUMP_STUDY_FAILED"),
-                            QObject::tr("BUT_OK") );
+      SUIT_MessageBox::warn1 ( desktop(),
+                              QObject::tr("WRN_WARNING"),
+                              tr("WRN_DUMP_STUDY_FAILED"),
+                              QObject::tr("BUT_OK") );
   }
 }
 
@@ -529,6 +598,18 @@ void SalomeApp_Application::onLoadScript( )
   }
 }
 
+/*!Private SLOT. On save GUI state.*/
+void SalomeApp_Application::onSaveGUIState()
+{
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+  if ( study ) {
+    SalomeApp_VisualState( this ).storeState();
+    updateSavePointDataObjects( study );
+    objectBrowser()->updateTree( study->root() );
+  }
+  updateActions();
+}
+
 /*!Gets file filter.
  *\retval QString "(*.hdf)"
  */
@@ -589,6 +670,11 @@ void SalomeApp_Application::createPreferences( LightApp_Preferences* pref )
                          LightApp_Preferences::Bool, "ObjectBrowser", QString().sprintf( "visibility_column_%d", i ) );
   }
   pref->setItemProperty( defCols, "columns", 1 );
+
+  // adding preference to LightApp_Application handled preferences..  a bit of hacking with resources..
+  int genTab = pref->addPreference( LightApp_Application::tr( "PREF_TAB_GENERAL" ), salomeCat );
+  int studyGroup = pref->addPreference( LightApp_Application::tr( "PREF_GROUP_STUDY" ), genTab );
+  pref->addPreference( tr( "PREF_STORE_VISUAL_STATE" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_visual_state" );
 }
 
 /*!Update desktop title.*/
@@ -630,8 +716,9 @@ CORBA::ORB_var SalomeApp_Application::orb()
 /*!Create and return SALOMEDS_StudyManager.*/
 SALOMEDSClient_StudyManager* SalomeApp_Application::studyMgr()
 {
-  static SALOMEDSClient_StudyManager* _sm = new SALOMEDS_StudyManager();
-  return _sm;
+  static _PTR(StudyManager) _sm;
+  if(!_sm) _sm = ClientFactory::StudyManager();
+  return _sm.get();
 }
 
 /*!Create and return SALOME_NamingService.*/
@@ -695,6 +782,15 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
   LightApp_SelectionMgr* mgr = selectionMgr();
   mgr->selectedObjects( aList, QString::null, false );
 
+  // add GUI state commands: restore, rename
+  if ( aList.Extent() == 1 && aList.First()->hasEntry() && 
+       QString( aList.First()->getEntry() ).startsWith( tr( "SAVE_POINT_DEF_NAME" ) ) ) {
+    thePopup->insertSeparator();
+    thePopup->insertItem( tr( "MEN_RESTORE_VS" ), this, SLOT( onRestoreGUIState() ) );
+    thePopup->insertItem( tr( "MEN_RENAME_VS" ),  this, SLOT( onRenameGUIState() ) );
+    thePopup->insertItem( tr( "MEN_DELETE_VS" ),  this, SLOT( onDeleteGUIState() ) );
+  }
+
   // "Delete reference" item should appear only for invalid references
 
   // isInvalidRefs will be true, if at least one of selected objects is invalid reference
@@ -729,6 +825,10 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
   if (aList.Extent() != 1)
     return;
   Handle(SALOME_InteractiveObject) aIObj = aList.First();
+  // check if item is a "GUI state" item (also a first level object)
+  QString entry( aIObj->getEntry() );
+  if ( entry.startsWith( tr( "SAVE_POINT_DEF_NAME" ) ) )
+    return;
   QString aModuleName(aIObj->getComponentDataType());
   QString aModuleTitle = moduleTitle(aModuleName);
   CAM_Module* currentModule = activeModule();
@@ -740,7 +840,7 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
 /*!Update obect browser:
  1.if 'updateModels' true, update existing data models;
  2. update "non-existing" (not loaded yet) data models;
- 3. update object browser if it existing */
+ 3. update object browser if it exists */
 void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
 {
   // update "non-existing" (not loaded yet) data models
@@ -767,14 +867,11 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
     }
   }
 
+  // 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 );
-
-/*  if ( objectBrowser() )
-  {
-    objectBrowser()->updateGeometry();
-    objectBrowser()->updateTree();
-  }*/
 }
 
 /*!Display Catalog Genenerator dialog */
@@ -836,3 +933,173 @@ 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);
+}
+
+
+/*!Global utility funciton, returns selected GUI Save point object's ID */
+int getSelectedSavePoint( const LightApp_SelectionMgr* selMgr )
+{
+  SALOME_ListIO aList;
+  selMgr->selectedObjects( aList );
+  Handle(SALOME_InteractiveObject) aIObj = aList.First();
+  QString entry( aIObj->getEntry() );
+  QString startStr = QObject::tr( "SAVE_POINT_DEF_NAME" );
+  if ( !entry.startsWith( startStr ) ) // it's a "GUI state" object
+    return -1;
+  bool ok; // conversion to integer is ok?
+  int savePoint = entry.right( entry.length() - startStr.length() ).toInt( &ok );
+  return ok ? savePoint : -1;
+}
+
+/*!Called on Restore GUI State popup command*/
+void SalomeApp_Application::onRestoreGUIState()
+{
+  int savePoint = ::getSelectedSavePoint( selectionMgr() );
+  if ( savePoint == -1 ) 
+    return;  
+  SalomeApp_VisualState( this ).restoreState( savePoint );
+}
+
+/*!Called on Rename GUI State popup command*/
+void SalomeApp_Application::onRenameGUIState()
+{
+  int savePoint = ::getSelectedSavePoint( selectionMgr() );
+  if ( savePoint == -1 ) 
+    return;  
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+  if ( !study ) 
+    return;
+
+  QString newName = LightApp_NameDlg::getName( desktop(), study->getNameOfSavePoint( savePoint ) );
+  if ( !newName.isNull() && !newName.isEmpty() ) {
+    study->setNameOfSavePoint( savePoint, newName );
+    updateSavePointDataObjects( study );
+    objectBrowser()->updateTree( study->root() );
+  }
+}
+
+
+/*!Called on Delete GUI State popup command*/
+void SalomeApp_Application::onDeleteGUIState()
+{
+  int savePoint = ::getSelectedSavePoint( selectionMgr() );
+  if ( savePoint == -1 ) 
+    return;  
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+  if ( !study ) 
+    return;
+  
+  study->removeSavePoint( savePoint );
+  updateSavePointDataObjects( study );
+}
+
+/*!Called on Save study operation*/
+void SalomeApp_Application::onStudySaved( SUIT_Study* study )
+{
+  LightApp_Application::onStudySaved( study );
+
+  if ( objectBrowser() ) {
+    updateSavePointDataObjects( dynamic_cast<SalomeApp_Study*>( study ) );
+    objectBrowser()->updateTree( study->root() );
+  }
+}
+
+/*!Called on Open study operation*/
+void SalomeApp_Application::onStudyOpened( SUIT_Study* study )
+{
+  LightApp_Application::onStudyOpened( study );
+
+  if ( objectBrowser() ) {
+    updateSavePointDataObjects( dynamic_cast<SalomeApp_Study*>( study ) );
+    objectBrowser()->updateTree( study->root() );
+  }
+}
+
+/*! utility function.  returns true if list view item that correspond to given SUIT_DataObject is open.
+ only first level items are traversed */
+bool isListViewItemOpen( QListView* lv, const SUIT_DataObject* dobj )
+{
+  if ( !lv || !dobj )
+    return false;
+
+  QListViewItem* item = lv->firstChild();
+  while ( item ) {
+    OB_ListItem* ob_item = dynamic_cast<OB_ListItem*>( item );
+    if ( ob_item && ob_item->dataObject() == dobj )
+      return ob_item->isOpen();
+    item = item->nextSibling();
+  }
+  return false;
+}
+
+/*! updateSavePointDataObjects: syncronize data objects that correspond to save points (gui states)*/
+void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study )
+{
+  OB_Browser* ob = objectBrowser();
+
+  if ( !study || !ob )
+    return;
+
+  // find GUI states root object
+  SUIT_DataObject* guiRootObj = 0;
+  DataObjectList ch; 
+  study->root()->children( ch ); 
+  DataObjectList::const_iterator it = ch.begin(), last = ch.end();
+  for ( ; it != last ; ++it ) {
+    if ( dynamic_cast<SalomeApp_SavePointRootObject*>( *it ) ) {
+      guiRootObj = *it;
+      break;
+    }
+  }
+  std::vector<int> savePoints = study->getSavePoints();
+  // case 1: no more save points but they existed in study's tree
+  if ( savePoints.empty() && guiRootObj ) {
+    delete guiRootObj;
+    return;
+  }
+  // case 2: no more save points but root does not exist either
+  if ( savePoints.empty() && !guiRootObj )
+    return;
+  // case 3: save points but no root for them - create it
+  if ( !savePoints.empty() && !guiRootObj )
+    guiRootObj = new SalomeApp_SavePointRootObject( study->root() );
+  // 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.
+  if ( guiRootObj->nextBrother() ) {
+    study->root()->removeChild(guiRootObj);
+    study->root()->appendChild(guiRootObj);
+    //study->root()->dump();
+  }
+
+  // store data objects in a map id-to-DataObject
+  QMap<int,SalomeApp_SavePointObject*> mapDO;
+  ch.clear(); 
+  guiRootObj->children( ch ); 
+  for( it = ch.begin(), last = ch.end(); it != last ; ++it ) {
+    SalomeApp_SavePointObject* dobj = dynamic_cast<SalomeApp_SavePointObject*>( *it );
+    if ( dobj )
+      mapDO[dobj->getId()] = dobj;
+  }
+
+  // iterate new save points.  if DataObject with such ID not found in map - create DataObject
+  // if in the map - remove it from map.  
+  for ( int i = 0; i < savePoints.size(); i++ )
+    if ( !mapDO.contains( savePoints[i] ) )
+      new SalomeApp_SavePointObject( guiRootObj, savePoints[i], study );
+    else
+      mapDO.remove( savePoints[i] );
+
+  // delete DataObjects that are still in the map -- their IDs were not found in data model
+  for ( QMap<int,SalomeApp_SavePointObject*>::Iterator it = mapDO.begin(); it != mapDO.end(); ++it )
+    delete it.data();
+}
+
index 0a60577e615f94704401fe0c70cd00bc84f6cfd9..9adf31b6655d6ee845b1138374b8d10ec6b268d1 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_Application.h
 // Created:   10/22/2004 3:37:25 PM
 // Author:    Sergey LITONIN
@@ -27,6 +45,7 @@ class QDockWindow;
 
 class LightApp_Preferences;
 class SalomeApp_Module;
+class SalomeApp_Study;
 
 class SALOME_LifeCycleCORBA;
 
@@ -37,7 +56,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
@@ -45,8 +65,9 @@ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application
   Q_OBJECT
 
 public:
+  enum { MenuToolsId = 5 };
   enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId,
-         CatalogGenId, RegDisplayId, UserID };
+         CatalogGenId, RegDisplayId, SaveGUIStateId, UserID };
 
 public:
   SalomeApp_Application();
@@ -66,12 +87,20 @@ public:
   static SALOME_LifeCycleCORBA*       lcc();
   static QString                      defaultEngineIOR();
 
+  SUIT_ViewManager*                   newViewManager(const QString&);
+  void                                updateSavePointDataObjects( SalomeApp_Study* );
+
 public slots:
   virtual bool                        onOpenDoc( const QString& );
   virtual void                        onLoadDoc();
   virtual bool                        onLoadDoc( const QString& );
   virtual void                        onCopy();
   virtual void                        onPaste();
+  void                                onSaveGUIState();// called from VISU
+
+protected slots:
+  void                                onStudySaved( SUIT_Study* );
+  void                                onStudyOpened( SUIT_Study* );
 
 protected:
   virtual void                        createActions();
@@ -91,6 +120,10 @@ private slots:
   void                                onDumpStudy();
   void                                onLoadScript(); 
 
+  void                                onDeleteGUIState(); 
+  void                                onRestoreGUIState();
+  void                                onRenameGUIState();
+
   void                                onCatalogGen();
   void                                onRegDisplay();
   void                                onOpenWith();
index 370526ff8b82b7eec71de4f38f57874df70adad9..a62a33d4737fda00646b5c1c6b7bb41aff664814 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_CheckFileDlg.h"
 
index 98989a70d742516c46472d4703da86ff191c6d29..53e56683c2c1514292b069ab5f3de9fb2c3f9fdd 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_CHECKFILEDIALOG_H
 #define SALOMEAPP_CHECKFILEDIALOG_H
index 3b11eb66954bb5d6e69a80906a0592c05d62cbbb..6c7129543a0c354afc5ddcefcbb713896f892f75 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_DataModel.cxx
 // Created:   10/25/2004 10:36:06 AM
 // Author:    Sergey LITONIN
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Exception)
 
-#include "SALOMEDS_Tool.hxx"
-
-//=======================================================================
-// 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,25 +69,37 @@ 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;
-  QString name( so->GetName().c_str() );
+  QString name = so->GetName().c_str();
   bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) );
   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,
-                                            const bool asFirst ) const
+                                            const bool prepend ) const
 {
   if( !isCorrect( so ) )
     return 0;
@@ -91,15 +118,19 @@ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so,
       else
        parent->appendChild( nitem );
     }
-    else if( asFirst )
+    else if( prepend )
       parent->insertChild( nitem, 0 );
-    else
+    else // append
       parent->appendChild( nitem );
   else if( myRoot )
     myRoot->appendChild( nitem );
   return nitem;
 }
 
+/*!
+  Deletes object with all children
+  \param p - SUIT object
+*/
 void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const
 {
   if( !p )
@@ -113,22 +144,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<LightApp_DataObject*>( q );
-  return ( !p && !q ) || ( obj && isCorrect( p ) && QString( p->GetID().c_str() ) == obj->entry() );
+  LightApp_ModuleObject* lobj = dynamic_cast<LightApp_ModuleObject*>( q );
+  SalomeApp_DataObject* sobj = dynamic_cast<SalomeApp_DataObject*>( 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<kerPtr>& ch ) const
 {
   ch.clear();
@@ -137,6 +189,11 @@ void SalomeApp_DataModelSync::children( const kerPtr& obj, QValueList<kerPtr>& 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<suitPtr>& ch ) const
 {
   DataObjectList l;
@@ -149,15 +206,26 @@ void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList<suitPtr>& 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 ? "<tree>" : "<empty tree>" );
@@ -173,27 +241,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<SalomeApp_Study*>( study );
@@ -214,20 +279,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<SalomeApp_Study*>(study);
@@ -261,10 +324,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 +334,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<SalomeApp_DataObject*>( *anIt );
-    if( dobj && dobj->name()==sobj->GetName().c_str() )
+    LightApp_DataObject* dobj = dynamic_cast<LightApp_DataObject*>( *anIt );
+    if( dobj && dobj->name() == sobj->GetName().c_str() )
     {
       suitObj = dobj;
       break;
@@ -285,37 +347,15 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob
 
   SalomeApp_DataModelSync sync( study->studyDS(), study->root() );
 
-  //  QString srcName = sobj ? sobj->GetName().c_str() : "";
-  //  QString trgName = ( suitObj && !suitObj->name().isNull() ) ? suitObj->name() : "";
-  //  printf( "--- SalomeApp_DataModel::syncronize() calls synchronize()_1: src = %s, trg = %s ---\n",  srcName.latin1(), trgName.latin1() );
-
-  SUIT_DataObject* o = ::synchronize<kerPtr,suitPtr,SalomeApp_DataModelSync>( sobj, suitObj, sync );
-//  showTree( o );
-  return o;
-}
-
-//================================================================
-// Function : synchronize
-/*! Purpose  : synchronizes kernel tree and suit data tree starting from 'sobj' and 'obj' correspondly */
-//================================================================
-SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SObject )& sobj, SUIT_DataObject* obj,
-                                                  SalomeApp_Study* study )
-{
-  if( !study )
+  if( !suitObj || dynamic_cast<SalomeApp_DataObject*>( suitObj ) )
+    return ::synchronize<kerPtr,suitPtr,SalomeApp_DataModelSync>( sobj, suitObj, sync );
+  else
     return 0;
-  SalomeApp_DataModelSync sync( study->studyDS(), study->root() );
-
-  //  QString srcName = sobj ? sobj->GetName().c_str() : "";
-  //  QString trgName = ( obj && !obj->name().isNull() ) ? obj->name() : "";
-  //  printf( "--- SalomeApp_DataModel::syncronize() calls synchronize()_2: src = s, trg = %s ---\n",  srcName.latin1(), trgName.latin1() );
-
-  return ::synchronize<kerPtr,suitPtr,SalomeApp_DataModelSync>( sobj, obj, sync );
 }
 
-//================================================================
-// Function : updateTree
-/*! Purpose  : updates tree.*/
-//================================================================
+/*!
+  Updates tree.
+*/
 void SalomeApp_DataModel::updateTree( const _PTR( SComponent )& comp, SalomeApp_Study* study )
 {
   SalomeApp_ModuleObject* aNewRoot = dynamic_cast<SalomeApp_ModuleObject*>( synchronize( comp, study ) );
@@ -326,20 +366,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<SalomeApp_Module*>( module() );
 }
 
-//================================================================
-// Function : getStudy
-/*! Purpose  : gets study */
-//================================================================
+/*!
+  \return study
+*/
 SalomeApp_Study* SalomeApp_DataModel::getStudy() const
 {
   if(!root()) return 0;
@@ -352,10 +389,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;
index 62e649bc36ad4abd1213390716e5a89e688d9836..9c2bff16a9263b8272e77f6ec09a48be8636d55f 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_DataModel.h
 // Created:   10/25/2004 10:32:33 AM
 // Author:    Sergey LITONIN
@@ -27,10 +45,9 @@ class SALOMEAPP_EXPORT SalomeApp_DataModel : public LightApp_DataModel
 
 public:
   static SUIT_DataObject*             synchronize( const _PTR( SComponent )&, SalomeApp_Study* );
-  static SUIT_DataObject*             synchronize( const _PTR( SObject )&, SUIT_DataObject*, SalomeApp_Study* );
 
-                                      SalomeApp_DataModel ( CAM_Module* theModule );
-  virtual                             ~SalomeApp_DataModel();
+  SalomeApp_DataModel ( CAM_Module* theModule );
+  virtual ~SalomeApp_DataModel();
 
   virtual bool                        open( const QString&, CAM_Study*, QStringList );
   virtual bool                        create( CAM_Study* );
index ef7b8df7b6289f991b54d3395ffeae683f85dc59..d3a4b5c9dd5129326be90c672953df9bfa3cb3f5 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_DataObject.h"
 
 #include "SalomeApp_Study.h"
 #include "LightApp_RootObject.h"
 
+#include <CAM_DataObject.h>
+
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_DataObjectKey.h>
 #include <SALOMEDSClient_AttributeTableOfReal.hxx>
 #include <SALOMEDSClient_AttributeTableOfInteger.hxx>
 
-/*
-       Class: SalomeApp_DataObject
-       Level: Public
-*/
 /*!Constructor. Initialize by \a parent*/
 SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent )
 : LightApp_DataObject( parent ),
@@ -331,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 )
@@ -371,3 +368,50 @@ QString SalomeApp_ModuleObject::name() const
   return SalomeApp_DataObject::name();
 }
 
+
+
+
+/*!Constructor.Initialize by \a parent.*/
+SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* _parent, const int id, SalomeApp_Study* study )
+  : LightApp_DataObject( _parent ), CAM_DataObject( _parent ), // IMPORTANT TO CALL ALL VIRTUAL CONSTRUCTORS!
+    myId( id ),
+    myStudy( study )
+{
+}
+
+/*!Destructor. Do nothing.*/
+SalomeApp_SavePointObject::~SalomeApp_SavePointObject()
+{
+}
+
+/*!Returns save points ID */
+int SalomeApp_SavePointObject::getId() const
+{
+  return myId;
+}
+
+/*!Returns "invalid" entry, which does not correspond to any object in data structure
+  but indicates that it is a save point object  */
+QString SalomeApp_SavePointObject::entry() const
+{
+  return QObject::tr( "SAVE_POINT_DEF_NAME" ) + QString::number( myId );
+}
+
+/*!Returns displayed name of object */
+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() );
+}
+
index 15a1d96bfdb99bfcb5125695625feb8d29e2b37e..7f3ae993d7227973ec6d6d382e1aed3af04314f7 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_DATAOBJECT_H
 #define SALOMEAPP_DATAOBJECT_H
@@ -82,7 +82,45 @@ public:
   SalomeApp_ModuleObject( CAM_DataModel*, const _PTR(SObject)&, SUIT_DataObject* = 0 );
   virtual ~SalomeApp_ModuleObject();
 
-  virtual QString        name() const;
+  virtual QString                 name() const;
+};
+
+/*!
+ * SalomeApp_SavePointObject - class that represents persistent visual_state object
+ * these objects are stored in data model, but NOT in SObjects structure, so we
+ * must handle them separately using this special class for them
+ */
+
+class SALOMEAPP_EXPORT SalomeApp_SavePointObject : public virtual LightApp_DataObject
+{
+public:
+  SalomeApp_SavePointObject( SUIT_DataObject* parent, const int, SalomeApp_Study* study );
+  virtual ~SalomeApp_SavePointObject();
+  
+  virtual QString                 entry() const;
+
+  virtual QString                 name() const;
+  virtual QPixmap                 icon() const;
+  virtual QString                 toolTip() const;
+
+  int                             getId() const;
+
+private:
+  int                             myId;
+  SalomeApp_Study*                myStudy;
+};
+
+/*!
+ * SalomeApp_SavePointRootObject - class that represents parent object for visual_state objects
+ */
+
+class SALOMEAPP_EXPORT SalomeApp_SavePointRootObject : public SUIT_DataObject
+{
+public:
+  SalomeApp_SavePointRootObject( SUIT_DataObject* parent ) : SUIT_DataObject( parent ) {}
+  
+  virtual QString                 name() const   { return QObject::tr( "SAVE_POINT_ROOT_NAME" ); }
+  virtual QString                 toolTip() const{ return QObject::tr( "SAVE_POINT_ROOT_TOOLTIP" ); }
 };
 
 #endif
index 6e2caeda24bf2c99f986ef446788bf4064ce4b3f..55ac92ba5ada02faffadbb9f6c38697bde199746 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "SalomeApp_Displayer.h"
 
 #include <qstring.h>
 
+/*!
+  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 (<forced> == 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();
index 25ba911e23e853f0c352c8a4643d3fc0732e32e3..db5319392cfae616eb71e0e2558c3090c08601fb 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef SALOMEAPP_DISPLAYER_HEADER
index 0db6f5fe3ca858c3ccea053290881a93648eee81..493d690c87e6b05c25fff871e0abe63d77548b8b 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "SalomeApp_EventFilter.h"
@@ -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 )
index 1411a3f5e9f14e0141fd9aab82511d32b816a0de..e8849e231f252b68c2a014fcb2f6ea7a185d476f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_EVENTFILTER_H
 #define SALOMEAPP_EVENTFILTER_H
index 3791d4d9897fd59f0c0a71102063e9ddcdd6681d..b22ab38d891f028ec1be56cac29ddda38f89e092 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_ExceptionHandler.h"
+#include "CASCatch.hxx"
 
 #include <OSD.hxx>
 
-#include <Standard_Failure.hxx>
-#include <Standard_ErrorHandler.hxx>
-
 #include <stdexcept>
 #include <exception>
 
 #include <qstring.h>
 
-#include <CASCatch_CatchSignals.hxx>
-#include <CASCatch_ErrorHandler.hxx>
-#include <CASCatch_Failure.hxx> 
-
-
 /*!Constructor. Initialize by \a floatSignal.*/
 SalomeApp_ExceptionHandler::SalomeApp_ExceptionHandler( const bool floatSignal )
 : SUIT_ExceptionHandler()
@@ -43,32 +36,17 @@ SalomeApp_ExceptionHandler::SalomeApp_ExceptionHandler( const bool floatSignal )
 /*!Try to call SUIT_ExceptionHandler::internalHandle(o, e), catch if failure.*/
 bool SalomeApp_ExceptionHandler::handleSignals( QObject* o, QEvent* e )
 {
-
-  CASCatch_CatchSignals aCatchSignals;
-  aCatchSignals.Activate();
-    
-    
   CASCatch_TRY {   
     SUIT_ExceptionHandler::internalHandle( o, e );
   }
-  CASCatch_CATCH(CASCatch_Failure) {
-    aCatchSignals.Deactivate();
-    Handle(CASCatch_Failure) aFail = CASCatch_Failure::Caught();          
-    throw std::runtime_error( aFail->GetError() );
+  CASCatch_CATCH(Standard_Failure) {
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();          
+    throw Standard_Failure( aFail->GetMessageString() );
   }
   
-  aCatchSignals.Deactivate();   
   return true;
 }
 
-#ifdef try
-#undef try
-#endif
-
-#ifdef catch
-#undef catch
-#endif
-
 /*!Try to call handleSignals( o, e ), catch and show error message.*/
 bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e )
 {
@@ -99,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 );
 }
index 823c3e5303018f08f5180d17d4433eaec290bc3a..4a4c0bdab0adc5cfc75a409692f4975fed8b733d 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_EXCEPTIONHANDLER_H
 #define SALOMEAPP_EXCEPTIONHANDLER_H
index 98f9a1a748675777e91c081746de9b3fa884da5f..b3214ba00d8bc02635b421ea0c334d8b852931c6 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_Filter.h"
 
index e8afc8014f5cacb6f724c996455ee553b9d50983..8de24ccdd1664534cd49a9118d2deaed8c1af7f9 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_FILTER_H
 #define SALOMEAPP_FILTER_H
index 5543f903f4c8400a0fc26f61566193aaadaa95a1..5d19bf6f0b9e6aabe97513d29af2cc04f085af69 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 0cf83bb160e872e9c1b10780c1cd2a8bd59cda5d..56b89558403d594826a8e8edfc1a45d0e098c7fe 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 6f3bd20e116ba503b68e05edb16bfe51d19f7de9..e2c354eaaf6b177e29b81b400794ba6d07906fe7 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SalomeApp
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SalomeApp
 //
 //  File   : SalomeApp_ListView.cxx
 //  Author : Vadim SANDLER
 
 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 +70,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 +96,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 +108,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 +124,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 +140,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 +158,9 @@ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup )
   }
 }
 
-//================================================================
-// Function : SalomeApp_ListView::clear
-/*! Purpose  : clears view*/
-//================================================================
+/*!
+  Clears view
+*/
 void SalomeApp_ListView::clear()
 {
   if (myEdit) {
@@ -169,28 +171,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 +202,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 +217,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 +266,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 +279,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 +290,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 +301,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 +381,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 +416,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 +435,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 +447,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 +460,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 +472,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 +485,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 +499,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 +513,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 +527,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 +541,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 +561,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 +582,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 +603,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 +617,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 +630,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 +642,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 +782,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 +792,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 +819,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 +843,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 +854,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 +891,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 +925,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 +945,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 +965,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 +975,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 +1003,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 +1031,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 <qlayout.h>
 
 #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 +1136,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 +1154,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 +1167,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 +1184,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 +1207,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 +1219,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 +1232,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 +1250,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 +1263,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 +1281,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 +1294,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 +1309,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 +1320,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 +1332,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 +1351,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 +1364,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 +1377,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 +1388,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)
index e7b7552cf3ca30366ee972f3558bac3351424d52..3fa857bb04c9f9cdcaa9e19097ebf0239ed67d78 100644 (file)
@@ -1,13 +1,26 @@
-//  SALOME SalomeApp
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SalomeApp
 //
 //  File   : SalomeApp_ListView.h
 //  Author : Vadim SANDLER
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEAPP_LISTVIEW_H
 #define SALOMEAPP_LISTVIEW_H
@@ -44,10 +57,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
index 9284a579204aae09eaf81fb49d8effd0acea6b1a..332441a6536b102fd79b9db5f1cb78c1180251d8 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_Module.cxx
 // Created:   10/25/2004 11:39:56 AM
 // Author:    Sergey LITONIN
@@ -11,6 +29,7 @@
 #include "LightApp_Selection.h"
 #include "LightApp_Operation.h"
 #include "LightApp_Preferences.h"
+//#include "LightApp_Displayer.h"
 
 #include "CAM_DataModel.h"
 
 #include <SALOME_ListIO.hxx>
 #include <SALOME_ListIteratorOfListIO.hxx>
 #include <SALOME_InteractiveObject.hxx>
+//#include <SALOME_Actor.h>
 
 #include <SUIT_Session.h>
+#include <SUIT_ViewModel.h>
+
+#include <SVTK_ViewWindow.h>
+//#include <SVTK_ViewModel.h>
+//#include <SVTK_MainWindow.h>
+//#include <SVTK_RenderWindowInteractor.h>
 
 #include <qstring.h>
 #include <qmap.h>
 
+//#include <vtkActorCollection.h>
+//#include <vtkRenderer.h>
+
 /*!Constructor.*/
 SalomeApp_Module::SalomeApp_Module( const QString& name )
 : LightApp_Module( name )
@@ -54,6 +83,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<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
@@ -97,3 +132,24 @@ void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_Li
     dest.Append( obj );
   }
 }
+
+/*!
+ * \brief Virtual public
+ *
+ * This method is called just before the study document is saved, so the module has a possibility
+ * to store visual parameters in AttributeParameter attribue(s)
+ */
+void SalomeApp_Module::storeVisualParameters(int savePoint)
+{
+}
+
+/*!
+ * \brief Virtual public
+ *
+ * This method is called after the study document is opened, so the module has a possibility to restore
+ * visual parameters
+ */
+void SalomeApp_Module::restoreVisualParameters(int savePoint)
+{
+}
+
index 433d918fd0b9e9e6d542d3e7ba3a461f85985869..07f4c0620378de6e4c20dae9a475731b86b7e52a 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_Module.h
 // Created:   10/25/2004 11:33:06 AM
 // Author:    Sergey LITONIN
@@ -10,8 +28,6 @@
 
 #include <LightApp_Module.h>
 
-#include <string>
-
 class CAM_DataModel;
 class SalomeApp_Application;
 class LightApp_Operation;
@@ -41,6 +57,9 @@ public:
 
   SalomeApp_Application*              getApp() const;
 
+  virtual void                        storeVisualParameters(int savePoint);
+  virtual void                        restoreVisualParameters(int savePoint);
+
 protected:
   virtual CAM_DataModel*              createDataModel();
   virtual LightApp_Selection*         createSelection() const;
index 19bc57559e4d7651cad1c77a8bdfbcc80ffd6fa5..67606feae43df793991d3ede45af6df14454d36e 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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);
index a15b3767f00ec9580f97175ad7881b2d04f54166..a0db6377f1073b223cb6bde93eb0c9453d8514c8 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 6b72dd880034fb755eb61926fb776c253b5f793d..e227a58e86474d508e71332342ad1183e7da3271 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_Study.h"
 
@@ -23,6 +23,7 @@
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_Application.h"
 #include "SalomeApp_Engine_i.hxx"
+#include "SalomeApp_VisualState.h"
 
 #include "LightApp_RootObject.h"
 
 #include <SUIT_ResourceMgr.h>
 
 #include <qptrlist.h>
+#include <qapplication.h>
+#include <qdict.h>
 
 #include "utilities.h"
 
+#include <iostream>
 #include <string>
 #include <vector>
 
+#include <SUIT_Session.h>
+
+#include <string>
+#include <vector>
+
+#include "SALOMEDS_Tool.hxx"
+
+#include "SALOMEDSClient_ClientFactory.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
+
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Exception)
 
-#include "SALOMEDS_Tool.hxx"
+using namespace std;
 
 /*!
   Constructor.
@@ -99,10 +113,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" );
@@ -131,13 +145,21 @@ bool SalomeApp_Study::openDocument( const QString& theFileName )
   
   emit opened( this );
   study->IsSaved(true);
+
+  bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
+  if ( restore ) {
+    std::vector<int> savePoints = getSavePoints();
+    if ( savePoints.size() > 0 )
+      SalomeApp_VisualState( (SalomeApp_Application*)application() ).restoreState( savePoints[savePoints.size()-1] );
+  }
+
   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" );
@@ -168,17 +190,28 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName )
   bool res = CAM_Study::openDocument( theStudyName );
   emit opened( this );
 
+  bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
+  if ( restore ) {
+    std::vector<int> savePoints = getSavePoints();
+    if ( savePoints.size() > 0 )
+      SalomeApp_VisualState( (SalomeApp_Application*)application() ).restoreState( savePoints[savePoints.size()-1] );
+  }
+
   //SRN: BugID IPAL9021: End
 
   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 );
+  if ( store )
+    SalomeApp_VisualState( (SalomeApp_Application*)application() ).storeState();
+  
   ModelList list; dataModels( list );
 
   SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first();
@@ -195,13 +228,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 <res>
-    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 );
@@ -209,12 +243,15 @@ 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 );
+  if ( store )
+    SalomeApp_VisualState( (SalomeApp_Application*)application() ).storeState();
+
   ModelList list; dataModels( list );
 
   SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first();
@@ -222,7 +259,7 @@ bool SalomeApp_Study::saveDocument()
   for ( ; aModel; aModel = (SalomeApp_DataModel*)list.next() ) {
     listOfFiles.clear();
     aModel->save(listOfFiles);
-    if ( !listOfFiles.isEmpty() )
+    if ( !listOfFiles.isEmpty() ) 
       saveModuleData(aModel->module()->name(), listOfFiles);
   }
 
@@ -231,11 +268,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 )
@@ -244,10 +281,9 @@ bool SalomeApp_Study::saveDocument()
   return res;
 }
 
-//================================================================
-// Function : closeDocument
-/*! Purpose  : Close document*/
-//================================================================
+/*!
+  Closes document
+*/
 void SalomeApp_Study::closeDocument(bool permanently)
 {
   LightApp_Study::closeDocument(permanently);
@@ -262,10 +298,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();
@@ -275,23 +310,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();
@@ -309,10 +344,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<std::string> aListOfFiles =  GetListOfFiles( theModuleName );
@@ -328,10 +364,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 );
@@ -342,10 +377,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;
@@ -372,7 +406,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)
 {
@@ -490,10 +524,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<std::string> SalomeApp_Study::GetListOfFiles( const char* theModuleName  ) const
 {
   SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
@@ -504,10 +538,11 @@ std::vector<std::string> 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<std::string> theListOfFiles )
 {
@@ -516,10 +551,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);
@@ -527,10 +561,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)
@@ -550,8 +583,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();
@@ -567,10 +602,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() );
@@ -581,10 +616,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() ) );
@@ -593,20 +627,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() );
@@ -620,6 +652,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() ) 
@@ -630,3 +666,77 @@ void SalomeApp_Study::components( QStringList& comps ) const
     comps.append( aComponent->ComponentDataType().c_str() );
   }
 }
+
+/*!
+  \return a list of saved points' IDs
+*/
+std::vector<int> SalomeApp_Study::getSavePoints()
+{
+  std::vector<int> v;
+
+  _PTR(SObject) so = studyDS()->FindComponent("Interface Applicative");
+  if(!so) return v;
+
+  _PTR(StudyBuilder) builder = studyDS()->NewBuilder();
+  _PTR(ChildIterator) anIter ( studyDS()->NewChildIterator( so ) );
+  for(; anIter->More(); anIter->Next())
+  {
+    _PTR(SObject) val( anIter->Value() );
+    _PTR(GenericAttribute) genAttr;
+    if(builder->FindAttribute(val, genAttr, "AttributeParameter")) v.push_back(val->Tag());
+  }
+
+  return v;
+}
+
+/*!
+  Removes a given save point
+*/
+void SalomeApp_Study::removeSavePoint(int savePoint)
+{
+  if(savePoint <= 0) return;
+ _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint);
+  _PTR(SObject) so = AP->GetSObject();
+  _PTR(StudyBuilder) builder = studyDS()->NewBuilder();
+  builder->RemoveObjectWithChildren(so);
+}
+
+/*!
+  \return a name of save point
+*/
+QString SalomeApp_Study::getNameOfSavePoint(int savePoint)
+{
+  _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint);
+  _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+  return ip->getProperty("AP_SAVEPOINT_NAME").c_str();
+}
+
+/*!
+  Sets a name of save point
+*/
+void SalomeApp_Study::setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint)
+{
+  _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint);
+  _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+  ip->setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1());
+}
+
+/*!
+  \return a name of the component where visual parameters are stored
+*/
+std::string SalomeApp_Study::getVisualComponentName()
+{
+  return "Interface Applicative";
+}
+
+/*!
+  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 );
+
+  // calling updateSavePointDataObjects in order to set correct order of "Gui states" object
+  // it must always be the last one.
+  ((SalomeApp_Application*)application())->updateSavePointDataObjects( this );
+}
index c07d205280d6fc2d96a23643f73a6cc221c6705c..ef5c127fd11caa68c3007ae77ed3723351d8ab8f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_STUDY_H
 #define SALOMEAPP_STUDY_H
@@ -22,6 +22,7 @@
 #include "SalomeApp.h"
 
 #include <LightApp_Study.h>
+#include <string>
 
 #ifdef WIN32
 #pragma warning( disable:4251 )
@@ -66,6 +67,12 @@ public:
   virtual void        children( const QString&, QStringList& ) const;
   virtual void        components( QStringList& ) const;
 
+  std::vector<int>    getSavePoints();
+  void                removeSavePoint(int savePoint);
+  QString             getNameOfSavePoint(int savePoint);
+  void                setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint);
+  virtual std::string getVisualComponentName();
+
 protected:
   virtual void        saveModuleData ( QString theModuleName, QStringList theListOfFiles );
   virtual void        openModuleData ( QString theModuleName, QStringList& theListOfFiles );
@@ -82,6 +89,9 @@ protected:
   virtual bool        openDataModel( const QString&, CAM_DataModel* );
   void                setStudyDS(const _PTR(Study)& s );
 
+protected slots:
+  virtual void        updateModelRoot( const CAM_DataModel* );
+
 private:
   QString             newStudyName() const;
 
index 2a7040d54b7891a56cb71cfaaa85216c12f0a96d..830536676c97436dbfd420951f187806d9ce55c4 100644 (file)
@@ -1,8 +1,22 @@
-//  SALOME SalomeApp
+// 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.
 //
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+//  SALOME SalomeApp
 //
 //  File   : SalomeApp_StudyPropertiesDlg.cxx
 //  Author : Sergey ANIKIN
index 556a3d3189f439ec8eb8525929b9ba2eedcb3f83..4abedf932d159a0db2474c4bfbcaff27deccde48 100644 (file)
@@ -1,13 +1,24 @@
-//  SALOME SalomeApp
-//
-//  Copyright (C) 2005  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SalomeApp_StudyPropertiesDlg.h
 //  Author : Sergey ANIKIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEAPP_STUDY_PROPERTIES_DLG_H
 #define SALOMEAPP_STUDY_PROPERTIES_DLG_H
index f6b93b4ca721d8a652dc8ed52353b3a311a11472..a20fbf0c8efdfb99e36562859456bcc2b42a5779 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_Tools.h"
 
index 074367b3268878d04f0554e0a9da1f62bafcfbc5..a6f1e06dc5073791c28c09fda421f6884f1f8e94 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_TOOLS_H
 #define SALOMEAPP_TOOLS_H
index 58ab6bb57317f4031e85a00f752b6d61748b0a24..c8291220752aafbdf3b1cf6ca7cf5d541ed9985b 100644 (file)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeApp_TypeFilter.h"
 
 #include "LightApp_DataOwner.h"
 #include "SalomeApp_Study.h"
 
-#include <SALOMEDS_SObject.hxx>
-
 /*!
   Constructor.
 */
index 9c95d25eedd51fb674a2dde9042a4b87ee67421b..533ea72696a841aa342e9430ecc9397c266f4c67 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMEAPP_TYPEFILTER_H
 #define SALOMEAPP_TYPEFILTER_H
index 4c290584aba50ee7c4bbecde38f982cb98a540dc..f6cfb540cd2af93764ba871147d8921e3e5b84ad 100644 (file)
@@ -1,12 +1,6 @@
 <document>
-  <section name="desktop" >
-    <parameter name="state"  value="max"/>
-    <parameter name="pos_x"  value="100"/>
-    <parameter name="pos_y"  value="050"/>
-    <parameter name="width"  value="640"/>
-    <parameter name="height" value="480"/>
-  </section>
   <section name="launch">
+    <!-- SALOME launching parameters -->
     <parameter name="gui"        value="yes"/>
     <parameter name="splash"     value="yes"/>
     <parameter name="file"       value="no"/>
     <parameter name="standalone" value="pyContainer,supervContainer"/>
   </section>
   <section name="language">
+    <!-- Language settings (resource manager)-->
     <parameter name="language"    value="en"/>
     <parameter name="translators" value="%P_msg_%L.qm|%PM_msg_%L.qm|%P_icons.qm|%P_images.qm|%PM_images.qm"/>
   </section>
+  <section name="splash" >
+    <!-- Splash screen settings -->
+    <parameter name="image"           value="${SUITRoot}/resources/icon_about.png" />
+    <parameter name="info"            value="%V" />
+    <parameter name="text_colors"     value="#543AA9|#FFFFFF" />
+    <parameter name="progress_colors" value="#0A4E5F|#B2EFED|1" />
+  </section>
   <section name="resources">
+    <!-- Resource directories (resource manager)-->
     <parameter name="SUIT"         value="${SUITRoot}/resources"/>
     <parameter name="STD"          value="${SUITRoot}/resources"/>
     <parameter name="Plot2d"       value="${SUITRoot}/resources"/>
     <parameter name="OB"           value="${SUITRoot}/resources"/>
     <parameter name="CAM"          value="${SUITRoot}/resources"/>
     <parameter name="SUPERVGraph"  value="${SUITRoot}/resources"/>
-    <parameter name="GEOM"         value="${GEOM_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="SMESH"        value="${SMESH_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="VISU"         value="${VISU_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="SUPERV"       value="${SUPERV_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="MED"          value="${MED_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="StdMeshers"   value="${SMESH_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="COMPONENT"    value="${COMPONENT_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="PYCALCULATOR" value="${PYCALCULATOR_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="HELLO"        value="${HELLO_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="PYHELLO"      value="${PYHELLO_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="ToolsGUI"     value="${SUITRoot}/resources"/>
     <parameter name="NETGENPlugin" value="${NETGENPLUGIN_ROOT_DIR}/share/salome/resources"/>
     <parameter name="GHS3DPlugin"  value="${GHS3DPLUGIN_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="ToolsGUI"     value="${SUITRoot}/resources"/>
-  </section>
-  <section name="PyConsole">
-    <parameter name="font" value="Helvetic,12" />
-  </section>
-  <section name="Study">
-    <parameter name="store_positions" value="false" />
-  </section>
-  <section name="GEOM">
-    <parameter name="name"       value="Geometry"/>
-    <parameter name="icon"       value="ModuleGeom.png"/>
-  </section>
-  <section name="LIGHT">
-    <parameter name="name"       value="Light"/>
-    <parameter name="icon"       value="LIGHT.png"/>
   </section>
   <section name="SMESH">
-    <parameter name="name"       value="Mesh"/>
-    <parameter name="icon"       value="ModuleMesh.png"/>
-  </section>
-  <section name="VISU">
-    <parameter name="name"       value="Post-Pro"/>
-    <parameter name="icon"       value="ModuleVisu.png"/>
-  </section>
-  <section name="SUPERV">
-    <parameter name="name"       value="Supervisor"/>
-    <parameter name="icon"       value="ModuleSupervision.png"/>
-  </section>
-  <section name="MED">
-    <parameter name="name"       value="Med"/>
-    <parameter name="icon"       value="ModuleMed.png"/>
-  </section>
-  <section name="HELLO">
-    <parameter name="name"       value="Hello"/>
-    <parameter name="icon"       value="HELLO.png"/>
-  </section>
-  <section name="PYHELLO">
-    <parameter name="name"       value="PyHello"/>
-    <parameter name="icon"       value="PYHELLO.png"/>
-    <parameter name="library"    value="SalomePyQtGUI"/>
+    <!-- Default SMESH module plugins -->
+    <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
   </section>
-
-<!-- values below this line are just an example, they are not used  -->
-  <section name="application">
-    <parameter name="QuickDirList" value=""/>
-    <!-- Here go other common user preferences -->
+  <section name="desktop" >
+    <!-- Default GUI desktop state, position, size -->
+    <parameter name="state"  value="normal"/>
+    <parameter name="pos_x"  value="center"/>
+    <parameter name="pos_y"  value="center"/>
+    <parameter name="width"  value="800"/>
+    <parameter name="height" value="600"/>
   </section>
   <section name="ObjectBrowser" >
-    <parameter value="false" name="auto_size" />
-    <parameter value="true"  name="auto_size_first" />
-    <parameter value="true"  name="visibility_column_0" />
-    <parameter value="false" name="visibility_column_1" />
-    <parameter value="false" name="visibility_column_2" />
-    <parameter value="false" name="visibility_column_3" />
+    <!-- Object Browser preferences -->
+    <parameter name="auto_size"           value="false" />
+    <parameter name="auto_size_first"     value="true"  />
+    <parameter name="visibility_column_0" value="true"  />
+    <parameter name="visibility_column_1" value="false" />
+    <parameter name="visibility_column_2" value="false" />
+    <parameter name="visibility_column_3" value="false" />
+  </section>
+  <section name="PyConsole">
+    <!-- Python console preferences -->
+    <parameter name="font"                value="Helvetic,12" />
+    <parameter name="additional_families" value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida"/>
   </section>
   <section name="OCCViewer" >
-    <parameter value="35, 136, 145" name="background" />
-    <parameter value="1" name="iso_number_u" />
-    <parameter value="1" name="iso_number_v" />
-    <parameter value="100" name="trihedron_size" />
+    <!-- OCC viewer preferences -->
+    <parameter name="background"     value="35, 136, 145" />
+    <parameter name="iso_number_u"   value="1" />
+    <parameter name="iso_number_v"   value="1" />
+    <parameter name="trihedron_size" value="100" />
  </section>
  <section name="VTKViewer" >
-    <parameter value="0, 0, 0" name="background" />
-    <parameter value="105" name="trihedron_size" />
-    <parameter value="true" name="relative_size" />
+    <!-- VTK viewer preferences -->
+    <parameter name="background"     value="0, 0, 0" />
+    <parameter name="trihedron_size" value="105" />
+    <parameter name="relative_size"  value="true" />
  </section>
- <section name="ExternalBrowser" >
-    <parameter value="/usr/bin/mozilla" name="application" />
-  </section>
  <section name="Plot2d" >
-    <parameter value="255, 255, 255" name="Background" />
-    <parameter value="1" name="CurveType" />
-    <parameter value="0" name="HorScaleMode" />
-    <parameter value="1" name="LegendPos" />
-    <parameter value="9" name="MarkerSize" />
-    <parameter value="true" name="ShowLegend" />
-    <parameter value="0" name="VerScaleMode" />
+    <!-- Plot2d viewer preferences -->
+    <parameter name="Background"   value="255, 255, 255"/>
+    <parameter name="CurveType"    value="1" />
+    <parameter name="HorScaleMode" value="0" />
+    <parameter name="LegendPos"    value="1" />
+    <parameter name="MarkerSize"   value="9" />
+    <parameter name="ShowLegend"   value="true" />
+    <parameter name="VerScaleMode" value="0"  />
   </section>
   <section name="SUPERVGraph" >
-    <parameter value="144, 208, 211" name="Background" />
-    <parameter value="63, 213, 255" name="Title" />
-    <parameter value="255, 249, 147" name="NodeBody" />
-  </section>
-  <section name="Geometry" >
-    <parameter value="10" name="SettingsGeomStep" />
-    <parameter value="0"  name="display_mode" />
-    <parameter value="255, 255, 0" name="shading_color" />
+    <!-- Supervision viewer preferences -->
+    <parameter name="Background" value="144, 208, 211" />
+    <parameter name="Title"      value="63, 213, 255"  />
+    <parameter name="NodeBody"   value="255, 249, 147" />
   </section>
-  <section name="SMESH">
-    <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
-    <parameter value="255, 0,   0" name="node_color" />
-    <parameter value="0, 170, 255" name="fill_color" />
-    <parameter value="0, 170, 255" name="outline_color" />
-    <parameter value="0, 0,   255" name="backface_color" />
-    <parameter value="3" name="node_size" />
-    <parameter value="1" name="element_width" />
-    <parameter value="75" name="shrink_coeff" />
-    <parameter value="0, 255,   255" name="highlight_color" />
-    <parameter value="255, 255,   0" name="selection_element_color" />
-    <parameter value="255, 255, 255" name="selection_object_color" />
-    <parameter value="0.005" name="selection_precision_element" />
-    <parameter value="0.005" name="selection_precision_node" />
-    <parameter value="5" name="selection_width" />
-    <parameter value="5" name="highlight_width" />
-    <parameter value="0" name="controls_precision" />
-    <parameter value="0.05" name="scalar_bar_horizontal_height" />
-    <parameter value="0.5" name="scalar_bar_horizontal_width" />
-    <parameter value="0.01" name="scalar_bar_horizontal_x" />
-    <parameter value="0.01" name="scalar_bar_horizontal_y" />
-    <parameter value="255, 255, 255" name="scalar_bar_label_color" />
-    <parameter value="Arial,12" name="scalar_bar_label_font" />
-    <parameter value="64" name="scalar_bar_num_colors" />
-    <parameter value="5" name="scalar_bar_num_labels" />
-    <parameter value="0" name="scalar_bar_orientation" />
-    <parameter value="255, 255, 255" name="scalar_bar_title_color" />
-    <parameter value="Arial,12" name="scalar_bar_title_font" />
-    <parameter value="0.5" name="scalar_bar_vertical_height" />
-    <parameter value="0.05" name="scalar_bar_vertical_width" />
-    <parameter value="0.01" name="scalar_bar_vertical_x" />
-    <parameter value="0.01" name="scalar_bar_vertical_y" />
-    <parameter value="true" name="DisplayMode" />
-    <parameter value="true" name="auto_update" />
-    <parameter value="1" name="display_mode" />
-    <parameter value="false" name="auto_groups" />
+  <section name="FileDlg" >
+    <!-- "Open/Save File" dialog box preferences-->
+    <parameter name="QuickDirList" value="${DATA_DIR}" />
   </section>
-  <section name="VISU" >
-  <parameter value="false" name="full_med_loading" />
-  <parameter value="false" name="represent_shading" />
-  <parameter value="0.05" name="scalar_bar_horizontal_height" />
-  <parameter value="0.5" name="scalar_bar_horizontal_width" />
-  <parameter value="0.01" name="scalar_bar_horizontal_x" />
-  <parameter value="0.01" name="scalar_bar_horizontal_y" />
-  <parameter value="255, 255, 255" name="scalar_bar_label_color" />
-  <parameter value="Arial,Bold,Italic,Underline,12" name="scalar_bar_label_font" />
-  <parameter value="false" name="scalar_bar_logarithmic" />
-  <parameter value="0" name="scalar_bar_mode" />
-  <parameter value="64" name="scalar_bar_num_colors" />
-  <parameter value="5" name="scalar_bar_num_labels" />
-  <parameter value="0" name="scalar_bar_orientation" />
-  <parameter value="255, 255, 255" name="scalar_bar_title_color" />
-  <parameter value="Arial,Bold,Italic,Underline,12" name="scalar_bar_title_font" />
-  <parameter value="0.5" name="scalar_bar_vertical_height" />
-  <parameter value="0.05" name="scalar_bar_vertical_width" />
-  <parameter value="0.01" name="scalar_bar_vertical_x" />
-  <parameter value="0.01" name="scalar_bar_vertical_y" />
-  <parameter value="0" name="scalar_range_max" />
-  <parameter value="0" name="scalar_range_min" />
-  <parameter value="0" name="scalar_range_type" />
-  <parameter value="1" name="sweeping_number_cycles" />
-  <parameter value="20" name="sweeping_number_steps" />
-  <parameter value="0.2" name="sweeping_time_step" />
-  <parameter value="0" name="mouse_behaviour" />
-  <parameter value="10" name="speed_increment" />
-  <parameter value="1" name="spacemouse_func1_btn" />
-  <parameter value="2" name="spacemouse_func2_btn" />
-  <parameter value="10" name="spacemouse_func3_btn" />
-  <parameter value="11" name="spacemouse_func4_btn" />
-  <parameter value="9" name="spacemouse_func5_btn" />
-  <parameter value="10" name="camera_movement_steps" />
-  <parameter value="true" name="point_sprite_results" />
-  <parameter value="0" name="point_sprite_primitive_type" />
-  <parameter value="256" name="point_sprite_clamp" />
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="point_sprite_main_texture"/>
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="point_sprite_alpha_texture"/>
-  <parameter value="0.5" name="point_sprite_alpha_threshold" />
-  <parameter value="10" name="point_sprite_min_size" />
-  <parameter value="33" name="point_sprite_max_size" />
-  <parameter value="100" name="point_sprite_magnification" />
-  <parameter value="2" name="point_sprite_increment" />
-  <parameter value="15" name="point_sprite_size" />
-  <parameter value="0, 0, 255" name="point_sprite_color" />
-  <parameter value="8" name="geom_sphere_resolution" />
-  <parameter value="50000" name="geom_sphere_face_limit" />
-  <parameter value="true" name="scalar_bar_display_global" />
-  <parameter value="0" name="scalar_bar_active_local" />
-  <parameter value="1" name="scalar_bar_bicolor" />
-  <parameter value="0.01" name="scalar_bar_spacing" />
-  <parameter value="0" name="inside_point_sprite_primitive_type" />
-  <parameter value="256" name="inside_point_sprite_clamp" />
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="inside_point_sprite_main_texture"/>
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="inside_point_sprite_alpha_texture"/>
-  <parameter value="0.5" name="inside_point_sprite_alpha_threshold" />
-  <parameter value="10" name="inside_point_sprite_min_size" />
-  <parameter value="33" name="inside_point_sprite_max_size" />
-  <parameter value="100" name="inside_point_sprite_magnification" />
-  <parameter value="2" name="inside_point_sprite_increment" />
-  <parameter value="8" name="inside_geom_sphere_resolution" />
-  <parameter value="50000" name="inside_geom_sphere_face_limit" />
-  <parameter value="0" name="outside_point_sprite_primitive_type" />
-  <parameter value="256" name="outside_point_sprite_clamp" />
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="outside_point_sprite_main_texture"/>
-  <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="outside_point_sprite_alpha_texture"/>
-  <parameter value="0.5" name="outside_point_sprite_alpha_threshold" />
-  <parameter value="25" name="outside_point_sprite_size" />
-  <parameter value="true" name="outside_point_sprite_uniform" />
-  <parameter value="85, 0, 127" name="outside_point_sprite_color" />
-  <parameter value="8" name="outside_geom_sphere_resolution" />
-  <parameter value="50000" name="outside_geom_sphere_face_limit" />
-  <parameter value="0.5" name="picking_cursor_size" />
-  <parameter value="1.0" name="picking_pyramid_height" />
-  <parameter value="255, 255, 0" name="picking_selection_color" />
-  <parameter value="0.01" name="picking_point_tolerance" />
-  <parameter value="50" name="picking_transparency" />
-  <parameter value="0" name="picking_position" />
-  <parameter value="1.5" name="picking_zoom_factor" />
-  <parameter value="10" name="picking_step_number" />
-  <parameter value="false" name="picking_display_parent_mesh" />
-  <parameter value="false" name="build_at_once" />
-  <parameter value="true" name="build_fields" />
-  <parameter value="true" name="build_min_max" />
-  <parameter value="true" name="build_groups" />
-  <parameter value="true" name="close_at_finish" />
-  <parameter value="1" name="recorder_mode" />
-  <parameter value="17.3" name="recorder_fps" />
-  <parameter value="100" name="recorder_quality" />
-  <parameter value="true" name="recorder_progressive" />
+  <section name="Study">
+    <!-- General study settings -->
+    <parameter name="store_positions"     value="false" />
+    <parameter name="store_visual_state"  value="false" />
   </section>
-  <!-- Here go optional sections for other modules -->
-  <section name="resources">
-    <parameter name="salome" value="${KERNEL_ROOT_DIR}/share/salome/res"/>
-    <!-- Here go resource directories for other modules -->
+  <section name="ExternalBrowser" >
+    <!-- External HELP browser settings -->
+    <parameter value="/usr/bin/mozilla" name="application" />
   </section>
 </document>
index 29ec0e6e65f443c18f5677af66b69c64613e8b00..25df26cd8032315298ff23e154da736576a6c339 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      SalomeApp_images.po
 // Created:   November, 2004
 // Author:    OCC team
index a739779d2805bfbf389326b6cecd7974b7416812..ae12d309abdbb3727fc8e4850f5f5744c353ac71 100644 (file)
@@ -1,3 +1,21 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 // File:      CATHAREGUI_msg_en.po
 // Created:   10/25/2004 12:46:36 PM
 // Author:    Sergey LITONIN
@@ -13,9 +31,6 @@ msgstr ""
 
 //=======================================================================================
 
-msgid "BUT_OK"
-msgstr "&OK"
-
 msgid "BUT_NEW"
 msgstr "&New"
 
@@ -25,9 +40,6 @@ msgstr "&Open"
 msgid "BUT_LOAD"
 msgstr "&Load"
 
-msgid "BUT_CANCEL"
-msgstr "&Cancel"
-
 //=======================================================================================
 
 msgid "SalomeApp_Application::PYTHON_CONSOLE"
@@ -42,6 +54,15 @@ msgstr "&Dump study..."
 msgid "SalomeApp_Application::PRP_DESK_FILE_DUMP_STUDY"
 msgstr "Dumps study to the python script"
 
+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"
+
+msgid "SalomeApp_Application::PRP_DESK_FILE_SAVE_GUI_STATE"
+msgstr "Saves current state of viewers, displayed objects, etc."
+
 msgid "SalomeApp_Application::TOT_DESK_FILE_LOAD_SCRIPT"
 msgstr "Load python script"
 
@@ -102,6 +123,17 @@ msgstr "Activate Module"
 msgid "SalomeApp_Application::MEN_DELETE_INVALID_REFERENCE"
 msgstr "Delete Invalid Reference"
 
+msgid "SalomeApp_Application::PREF_STORE_VISUAL_STATE"
+msgstr "Store/restore last GUI state"
+
+//=======================================================================================
+
+msgid "PUBLISH_IN_STUDY"
+msgstr "Publish in study"
+
+msgid "SAVE_GUI_STATE"
+msgstr "Save GUI state"
+
 //=======================================================================================
 
 msgid "SalomeApp_Application::MEN_WINDOWS_NEW"
@@ -190,3 +222,25 @@ msgstr "Publish in study"
 msgid "SalomeApp_Application::WRN_DUMP_STUDY_FAILED"
 msgstr "Dump study failed"
 
+msgid "SAVE_POINT_OBJECT_TOOLTIP"
+msgstr "Saved GUI state: %1"
+
+msgid "SAVE_POINT_DEF_NAME"
+msgstr "GUI state: "
+
+msgid "SAVE_POINT_ROOT_TOOLTIP"
+msgstr "Persistent GUI states"
+
+msgid "SAVE_POINT_ROOT_NAME"
+msgstr "GUI states"
+
+//=======================================================================================
+
+msgid "SalomeApp_Application::MEN_RESTORE_VS"
+msgstr "Restore"
+
+msgid "SalomeApp_Application::MEN_RENAME_VS"
+msgstr "Rename"
+
+msgid "SalomeApp_Application::MEN_DELETE_VS"
+msgstr "Delete"
index 3a4b9ddd69f331f5716cda140a139e49d8d5946e..61fdc3eff02c0241d0193ac0b9b3980e5855e4bd 100755 (executable)
@@ -1,6 +1,20 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : InquireServersQThread.cxx
 //  Author : Vasily RUSYAEV
@@ -49,6 +63,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 +154,10 @@ InquireServersGUI::InquireServersGUI()
   myThread->start();
 }
 
+/*!
+  Sets pixmap of splash screen
+  \param pix - new pixmap
+*/
 void InquireServersGUI::setPixmap( QPixmap pix )
 {
   if ( !pix.isNull() ) 
@@ -148,21 +169,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 +198,9 @@ void InquireServersGUI::ClickOnCancel()
   qApp->exit( 1 );
 }
 
+/*!
+  Custom event filter
+*/
 void InquireServersGUI::customEvent( QCustomEvent* pe )
 {
   switch( pe->type() )
@@ -204,11 +235,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 +295,9 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
   }
 }
 
+/*!
+  The main loop of this thread
+*/
 void InquireServersQThread::run()
 {
   while ( IsChecking && receiver )
@@ -305,12 +345,18 @@ void InquireServersQThread::run()
   qApp->exit( myExitStatus );
 }
 
+/*!
+  Stops this thread
+*/
 void InquireServersQThread::stop()
 {
   IsChecking = false;
   myExitStatus = 1;
 }
 
+/*!
+  Destructor
+*/
 InquireServersQThread::~InquireServersQThread()
 {
 }
index 82d58dc7dd7d51a67179556f00e15a6d75a36585..2eca8fe321d61ee19a12c18b4dcbbd5ec322a603 100755 (executable)
@@ -1,11 +1,24 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : InquireServersQThread.h
 //  Author : Vasily RUSYAEV
 //  Module : SALOME
-//  $Header$
 
 #include <qthread.h> 
 #include <qvbox.h> 
 
 #include <SALOME_Session.hxx>
 
-/**********************************************************
-**  Class:   InquireEvent
-**  Descr:   Contains QCustomEvents for posting to InquireServersQThread
-**  Level:   Private
-***********************************************************/
+/*!
+  \class InquireEvent
+  Contains QCustomEvents for posting to InquireServersQThread
+*/
 class SESSION_EXPORT InquireEvent : public QCustomEvent
 {
 public:
index 226711e2b314144b4872a1ffbffc4dae6b7107a7..6379a13956b7653d9e79eadee29b49a87c7b3b87 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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,11 +47,10 @@ LIB = libSalomeSession.la
 LIB_SRC=Session_Session_i.cxx \
        Session_ServerThread.cxx \
        Session_ServerLauncher.cxx \
-       Session_SignalsHandler.cxx \
+       Session_ServerCheck.cxx \
        SalomeApp_Engine_i.cxx \
-       InquireServersQThread.cxx
 
-LIB_MOC = InquireServersQThread.h
+LIB_MOC = 
 
 # Executables targets
 BIN = SALOME_Session_Server
@@ -59,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 -lCASCatch -lSalomeCatalog -lSalomeDS $(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
 
index ac7738582d033d4c2aeca4277a32af12747c6d50..21ceec290f13fb492e95ea3f5d60521f462abc98 100755 (executable)
@@ -17,7 +17,7 @@
 // License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -31,8 +31,6 @@
 #include "SALOME_NamingService.hxx"
 #include "SALOMETraceCollector.hxx"
 
-#include "InquireServersQThread.h" // splash
-
 #include <iostream>
 #ifndef WNT
 #include <unistd.h>
@@ -42,6 +40,7 @@
 #include <qfile.h>
 #include <qapplication.h>
 #include <qwaitcondition.h>
+#include <qregexp.h>
 
 #include "Utils_SALOME_Exception.hxx"
 #include "Utils_CorbaException.hxx"
 #include <utilities.h>
 #include "Session_Session_i.hxx"
 #include "Session_ServerLauncher.hxx"
+#include "Session_ServerCheck.hxx"
 
+#include <QtxSplash.h>
 #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"
 
-extern "C" int HandleSignals( QApplication *theQApplication );
-
 /*! - read arguments, define list of server to launch with their arguments.
  * - wait for naming service
  * - create and run a thread for launch of all servers
@@ -182,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:
@@ -233,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()
   {
@@ -258,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;
@@ -282,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_<ORB_INIT>::Instance();
     ASSERT( SINGLETON_<ORB_INIT>::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" );
@@ -339,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();
@@ -417,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;
@@ -427,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
 
index 27cc1cdd35a38a6bdc95bdc6bc48a7f48b4a9d09..813270515dd0f660de88055b41baefb33e0d44ba 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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;
index 67c29f9936f48abf2d465413d2f8ba6ae95de706..abadbdd675167cb07b0c48abb1c777dac14ba299 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 0f84abe18181c52d41ee1cfdada1c7fc5946979f..8de6a6d41822d0f9421241aaa1b29b8ce185b8f5 100644 (file)
 #if !defined(SESSION_SERVERCHECK_HXX)
 #define SESSION_SERVERCHECK_HXX
 
-#ifdef WNT
-#include <SALOME_WNT.hxx>
-#else
-#define SALOME_WNT_EXPORT
-#endif
+#include <SALOME_Session.hxx>
 
 #include <qthread.h> 
 #include <qapplication.h> 
@@ -37,7 +33,7 @@ class QWaitCondition;
 /*!
   Class Session_ServerCheck : check SALOME servers
 */
-class SALOME_WNT_EXPORT Session_ServerCheck : public QThread
+class SESSION_EXPORT Session_ServerCheck : public QThread
 {
 public:
   // constructor
index b15f682a57e3812e4b5a7248d7d0ccd5bf46e4fd..d4b05541603a2f89849f7704f4e7d963badcc743 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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<ServArg>::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()");
index 559833919bda2be21574820c650b0930b2149d5a..b3773adf10f1116230dc266b3f85a6188ddd54c4 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -65,6 +65,7 @@ public:
                         PortableServer::POA_ptr poa,
                         QMutex *GUIMutex,
                         QWaitCondition *ServerLaunch,
+                        QMutex *SessionMutex,
                         QWaitCondition *SessionStarted);
   virtual ~Session_ServerLauncher();
   void run();
@@ -77,13 +78,14 @@ protected:
 private:
   int _argc;
   char ** _argv;
-  CORBA::ORB_var _orb;
-  PortableServer::POA_var _root_poa;
-  QMutex* _GUIMutex;
-  QWaitCondition *_ServerLaunch;
-  QWaitCondition *_SessionStarted;
-  list<ServArg> _argServToLaunch;
-  vector<string> _argCopy;
+  CORBA::ORB_var              _orb;
+  PortableServer::POA_var     _root_poa;
+  QMutex*                     _GUIMutex;
+  QWaitCondition*             _ServerLaunch;
+  QMutex*                     _SessionMutex;
+  QWaitCondition*             _SessionStarted;
+  list<ServArg>               _argServToLaunch;
+  vector<string>              _argCopy;
   list<Session_ServerThread*> _serverThreads;
 };
 
index 7e3714518365081811f7215aa8e1c70099fa7267..d9ef4f806902ba74c26c36a56cdaf4c6bbf6aedf 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -34,7 +34,8 @@
 
 #include "SALOME_Container_i.hxx"
 #include "SALOME_ContainerManager.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
+#include <SALOMEDSClient.hxx>
+#include <SALOMEDSClient_ClientFactory.hxx>
 #include "SALOME_ModuleCatalog_impl.hxx"
 #include "RegistryService.hxx"
 #include "Session_Session_i.hxx"
@@ -61,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]); 
@@ -185,12 +172,6 @@ void Session_ServerThread::Init()
       }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateModuleCatalog(int argc,
                                                 char ** argv)
 {
@@ -230,12 +211,6 @@ void Session_ServerThread::ActivateModuleCatalog(int argc,
     }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateSALOMEDS(int argc,
                                            char ** argv)
 {
@@ -246,15 +221,7 @@ void Session_ServerThread::ActivateSALOMEDS(int argc,
       // counted objects, they will be deleted by the POA when they are no
       // longer needed.    
 
-      SALOMEDS_StudyManager_i * myStudyManager_i
-       = new  SALOMEDS_StudyManager_i(_orb,_root_poa);
-      
-      // Activate the objects.  This tells the POA that the objects are
-      // ready to accept requests.
-
-      PortableServer::ObjectId_var myStudyManager_iid
-       = _root_poa->activate_object(myStudyManager_i);
-      myStudyManager_i->register_name("/myStudyManager");
+      ClientFactory::createStudyManager(_orb,_root_poa);
     }
   catch(CORBA::SystemException&)
     {
@@ -277,12 +244,6 @@ void Session_ServerThread::ActivateSALOMEDS(int argc,
     }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateRegistry(int argc,
                                            char ** argv)
 {
@@ -339,12 +300,6 @@ void Session_ServerThread::ActivateRegistry(int argc,
     }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateContainerManager(int argc,
                                             char ** argv)
 {
@@ -377,12 +332,6 @@ void Session_ServerThread::ActivateContainerManager(int argc,
     }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateContainer(int argc,
                                             char ** argv)
 {
@@ -467,12 +416,6 @@ void Session_ServerThread::ActivateContainer(int argc,
     }
 }
 
-//=============================================================================
-/*! 
- *  
- */
-//=============================================================================
-
 void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/)
 {
     try
@@ -500,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()
 {
 }
index 1041c0f35101c20cd77365347b59c48438c06200..04ded4d2ead238a241f946aae311d6e68869d168 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -52,8 +52,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:
@@ -70,7 +69,6 @@ protected:
   int                     _servType;
   CORBA::ORB_var          _orb;
   PortableServer::POA_var _root_poa;
-  QMutex*                 _GUIMutex;
   SALOME_NamingService *  _NS;
 };
 
@@ -90,6 +88,7 @@ public:
 protected:
   virtual void ActivateSession       ( int argc, char ** argv );
 private:
+  QMutex*                 _GUIMutex;
   QWaitCondition*         _GUILauncher;
 };
 
index d60c3e09d71e7f6fb544a79a8d6a58c0c5d10b76..ee239674ed01c6bf13f43f4d83b4e7ab6a3885fd 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 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,12 +192,32 @@ 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;
 }
 
 bool SALOME_Session_i::restoreVisualState(CORBA::Long theSavePoint)
-{  
+{
+  class TEvent: public SALOME_Event {
+    int _savePoint;
+  public:
+    TEvent(int savePoint) { _savePoint = savePoint; }
+    virtual void Execute() {
+      SUIT_Study* study = SUIT_Session::session()->activeApplication()->activeStudy();
+      if ( study ) {
+       study->restoreState(_savePoint);
+      }
+    }
+  };
+  
+  if(SUIT_Session::session() && SUIT_Session::session()->activeApplication() ) {
+    SUIT_Study* study = SUIT_Session::session()->activeApplication()->activeStudy();
+    if(!study) SUIT_Session::session()->activeApplication()->createEmptyStudy();      
+    ProcessVoidEvent( new TEvent(theSavePoint) );
+    return true;
+  }
   return false;
 }
index ccc4424fcee4b5c26dbcba6d1a1ccc4b6ba40e69..3b06ab27fcf3e9659413963a970c079aae37fe63 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
diff --git a/src/Session/Session_SignalsHandler.cxx b/src/Session/Session_SignalsHandler.cxx
deleted file mode 100755 (executable)
index 4eeface..0000000
+++ /dev/null
@@ -1,45 +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 
-
-
-#include <stdexcept>
-#include <qapplication.h>
-
-#include <CASCatch_CatchSignals.hxx>
-#include <CASCatch_ErrorHandler.hxx>
-#include <CASCatch_Failure.hxx>
-
-extern "C" int HandleSignals(QApplication *theQApplication)
-{
-  int aRet = -1; 
-  CASCatch_CatchSignals aCatchSignals;
-  aCatchSignals.Activate();
-        
-  CASCatch_TRY {       
-    aRet = theQApplication->exec();
-  }
-  CASCatch_CATCH(CASCatch_Failure) {
-    aCatchSignals.Deactivate();    
-    Handle(CASCatch_Failure) aFail = CASCatch_Failure::Caught();
-    throw std::runtime_error( aFail->GetError() );   
-  }
-  
-  aCatchSignals.Deactivate(); 
-  return aRet;
-}
index 1c79d289174d7015ff6bf82b84970c4875cd397f..6de6bc78dc9ad82c4ed373b7e26e7a5cdf161d1a 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  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@
 
index 8126eb8ec82d0ec8db0246042d2d490a631adff1..d35196cf5c83a68f6d43be00787aa0aa1d50572f 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "SalomeStyle.h"
 
@@ -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" )
index 32eec36bff23a4d3a60b144b32829c96c4b975d1..e6cdd5807d07440e632170e2805cd7e0e4808c75 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef SALOMESTYLE_H
 #define SALOMESTYLE_H
index e8e183e7f0b6b2e6d8967431f9d0dd47a339b951..bec8e5a2b12e4977624521edfa95215f5e8e2fea 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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@
 
index ac2ca02a7d9d0b814355f60f0759f23cae16170d..25b8aeee9f55e3d74d0951eee728e27c28116f6f 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 #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;
 }
 
-
-
-
-
-
index cb54ffdfcb0e942e8c35bf19342be3375030ad56..ceb1179284243b81e3b28cb78354a7954fe19e53 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index d06d2e0e325a6085e94b7aa40407a9931e147519..5cf6f399e9b1a908710c04ac3fcc538055d1d097 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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 <OK> button's state
-//=================================================================================
+/*!
+  Updates <OK> button's state
+*/
 void ToolsGUI_CatalogGeneratorDlg::updateButtonState()
 {
   myApplyBtn->setEnabled( !myIdlEdit->text().stripWhiteSpace().isEmpty() && 
                          !myXmlEdit->text().stripWhiteSpace().isEmpty() );
 }
 
-//=================================================================================
-// function : onApply()
-// purpose  : <Apply> button slot, performs IDL->XML conversion
-//=================================================================================
+/*!
+  <Apply> button slot, performs IDL->XML conversion
+*/
 void ToolsGUI_CatalogGeneratorDlg::onApply()
 {
   QString IDLpath = getIdlPath();
index 5da0d5cc629c4b108c5397ec540ea7e345b16ee7..9169f0ddea88c001e0a460a45691ff7982266b73 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 class QLineEdit;
 class QPushButton;
 
-//=================================================================================
-// class    : ToolsGUI_CatalogGeneratorDlg
-// purpose  :
-//=================================================================================
 class Standard_EXPORT ToolsGUI_CatalogGeneratorDlg : public QDialog
 { 
     Q_OBJECT
index bd1ed427ae2e9d1a6854e594784c3f36ea51f7b6..4581ab882e84e47bbe92aad3fdf41fdfaecb563e 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -36,6 +36,9 @@
 
 using namespace std;
 
+/*!
+  Constructor
+*/
 ToolsGUI_HelpWindow::ToolsGUI_HelpWindow(QWidget* parent, const char* name ) 
      : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose )
 {
index 61ff116c6a9cc1d45b1203bd4b6ff3425a5f72b7..b4849baf0b9f3bd5e3c0ddf225edecf44b1125e2 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 04d96c00a45e877c18115755f88fce13aa4bfd15..7d4fcb0da18aadf737740c1b478261b239090240 100755 (executable)
@@ -1,8 +1,20 @@
-//  SALOME RegistryDisplay : GUI for Registry server implementation
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : ToolsGUI_IntervalWindow.cxx
 //  Author : Oksana TCHEBANOVA
 #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 +88,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 +102,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()
 {
index 3b53d7de85c679e954d27ac778134e02704e4294..2423736575e315d0d0e7caffd724b514954410ea 100755 (executable)
@@ -1,8 +1,20 @@
-//  SALOME RegistryDisplay : GUI for Registry server implementation
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : IntervalWindow.hxx
 //  Author : Oksana TCHEBANOVA
index 332454c73a90442eb9f1b11d58a2c4f0d1baa9d5..b6f3e34a5d25cbaa211a54820d3cca624fe7b8a2 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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( " )<br> " ) + tr( "in directory" ) + QString( " " ));
   a.append( BOLD( c_info.cdir ) );
-  
+
+  time_t aTime;
   a.append( QString( "<br>" ) + 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");
index 6d3a66f04cf461e816fe0886145fc53b378426db..be40bc8a245b71c9c85fa39342d5a979f7129a52 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 09ad7be8906316694a2c2a074bbc4d56c904a601..cfab19fbba9340cb3f7c48bf870bfc5e2f282142 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index dd5f7ea29614c9612bf3a0980a41c9287119719d..9fee23fb8cf06c8cf5d59e45d80b7f3e94f93e1f 100755 (executable)
@@ -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/ or email : webmaster.salome@opencascade.com
+#
 #  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
index 9755466c0275f91fb65fb7de76a424b1648b92bc..6a548f1df2a924398cd185c3579e77886f2bf998 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 27934b61047f1212e1520421e3bc25ab72d2d2d4..77de948308415189a02f8a84f1547c0041bfae57 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
+#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 <vtkSystemIncludes.h>
+
+#if !defined(vtkFloatingPointType)
+# define vtkFloatingPointType vtkFloatingPointType
+  typedef float vtkFloatingPointType;
+#endif
+
 #endif
index da05fc98df4fa0c0a82b9c96066d6c83c94210c8..5f0e621e7368da910ca2396461ab54422c9b00fc 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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,16 +485,34 @@ VTKViewer_Actor
   myIsInfinite = theIsInfinite;
 }
 
-
+/*!
+  \return infinive flag
+*/
 bool
 VTKViewer_Actor
 ::IsInfinitive()
 { 
-  return myIsInfinite; 
-}
+  if(myIsInfinite)
+    return true;
 
+  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;
+  
+  return false;
+}
 
-float* 
+/*!
+  \return current bounding box
+*/
+vtkFloatingPointType* 
 VTKViewer_Actor
 ::GetBounds()
 {
@@ -420,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 
@@ -445,7 +547,7 @@ VTKViewer_Actor
 
 void
 VTKViewer_Actor
-::SetSize( const float ) 
+::SetSize( const vtkFloatingPointType ) 
 {}
 
 
@@ -454,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()
 {
@@ -471,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];
@@ -497,7 +612,9 @@ VTKViewer_Actor
 }
 
 
-//----------------------------------------------------------------------------
+/*!
+  \return display mode
+*/
 int
 VTKViewer_Actor
 ::getDisplayMode()
@@ -505,6 +622,9 @@ VTKViewer_Actor
   return myDisplayMode; 
 }
 
+/*!
+  Change display mode
+*/
 void
 VTKViewer_Actor
 ::setDisplayMode(int theMode)
@@ -514,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() 
@@ -522,6 +644,9 @@ VTKViewer_Actor
   return false; 
 } 
 
+/*!
+  \return true if the VTKViewer_Actor is already highlighted
+*/
 bool
 VTKViewer_Actor
 ::isHighlighted() 
@@ -529,6 +654,9 @@ VTKViewer_Actor
   return myIsHighlighted; 
 }
 
+/*!
+  Set preselection mode
+*/
 void
 VTKViewer_Actor
 ::SetPreSelected(bool thePreselect) 
@@ -536,8 +664,9 @@ VTKViewer_Actor
   myIsPreselected = thePreselect;
 }
 
-
-//----------------------------------------------------------------
+/*!
+  Just to update visibility of the highlight devices
+*/
 void
 VTKViewer_Actor
 ::highlight(bool theIsHighlight)
index 55711a8c018def10181c0c416ac865daa96ca9e2..a0d9c4ba0dad34948af9a18a590da0ed89660522 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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;
 
index 6dcde3a40fdf2981aad42ad1e571ad42f65bc5e8..b533f149b19c535ee30a73f0da7f7115d980fb8b 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index dce05c44e0b976d6f7a9185459a53abef276711c..4218c4f20347471bfc3ebf98dd662072d09831e0 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 #include "VTKViewer_AppendFilter.h"
 
-#include "VTKViewer_ConvexTool.h"
-
-#include <vtkSmartPointer.h>
-#include <vtkCellArray.h>
+#include <vtkCell.h>
 #include <vtkCellData.h>
-#include <vtkGenericCell.h>
-#include <vtkHexahedron.h>
-#include <vtkMergePoints.h>
+#include <vtkDataSetAttributes.h>
+#include <vtkDataSetCollection.h>
 #include <vtkObjectFactory.h>
 #include <vtkPointData.h>
-#include <vtkPolyData.h>
-#include <vtkPyramid.h>
-#include <vtkStructuredGrid.h>
-#include <vtkTetra.h>
-#include <vtkUnsignedCharArray.h>
 #include <vtkUnstructuredGrid.h>
-#include <vtkVoxel.h>
-#include <vtkWedge.h>
-#include <vtkDataSetCollection.h>
-
-#include <vector>
-#include <map>
-using namespace std;
-
 
-#ifdef _DEBUG_
-//static int MYDEBUG = 0;
-//static int MYDEBUGWITHFILES = 0;
-#else
-//static int MYDEBUG = 0;
-//static int MYDEBUGWITHFILES = 0;
-#endif
+#include <vtkPoints.h>
 
 #if defined __GNUC__
   #if __GNUC__ == 2
@@ -73,7 +50,7 @@ vtkStandardNewMacro(VTKViewer_AppendFilter);
 VTKViewer_AppendFilter
 ::VTKViewer_AppendFilter() 
 {
-  myDoMappingFlag=false;
+  myDoMappingFlag = false;
 }
 
 VTKViewer_AppendFilter
@@ -84,7 +61,12 @@ void
 VTKViewer_AppendFilter
 ::SetDoMappingFlag(const bool theFlag)
 {
-  myDoMappingFlag=theFlag;
+  if(myDoMappingFlag == theFlag)
+    return;
+
+  myDoMappingFlag = theFlag;
+
+  this->Modified();
 }
 
 bool 
@@ -98,7 +80,12 @@ void
 VTKViewer_AppendFilter
 ::SetPoints(vtkPoints* thePoints)
 {
+  if(GetPoints() == thePoints)
+    return;
+
   myPoints = thePoints;
+
+  this->Modified();
 }
 
 vtkPoints*
@@ -112,199 +99,153 @@ void
 VTKViewer_AppendFilter
 ::Execute()
 {
-  if (myPoints.GetPointer()) {
+  if(myPoints.GetPointer())
     MakeOutput();
-  }
-  else {
-    vtkAppendFilter::Execute();
-  }
-  if (myDoMappingFlag){
+  else
+    Superclass::Execute();
+
+  if(myDoMappingFlag)
     DoMapping();
-  }
 }
 
+
 void 
 VTKViewer_AppendFilter
-::Reset()
+::DoMapping()
 {
-  myNodeIds.clear();
-  myCellIds.clear();
   myNodeRanges.clear();
   myCellRanges.clear();
-  myNodeMapObjIDVtkID.clear();
-  myCellMapObjIDVtkID.clear();
+
+  vtkIdType aPntStartId = 0;
+  vtkIdType aCellStartId = 0;
+
+  for(vtkIdType aDataSetId = 0; aDataSetId < this->NumberOfInputs; ++aDataSetId){
+    vtkDataSet* aDataSet = (vtkDataSet *)(this->Inputs[aDataSetId]);
+    // Do mapping of the nodes
+    if(!myPoints.GetPointer()){
+      vtkIdType aNbPnts = aDataSet->GetNumberOfPoints();
+      myNodeRanges.push_back(aPntStartId + aNbPnts);
+      aPntStartId += aNbPnts;
+    }
+    // Do mapping of the cells
+    vtkIdType aNbCells = aDataSet->GetNumberOfCells();
+    myCellRanges.push_back(aCellStartId + aNbCells);
+    aCellStartId += aNbCells;
+  }
 }
-//==================================================================
-// function: DoMapping
-// purpose :
-//==================================================================
-void 
-VTKViewer_AppendFilter
-::DoMapping()
+
+namespace
 {
-  int i, j, i1, i2, iNodeCnt, iCellCnt; 
-  IteratorOfDataMapOfIntegerInteger aMapIt;
-  vtkIdType aNbPnts, aNbCells, aId;
-  vtkDataSet *pDS;
-  //
-  Reset();
-  //
-  iNodeCnt=0;
-  iCellCnt=0;
-  for (i=0; i<NumberOfInputs; ++i) {
-    pDS=(vtkDataSet *)Inputs[i];
-    //
-    // Nodes
-    if (!myPoints.GetPointer()) {
-      aNbPnts=pDS->GetNumberOfPoints();
-      i1=myNodeIds.size();
-      i2=i1+aNbPnts-1;
-      myNodeRanges.push_back(i1);
-      myNodeRanges.push_back(i2);
-      //
-      for(j=0; j<aNbPnts; ++j) {
-       aId=(vtkIdType)j;
-       myNodeIds.push_back(aId);
-       //
-       aMapIt=myNodeMapObjIDVtkID.find(aId);
-       if (aMapIt==myNodeMapObjIDVtkID.end()) {
-         // if not found
-         myNodeMapObjIDVtkID[aId]=iNodeCnt;
-       }
-       ++iNodeCnt;
-      }
-    }
-    //
-    // Cells
-    aNbCells=pDS->GetNumberOfCells();
-    i1=myCellIds.size();
-    i2=i1+aNbCells-1;
-    myCellRanges.push_back(i1);
-    myCellRanges.push_back(i2);
-    for(j=0; j<aNbCells; ++j) {
-      aId=(vtkIdType)j;
-      myCellIds.push_back(aId);
-      //
-      aMapIt=myCellMapObjIDVtkID.find(aId);
-      if (aMapIt==myCellMapObjIDVtkID.end()) {
-       // if not found
-       myCellMapObjIDVtkID[aId]=iCellCnt;
-      }
-      ++iCellCnt;
-    }
+  inline
+  vtkIdType
+  GetOutputID(vtkIdType theInputID,
+             vtkIdType theInputDataSetID,
+             const VTKViewer_AppendFilter::TVectorIds& theRanges)
+  {
+    theInputID = theInputDataSetID = -1;
+
+    vtkIdType aNbInputs = theRanges.size();
+    if(theInputDataSetID < 0 || theInputDataSetID >= aNbInputs)
+      return -1;
+    
+    vtkIdType aStartId = theRanges[theInputDataSetID];
+    return aStartId + theInputID;
   }
 }
 
-//---------------------------------------------------------------
 vtkIdType
 VTKViewer_AppendFilter
-::GetPointOutputID(vtkIdType theInputID)
+::GetPointOutputID(vtkIdType theInputID,
+                  vtkIdType theInputDataSetID)
 {
-  if (myPoints.GetPointer()) {
+  if(myPoints.GetPointer())
     return theInputID;
-  }
-  //
-  int aVtkID=-1;
-  IteratorOfDataMapOfIntegerInteger aMapIt;
-  //
-  aMapIt=myNodeMapObjIDVtkID.find(theInputID);
-  if (aMapIt!=myNodeMapObjIDVtkID.end()) {
-    // found
-    PairOfDataMapOfIntegerInteger& aPair=(*aMapIt);
-    aVtkID=aPair.second;
-  }
-  return aVtkID;
+
+  return GetOutputID(theInputID,theInputDataSetID,myNodeRanges);
 }
 
 
-//---------------------------------------------------------------
 vtkIdType 
 VTKViewer_AppendFilter
-::GetCellOutputID(vtkIdType theInputID)
+::GetCellOutputID(vtkIdType theInputID,
+                  vtkIdType theInputDataSetID)
 {
-  int aVtkID=-1;
-  IteratorOfDataMapOfIntegerInteger aMapIt;
-  //
-  aMapIt=myCellMapObjIDVtkID.find(theInputID);
-  if (aMapIt!=myCellMapObjIDVtkID.end()) {
-    // found
-    PairOfDataMapOfIntegerInteger& aPair=(*aMapIt);
-    aVtkID=aPair.second;
-  }
-  return aVtkID;
+  if(myPoints.GetPointer())
+    return theInputID;
+
+  return GetOutputID(theInputID,theInputDataSetID,myCellRanges);
 }
 
 
-//---------------------------------------------------------------
-vtkIdType 
+namespace
+{
+  void
+  GetInputID(vtkIdType theOutputID,
+            vtkIdType& theInputID,
+            vtkIdType& theStartID,
+            vtkIdType& theInputDataSetID,
+            const VTKViewer_AppendFilter::TVectorIds& theRanges)
+  {
+    theInputID = theStartID = theInputDataSetID = -1;
+
+    if(theRanges.empty())
+      return;
+
+    const vtkIdType& aRangeEnd = theRanges.back();
+    if(theOutputID < 0 ||  theOutputID >= aRangeEnd)
+      return;
+
+    vtkIdType aStartId = 0;
+    vtkIdType aNbInputs = theRanges.size();
+    for(vtkIdType aDataSetId = 0; aDataSetId < aNbInputs; ++aDataSetId){
+      vtkIdType aRange = theRanges[aDataSetId];
+      if(aRange > theOutputID){
+       theInputID = theOutputID - aStartId;
+       theInputDataSetID = aDataSetId;
+       theStartID = aStartId;
+       break;
+      }
+      aStartId = aRange;
+    }
+  }
+}
+
+void 
 VTKViewer_AppendFilter
-::GetPointInputID(vtkIdType theOutputID, 
+::GetPointInputID(vtkIdType theOutputID,
+                 vtkIdType& theInputID,
+                 vtkIdType& theStartID,
                  vtkIdType& theInputDataSetID)
 {
-  if (myPoints.GetPointer()) {
-    theInputDataSetID=0;
-    return theOutputID;
-  }
-  //
-  int aNb, aNbRanges, aRetID, i, i1, i2, j;
-  //
-  aRetID=-1;
-  theInputDataSetID=-1;
-  //
-  aNb=myNodeIds.size();
-  if (theOutputID<0 ||  theOutputID>=aNb) {
-    return aRetID;
-  }
-  //
-  aRetID=(int)myNodeIds[theOutputID];
-  //
-  aNbRanges=myNodeRanges.size()/2;
-  for (i=0; i<aNbRanges; ++i) {
-    j=2*i;
-    i1=myNodeRanges[j];
-    i2=myNodeRanges[j+1];
-    if (theOutputID>=i1 && theOutputID<=i2) {
-      theInputDataSetID=i;
-    }
+  if(myPoints.GetPointer()) {
+    theStartID = theInputDataSetID = 0;
+    theInputID = theOutputID;
+    return;
   }
-  //
-  return aRetID;
+
+  ::GetInputID(theOutputID,
+              theInputID,
+              theStartID,
+              theInputDataSetID,
+              myNodeRanges);
 }
 
 
-//---------------------------------------------------------------
-vtkIdType 
+void
 VTKViewer_AppendFilter
-::GetCellInputID(vtkIdType theOutputID, 
+::GetCellInputID(vtkIdType theOutputID,
+                vtkIdType& theInputID,
+                vtkIdType& theStartID,
                 vtkIdType& theInputDataSetID)
 {
-  int aNb, aNbRanges, aRetID, i, i1, i2, j;
-  //
-  aRetID=-1;
-  theInputDataSetID=-1;
-  //
-  aNb=myCellIds.size();
-  if (theOutputID<0 ||  theOutputID>=aNb) {
-    return aRetID;
-  }
-  //
-  aRetID=(int)myCellIds[theOutputID];
-  //
-  aNbRanges=myCellRanges.size()/2;
-  for (i=0; i<aNbRanges; ++i) {
-    j=2*i;
-    i1=myCellRanges[j];
-    i2=myCellRanges[j+1];
-    if (theOutputID>=i1 && theOutputID<=i2) {
-      theInputDataSetID=i;
-    }
-  }
-  //
-  return aRetID;
+  ::GetInputID(theOutputID,
+              theInputID,
+              theStartID,
+              theInputDataSetID,
+              myCellRanges);
 }
 
 
-//---------------------------------------------------------------
 void 
 VTKViewer_AppendFilter
 ::MakeOutput()
index f9c6b245a2a3b757803f7d77723841a20ca40369..c9a756381b9b5a16d6460f29a33ba349d8764cc7 100644 (file)
@@ -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/ or email : webmaster.salome@opencascade.com
+//
 #ifndef VTKVIEWER_APPENDFILTER_H
 #define VTKVIEWER_APPENDFILTER_H
 
@@ -36,19 +54,27 @@ public:
   GetPoints();
 
   vtkIdType
-  GetPointOutputID(vtkIdType theInputID);
+  GetPointOutputID(vtkIdType theInputID,
+                  vtkIdType theInputDataSetID);
 
   vtkIdType
-  GetCellOutputID(vtkIdType theInputID);
+  GetCellOutputID(vtkIdType theInputID,
+                 vtkIdType theInputDataSetID);
 
-  vtkIdType 
-  GetPointInputID(vtkIdType theOutputID, 
-                 vtkIdType& theInputDataSetID);
+  void 
+  GetPointInputID(vtkIdType theOutputID,
+                vtkIdType& theInputID,
+                vtkIdType& theStartID,
+                vtkIdType& theInputDataSetID);
 
-  vtkIdType
-  GetCellInputID(vtkIdType theOutputID, 
+  void
+  GetCellInputID(vtkIdType theOutputID,
+                vtkIdType& theInputID,
+                vtkIdType& theStartID,
                 vtkIdType& theInputDataSetID);
 
+  typedef std::vector<vtkIdType> TVectorIds;
+
 protected:
   /*! \fn VTKViewer_AppendFilter();
    * \brief Constructor
@@ -69,23 +95,10 @@ protected:
 
   void MakeOutput();
 
-  //
+  bool myDoMappingFlag;
+  TVectorIds myNodeRanges;
+  TVectorIds myCellRanges;
   vtkSmartPointer<vtkPoints> myPoints;
-
-private:
-  typedef std::vector<vtkIdType> TVectorId;
-  typedef std::vector<int> VectorInt;
-  typedef std::map <int,int>                  DataMapOfIntegerInteger;
-  typedef DataMapOfIntegerInteger::iterator   IteratorOfDataMapOfIntegerInteger;
-  typedef DataMapOfIntegerInteger::value_type PairOfDataMapOfIntegerInteger;
-private:
-  bool      myDoMappingFlag;
-  TVectorId myNodeIds;
-  TVectorId myCellIds;
-  VectorInt myNodeRanges;
-  VectorInt myCellRanges;
-  DataMapOfIntegerInteger myNodeMapObjIDVtkID;
-  DataMapOfIntegerInteger myCellMapObjIDVtkID;
 };
 
 #endif
index 36b1741b5bb95dbc753d3bdf25e6d0f3b66cdaba..016da1f7523fbf96b49cb0cd9f24c7b4be9c794f 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include <VTKViewer_CellRectPicker.h>
 
index 8cbbe245d2d1f5c28c5a7edc69440aff51596f95..f50636ab2d7114597558ecdf236509beafc8d419 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File    : VTKViewer_CellRectPicker.h
 //  Author  : Natalia KOPNOVA
index 679e484289b2c5d38d31ad1f015b39ceeeeb15ca..9885225625c0e8a2d87e491977bde0d1a480eab6 100644 (file)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  This library is distributed in the hope that it will be useful, 
 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 
 #include "VTKViewer_ConvexTool.h"
 
-#include <vtkUnstructuredGrid.h>
-#include <vtkTriangle.h>
-#include <vtkConvexPointSet.h>
-#include <vtkUnstructuredGridWriter.h>
-#include <vtkMath.h>
-#include <vtkSmartPointer.h>
-
 #include <set>
-#include <iterator>
+#include <map>
 #include <algorithm>
-#include <math.h>
-
-typedef vtkUnstructuredGrid TInput;
 
-typedef std::set<vtkIdType> TUIDS; // unique ids 
-typedef std::map<vtkIdType,TUIDS> TPTOIDS; // id points -> unique ids
-
-namespace CONVEX_TOOL
-{
-  // all pairs
-  typedef std::pair<vtkIdType,vtkIdType> TPair;
-  typedef std::set<TPair> 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 <vtkUnstructuredGrid.h>
+#include <vtkGeometryFilter.h>
+#include <vtkDelaunay3D.h>
+#include <vtkGenericCell.h>
+#include <vtkPolyData.h>
+#include <vtkCellData.h>
+#include <vtkPoints.h>
+#include <vtkIdList.h>
+#include <vtkCell.h>
+#include <vtkPlane.h>
+#include <vtkMath.h>
 
-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<vtkIdType> 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<TPolygon> 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<nb_face_points ; i++ ){
 
-      id2 = face_points[i];
+bool 
+VTKViewer_Triangulator
+::Execute(vtkUnstructuredGrid *theInput,
+         vtkCellData* thInputCD,
+         vtkIdType theCellId,
+         int theShowInside,
+         int theAllVisible,
+         const char* theCellsVisibility,
+         vtkPolyData *theOutput,
+         vtkCellData* theOutputCD,
+         int theStoreMapping,
+         std::vector<vtkIdType>& 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 = "<<aNumPts<<"\n";
 
-    if(MYDEBUG){
-      cout << "fId[" << faceId <<"]: ";
-      std::copy(output_faces.begin(), output_faces.end(), std::ostream_iterator<vtkIdType>(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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}\n";
+      aCellCenter[0] += aPntCoord[0];
+      aCellCenter[1] += aPntCoord[1];
+      aCellCenter[2] += aPntCoord[2];
     }
-    
-    face2face_output[faceId] = output_faces;
+    aCellCenter[0] /= aNumPts;
+    aCellCenter[1] /= aNumPts;
+    aCellCenter[2] /= aNumPts;
   }
-}
 
-/*! \fn bool IsConnectedFacesOnOnePlane( TInput* theGrid,vtkIdType theFId1, vtkIdType theFId2,TUIDS FpIds1, TUIDS FpIds2 )
- * \brief Check is connected faces on one plane.
- * \param theGrid - TInput
- * \param theFId1 - id of first face
- * \param theFId2 - id of second face
- * \param FpIds1  - first face points ids.
- * \param FpIds2  - second face points ids.
- * \return TRUE if two faces on one plane, else FALSE.
- */
-bool IsConnectedFacesOnOnePlane( TInput* theGrid,
-                                 vtkIdType theFId1, vtkIdType theFId2,
-                                TUIDS FpIds1, TUIDS FpIds2 )
-{
-  bool status = false;
-  TUIDS common_ids;
-  std::set_intersection(FpIds1.begin(), FpIds1.end(), FpIds2.begin(), FpIds2.end(),
-                       std::inserter(common_ids,common_ids.begin()));
-  
-  /*           Number of common ids = 2 (A1,A2)
-              
-  
-                _ _ _ _ _      _ _ _ _    vectors:
-               |         \   /         |   v1 {A2,A1}
-                          \ /              v2 {A1,B1}
-               |           | A2        |   v3 {A1,C1}
-                          |               
-              |           |           |
-                          |
-              |           | A1        |
-                         / \
-              |_ _ _ _ _/   \_ _ _ _ _|
-              B2        B1   C1        C2
-
-   */
-  TUIDS::iterator common_iter = common_ids.begin();
-  if(common_ids.size() == 2){
-    TUIDS::iterator loc_id1_0 = FpIds1.find(*(common_iter));
-    common_iter++;
-    TUIDS::iterator loc_id1_1 = FpIds1.find(*(common_iter));
-
-    TUIDS::iterator loc_id2_0 = FpIds1.begin();
-    TUIDS::iterator loc_id2_1 = FpIds2.begin();
-
-    vtkIdType A1 = *loc_id1_0;
-    vtkIdType A2 = *loc_id1_1;
-    vtkIdType B1;
-    vtkIdType C1;
-
-    for(;loc_id2_0!=FpIds1.end();loc_id2_0++)
-      if(*loc_id2_0 != A1 && *loc_id2_0!= A2){
-       B1 = *loc_id2_0;
-       break;
-      }
-    for(;loc_id2_1!=FpIds2.end();loc_id2_1++)
-      if(*loc_id2_1 != A1 && *loc_id2_1!= A2){
-       C1 = *loc_id2_1;
-       break;
-      }
-    if(MYDEBUG) cout <<endl;
-    if(MYDEBUG) cout << "FId_1="<<theFId1<<" FId_2="<<theFId2<<endl;
-    if(MYDEBUG) cout << "   A1="<<A1<<" A2="<<A2<<" B1="<<B1<<" C1="<<C1<<" ->";
-    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 = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
 
-    float b2 = vtkMath::Norm(vec_b2);
-    float aCos = vtkMath::Dot(vec_b1,vec_b2)/(b1*b2);
-    
-    float angle=90.0;
-    angle = aCos>=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="<<angle<<" status="<<status<<endl;
-    }
-    
-  } else if (common_ids.size() >2){
-    // not implemented yet
-    if(MYDEBUG) cout << "Warning! VTKViewer_ConvexTool::IsConnectedFacesOnOnePlane()";
-  } else {
-    // one or no connection ... continue
-  }
+  // To initialize set of points that belong to the cell
+  typedef std::set<vtkIdType> 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<vtkIdType> 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<TPointIds> 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 << "========================================="<<endl;
-  if(MYDEBUG) cout << "v1:";
-  if(MYDEBUG) std::copy(v1.begin(), v1.end(), std::ostream_iterator<vtkIdType>(cout, " "));
-  if(MYDEBUG) cout << "\tv2:";
-  if(MYDEBUG) std::copy(v2.begin(), v2.end(), std::ostream_iterator<vtkIdType>(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<vtkIdType>(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<vtkIdType>(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 <<endl;
-  float P[3][3];
-  vtkIdType current_points_ids[2];
-  if(MYDEBUG_REMOVE) 
-    if(input_two_points_ids.size()!=2) cout << "Error. Must be two ids in variable input_two_points_ids="<<input_two_points_ids.size()<<endl;
-  TUIDS::const_iterator aInPointsIter = input_two_points_ids.begin();
-  for(int i=0;i<2 && aInPointsIter!=input_two_points_ids.end();aInPointsIter++,i++){
-    current_points_ids[i] = *aInPointsIter;
-    if (MYDEBUG_REMOVE) cout << " " << *aInPointsIter;
-  }
-  if (MYDEBUG_REMOVE) cout << endl;
-  bool iscurrent_points_changed = false;
-  points->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] << ":"<<P[0][0]<<","<<P[0][1]<<","<<P[0][2]<<endl;
-      cout << "\t" << current_points_ids[1] << ":"<<P[1][0]<<","<<P[1][1]<<","<<P[1][2]<<endl;
-      cout << "\t" << *aPointsIter << ":"<<P[2][0]<<","<<P[2][1]<<","<<P[2][2]<<endl;
-    }
-  
-    // x-x1=(x2-x1)*t -> 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] << ","<<coeff[i][1]
-            <<"   t="<<t[i]<<" isok_coord="<<isok_coord[i]<<endl;
-    if(!isok) continue;
-
-    if (!isok_coord[0] && !isok_coord[1]){
-      if (fabs(t[0]-t[1]) <= EPS_T) isok = true;
-      else isok = false;
-    }
-    if (MYDEBUG_REMOVE) cout << __LINE__ << "          1000 " << isok << endl;
-    if(!isok) continue;
-    if (!isok_coord[1] && !isok_coord[2]){
-      if (fabs(t[1] - t[2]) <= EPS_T) isok = true;
-      else isok = false;
-    }
-    if (MYDEBUG_REMOVE) cout << __LINE__ << "          2000 " << isok << endl;
-    if(!isok) continue;
-    if (!isok_coord[0] && !isok_coord[2]){
-      if (fabs(t[0] - t[2]) <= EPS_T) isok = true;
-      else isok = false;
-    }
-    if (MYDEBUG_REMOVE) cout << __LINE__ << "          3000 " << isok<<endl;
-    if(!isok) continue;
-    
-    float param[3]; // parametric coord for P[0],P[1],P[2] <--->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="<<min<<"  max="<<max<<" - "<<"imin="<<imin<<"  imax="<<imax<<endl;
-    // imin - index of left point
-    // imax - index of right point
-    
-    // add id to removed point
-    vtkIdType rem_id,id1,id2;
-    for(vtkIdType i=0;i<3;i++)
-      if (i!=imin && i!=imax) {rem_id = i; break;}
-    
-    if(rem_id == 0) {
-      rem_id = current_points_ids[0];
-      id1=current_points_ids[1];
-      id2=*aPointsIter;
-    }
-    else if (rem_id == 1) {
-      rem_id = current_points_ids[1];
-      id1=current_points_ids[0];
-      id2=*aPointsIter;
-    }
-    else if (rem_id == 2) {
-      rem_id = *aPointsIter;
-      id1=current_points_ids[0];
-      id2=current_points_ids[1];
-    }
-    if (MYDEBUG_REMOVE) 
-      cout << " " << current_points_ids[0] <<","<<current_points_ids[1]<<"---->"<<id1<<","<<id2<<endl;
-    if((current_points_ids[0] == id1 && current_points_ids[1] == id2) ||
-       (current_points_ids[0] == id2 && current_points_ids[1] == id1))
-      {}
-    else {
-      iscurrent_points_changed = true;
-      current_points_ids[0] = id1;
-      current_points_ids[1] = id2;
-    }
-    
-    removed_points_ids.insert(rem_id);
-  }
-  out_two_points_ids.insert(current_points_ids[0]);
-  out_two_points_ids.insert(current_points_ids[1]);
-}
-
-static vtkSmartPointer<vtkConvexPointSet> RemoveAllUnneededPoints(vtkConvexPointSet* convex){
-  vtkSmartPointer<vtkConvexPointSet> 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;i<numIds-2;i++){
-    for(int j=i+1;j<numIds-1;j++){
-      TPair aPair(i,j);
-      aLists[i].insert(aPair);
-    }
-  }
-  for(vtkIdType i=0;i<numIds-2;i++){
-    TUIDS::iterator aRemIter=removed_points_ids.find(i);
-    if(aRemIter!=removed_points_ids.end()) continue;
-    TSet::iterator aPairIter=aLists[i].begin();
-    loc_removed_points_ids.clear();
-    out_two_points_ids.clear();
-    input_points.clear();
-    two_points.clear();
-    for(;aPairIter!=aLists[i].end();aPairIter++){
-      vtkIdType aFirId = (*aPairIter).first;
-      vtkIdType aSecId = (*aPairIter).second;
-      aRemIter=removed_points_ids.find(aSecId);
-      if(aRemIter!=removed_points_ids.end()) continue;
-      TPair aPair1(aFirId,aSecId);
-      TPair aPair2(aSecId,aFirId);
-      TSet::iterator aGoodIter=good_point_ids.find(aPair1);
-      if(aGoodIter!=good_point_ids.end()) continue;
-      aGoodIter=good_point_ids.find(aPair2);
-      if(aGoodIter!=good_point_ids.end()) continue;
-      two_points.insert(aFirId);
-      two_points.insert(aSecId);
-      if (MYDEBUG_REMOVE) 
-       cout << "\nInput: " << aFirId<<":"<<aPointIds->GetId(aFirId) << "," << aSecId <<":"<<aPointIds->GetId(aSecId)<< "  --- ";
-      for(vtkIdType k=aSecId+1;k<numIds;k++) {
-       input_points.insert(k);
-       if (MYDEBUG_REMOVE) cout << k<<":"<<aPointIds->GetId(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 ================" <<endl;
-    cout << "Removed:";
-    for(TUIDS::iterator aIter=removed_points_ids.begin();aIter!=removed_points_ids.end();aIter++)
-      cout << *aIter << ",";
-    cout << endl;
-  }
-  
-  TUIDS result_ids,all_ids;
-  for(vtkIdType i=0;i<numIds;i++) all_ids.insert(i);
-  std::set_difference(all_ids.begin(),
-                     all_ids.end(),
-                     removed_points_ids.begin(),
-                     removed_points_ids.end(),
-                     std::inserter(result_ids,result_ids.begin()));
-
-  out->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<vtkConvexPointSet*>(theGrid->GetCell(cellId))){
-      vtkSmartPointer<vtkConvexPointSet> 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="<<aNbFaces<<endl;
-      if(MYDEBUG_REMOVE) cout << "numPts="<<numPts<<endl;
-      TPTOIDS p2faces; // key=pointId , value facesIds set
-
-      GetCenter(convex->Points,convex_center);
-
-      for (vtkIdType faceId=0; faceId < aNbFaces; faceId++){
-       vtkCell *aFace = convex->GetFace(faceId);
-       int numFacePts = aFace->GetNumberOfPoints();
-       TCell aIds;
-
-        int i = 0;
-       for(i=0;i<numFacePts;i++)
-         aIds.push_back(aFace->GetPointId(i));
-
-       float v_a[3],v_b[3],v_convex2face[3]; // vectors
-       float *id_0,*id_1,*id_n;
-       /*=============================================
-                       ,+- - - -  _
-                  _   / id_n   |  v_b {id_0,id_n}
-                 v_b /            _
-                    /          |  v_a {id_0,id_1}
-                   /          
-                  /            |
-                 + id_0
-                  \
-                 _ \           |
-                v_a \
-                     \ id_1    |
-                      "+- - - -
-
-        ============================================*/ 
-       id_0 = theGrid->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 = "<<aFaceId<<"; anIsObserved = "<<anIsObserved;
+    //cout<<"; aNewPts = {"<<aNewPts[0]<<", "<<aNewPts[1]<<", "<<aNewPts[2]<<"}\n";
+    
+    if(!anIsObserved){
+      // To get coordinates of the points of the traingle face
+      vtkFloatingPointType aCoord[3][3];
+      aPoints->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 ["<<new_face2face_iter->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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
+         if(fabs(aDist) < aDistEps){
+           aPointIds.insert(aPntId);
+           aCenter[0] += aPntCoord[0];
+           aCenter[1] += aPntCoord[1];
+           aCenter[2] += aPntCoord[2];
+         }
        }
+       int aNbPoints = aPointIds.size();
+       aCenter[0] /= aNbPoints;
+       aCenter[1] /= aNbPoints;
+       aCenter[2] /= aNbPoints;
       }
       
-      TPTOIDS output_newid2face;
-      TCellArray output_newid2face_v2;
+      //To sinchronize orientation of the cell and its face
+      vtkFloatingPointType aVectorC[3] = { aCenter[0] - aCellCenter[0],
+                                          aCenter[1] - aCellCenter[1],
+                                          aCenter[2] - aCellCenter[2] };
+      vtkMath::Normalize(aVectorC);
+      
+      vtkFloatingPointType aDot = vtkMath::Dot(aNormal,aVectorC);
+      //cout<<"\t\taNormal = {"<<aNormal[0]<<", "<<aNormal[1]<<", "<<aNormal[2]<<"}";
+      //cout<<"; aVectorC = {"<<aVectorC[0]<<", "<<aVectorC[1]<<", "<<aVectorC[2]<<"}\n";
+      //cout<<"\t\taDot = "<<aDot<<"\n";
+      if(aDot > 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 = {"<<aCenter[0]<<", "<<aCenter[1]<<", "<<aCenter[2]<<"}";
+      //cout<<"; aVector0 = {"<<aVector0[0]<<", "<<aVector0[1]<<", "<<aVector0[2]<<"}\n";
+      
+      // To calculate the set of points by face those that belong to the plane
+      TFace2PointIds aRemoveFace2PointIds;
       {
-       TUIDS already_in;
-       TUIDS already_in_tmp;
-       int k=0;
-       TPTOIDS::const_iterator new_face2face_iter = new_face2faces.begin();
-       for(;new_face2face_iter!=new_face2faces.end();new_face2face_iter++){
-         if(already_in.find(new_face2face_iter->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 << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
-       {
-         TPTOIDS::const_iterator new_face2face_iter = output_newid2face.begin();
-         for(;new_face2face_iter!=output_newid2face.end();new_face2face_iter++){
-           cout << "Group ["<<new_face2face_iter->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 << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
-       cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
-       cout << "+++++++++++++++++++++++ ++ ++ ++++++++++++++++++++++++++++"<<endl;
-       cout << "+++++++++++++++++++++++++   ++++++++++++++++++++++++++++++"<<endl;
-       cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
-       {
-         TCellArray::const_iterator new_face2face_iter = output_newid2face_v2.begin();
-         for(;new_face2face_iter!=output_newid2face_v2.end();new_face2face_iter++){
-           cout << "Group ["<<new_face2face_iter->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<vtkFloatingPointType,vtkIdType> 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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}";
+         //cout<<"; aGreaterThanPi = "<<aGreaterThanPi<<"; aCosinus = "<<aCosinus<<"; anAngle = "<<anAngle<<"\n";
+         if(aGreaterThanPi){
+           anAngle = a2Pi - anAngle;
+           //cout<<"\t\t\t\tanAngle = "<<anAngle<<"\n";
          }
-         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;
+         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 << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
-       cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
-       cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
+    }
+  }
+  
+  if(aPolygons.empty())
+    return true;
+
+  // To check, whether the polygons give a convex polyhedron or not
+  if(theIsCheckConvex){
+    int aNbPolygons = aPolygons.size();
+    for (int aPolygonId = 0; aPolygonId < aNbPolygons; aPolygonId++) {
+      ::TPolygon& aPolygon = aPolygons[aPolygonId];
+      vtkFloatingPointType* aNormal = aPolygon.myNormal;
+      vtkFloatingPointType* anOrigin = aPolygon.myOrigin;
+      //cout<<"\taPolygonId = "<<aPolygonId<<"\n";
+      //cout<<"\t\taNormal = {"<<aNormal[0]<<", "<<aNormal[1]<<", "<<aNormal[2]<<"}";
+      //cout<<"; anOrigin = {"<<anOrigin[0]<<", "<<anOrigin[1]<<", "<<anOrigin[2]<<"}\n";
+      for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
+       vtkFloatingPointType aPntCoord[3];
+       vtkIdType anId = GetPointId(aPntId);
+       aPoints->GetPoint(anId,aPntCoord);
+       vtkFloatingPointType aDist = vtkPlane::Evaluate(aNormal,anOrigin,aPntCoord);
+       //cout<<"\t\taPntId = "<<anId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
+       if(aDist < -aDistEps)
+         return false;
       }
-      outputCellArray = output_new_face2ids;//f2points;
     }
-  } else {
-    // not implemented
   }
+
+
+  // To pass resulting set of the polygons to the output
+  {
+    int aNbPolygons = aPolygons.size();
+    for (int aPolygonId = 0; aPolygonId < aNbPolygons; aPolygonId++) {
+      ::TPolygon& aPolygon = aPolygons[aPolygonId];
+      TConnectivities& aConnectivities = aPolygon.myConnectivities;
+      int aNbPoints = aConnectivities.size();
+      vtkIdType aNewCellId = theOutput->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];
 }
index ed303af03a6b80d110ea7e545acd8d8380789970..2bf024d5e0fc1d1a7bd86b948ab215259e59e2dd 100644 (file)
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef _VTKViewer_ConvexTool_H
 #define _VTKViewer_ConvexTool_H
 
-#include <vtkUnstructuredGrid.h>
+#include "VTKViewer.h"
+
 #include <vector>
-#include <map>
 
-typedef std::vector<vtkIdType> TCell; // ptsIds
-typedef std::map<vtkIdType,TCell> TCellArray; // CellId, TCell
+#include <vtkSystemIncludes.h>
+
+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<vtkIdType>& 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
index 0aef6c3a11ef9ea658e7369d37c056653291da02..5cb422e118b841dab3d87fa1942f502682e8a9d3 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 // File:    VISU_ExtractUnstructuredGrid.cxx
 
 
 #include "VTKViewer_ExtractUnstructuredGrid.h"
-//#include "utilities.h"
+#include "VTKViewer_CellLocationsArray.h"
 
 #include <vtkUnsignedCharArray.h>
 #include <vtkUnstructuredGrid.h>
 #include <vtkObjectFactory.h>
 #include <vtkCellArray.h>
-#include <vtkIntArray.h>
 #include <vtkIdList.h>
 #include <vtkCell.h>
 
@@ -238,7 +237,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();
@@ -327,7 +326,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();
index a820bd25ba95abbb856b87c13e4ee20e80a9cd0e..f5251a2b2b9432b7d0ece21b094103b7074db293 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_EXTRACTUNSTRUCTUREDGRID_H
 #define VTKVIEWER_EXTRACTUNSTRUCTUREDGRID_H
index 3d1e9a20eace7ea884edce60525bbee079a4c983..f33ea7baead721fd4238cc1e51270539e594a08f 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 407bace53e25f1a19791607a1dd119a27896b78d..7e72b8df5adff07f17946a2bfcd4f6c70d74a40e 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 26fb08e61e8e706f5780cb3ba468f2aeccb71dc0..7aa5630befbb8a6442c5cb4d9d8d49bae1233784 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 37a9dda64140499d97275f6ae4b6fb7973c550c1..a95e47dec25d5da9de93813e66fb9668479900e1 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -27,6 +27,7 @@
 //  $Header$
 
 #include "VTKViewer_GeometryFilter.h"
+#include "VTKViewer_ConvexTool.h"
 
 #include <vtkSmartPointer.h>
 #include <vtkCellArray.h>
 #include <vtkVoxel.h>
 #include <vtkWedge.h>
 
-#include <vtkMath.h>
-#include <vtkPlane.h>
-#include <vtkDelaunay3D.h>
-#include <vtkGeometryFilter.h>
-
 #include <algorithm>
 #include <iterator>
 #include <vector>
@@ -62,7 +58,7 @@
   #endif
 #endif
 
-#define USE_ROBUST_TRIANGULATION
+//#define USE_ROBUST_TRIANGULATION
 
 //----------------------------------------------------------------------------
 vtkCxxRevisionMacro(VTKViewer_GeometryFilter, "$Revision$");
@@ -81,7 +77,6 @@ VTKViewer_GeometryFilter
 {}
 
 
-//----------------------------------------------------------------------------
 void
 VTKViewer_GeometryFilter
 ::Execute()
@@ -102,7 +97,6 @@ VTKViewer_GeometryFilter
 }
 
 
-//----------------------------------------------------------------------------
 void
 VTKViewer_GeometryFilter
 ::UnstructuredGridExecute()
@@ -128,28 +122,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 +291,30 @@ VTKViewer_GeometryFilter
           break;
          
        case VTK_CONVEX_POINT_SET: {
-         //cout<<"cellId = "<<cellId<<"\n";
-
-         vtkIdType aNumPts;
-         vtkPoints *aPoints;
-#ifdef USE_ROBUST_TRIANGULATION
-         aPoints = aDelaunayPoints;
-         anUnstructuredGrid->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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}\n";
-             aCellCenter[0] += aPntCoord[0];
-             aCellCenter[1] += aPntCoord[1];
-             aCellCenter[2] += aPntCoord[2];
-           }
-           aCellCenter[0] /= aNumPts;
-           aCellCenter[1] /= aNumPts;
-           aCellCenter[2] /= aNumPts;
-         }
-
-#ifdef USE_ROBUST_TRIANGULATION
-         aGeometryFilter->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<vtkIdType> 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<vtkIdType> TFace2Visibility;
-         TFace2Visibility aFace2Visibility;
-
-         typedef std::set<TPointIds> 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 = "<<aFaceId<<"; anIsObserved = "<<anIsObserved;
-           //cout<<"; aNewPts = {"<<aNewPts[0]<<", "<<aNewPts[1]<<", "<<aNewPts[2]<<"}\n";
-             
-           if(!anIsObserved){
-             // To get coordinates of the points of the traingle face
-             float aCoord[3][3];
-             aPoints->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] };
+         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 aVector02[3] = { aCoord[2][0] - aCoord[0][0],
-                                    aCoord[2][1] - aCoord[0][1],
-                                    aCoord[2][2] - aCoord[0][2] };
-             
-             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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
-                 if(fabs(aDist) < aDistEps){
-                   aPointIds.insert(aPntId);
-                   aCenter[0] += aPntCoord[0];
-                   aCenter[1] += aPntCoord[1];
-                   aCenter[2] += aPntCoord[2];
-                 }
-               }
-               int aNbPoints = aPointIds.size();
-               aCenter[0] /= aNbPoints;
-               aCenter[1] /= aNbPoints;
-               aCenter[2] /= aNbPoints;
-             }
-             
-             // To calculate the primary direction for point set
-             float aVector0[3] = { aCoord[0][0] - aCenter[0],
-                                   aCoord[0][1] - aCenter[1],
-                                   aCoord[0][2] - aCenter[2] };
-
-             //To sinchronize orientation of the cell and its face
-             float aVectorC[3] = { aCenter[0] - aCellCenter[0],
-                                   aCenter[1] - aCellCenter[1],
-                                   aCenter[2] - aCellCenter[2] };
-             vtkMath::Normalize(aVectorC);
-
-             float aDot = vtkMath::Dot(aCross21,aVectorC);
-             //cout<<"\t\taCross21 = {"<<aCross21[0]<<", "<<aCross21[1]<<", "<<aCross21[2]<<"}";
-             //cout<<"; aVectorC = {"<<aVectorC[0]<<", "<<aVectorC[1]<<", "<<aVectorC[2]<<"}\n";
-             //cout<<"\t\taDot = "<<aDot<<"\n";
-             if(aDot > 0){
-               aCross21[0] = -aCross21[0];
-               aCross21[1] = -aCross21[1];
-               aCross21[2] = -aCross21[2];
-             }
-               
-             vtkMath::Normalize(aVector0);
-             
-             //cout<<"\t\taCenter = {"<<aCenter[0]<<", "<<aCenter[1]<<", "<<aCenter[2]<<"}";
-             //cout<<"; aVector0 = {"<<aVector0[0]<<", "<<aVector0[1]<<", "<<aVector0[2]<<"}\n";
-
-             // To calculate the set of points by face those that belong to the plane
-             TFace2PointIds aRemoveFace2PointIds;
-             {
-               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()));
-
-                 if(anIntersection == anIds){
-                   aRemoveFace2PointIds.insert(anIds);
-                 }
-               }
-             }
-
-             // 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);
-               }
-             }
-
-             // To sort the planar set of the points accrding to the angle
-             {
-               typedef std::map<float,vtkIdType> 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 = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}";
-                 //cout<<"; aGreaterThanPi = "<<aGreaterThanPi<<"; aCosinus = "<<aCosinus<<"; anAngle = "<<anAngle<<"\n";
-                 if(aGreaterThanPi)
-                   anAngle = a2Pi - anAngle;
-                 aSortedPointIds[anAngle] = aPntId;
-                 //cout<<"\t\t\tanAngle = "<<anAngle<<"\n";
-               }
-               if(!aSortedPointIds.empty()){
-                 aCellType = VTK_POLYGON;
-                 int numFacePts = aSortedPointIds.size();
-                 std::vector<vtkIdType> 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 +745,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 +757,6 @@ VTKViewer_GeometryFilter
 }
 
 
-//----------------------------------------------------------------------------
 void
 VTKViewer_GeometryFilter
 ::SetInside(int theShowInside)
@@ -1069,7 +776,6 @@ VTKViewer_GeometryFilter
 }
 
 
-//----------------------------------------------------------------------------
 void 
 VTKViewer_GeometryFilter
 ::SetWireframeMode(int theIsWireframeMode)
@@ -1089,7 +795,6 @@ VTKViewer_GeometryFilter
 }
 
 
-//----------------------------------------------------------------------------
 void
 VTKViewer_GeometryFilter
 ::SetStoreMapping(int theStoreMapping)
@@ -1109,12 +814,8 @@ VTKViewer_GeometryFilter
 }
 
 
-//----------------------------------------------------------------------------
-vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID)
-{
-  if ( myVTK2ObjIds.empty() || theVtkID > (int)myVTK2ObjIds.size() )
-    return -1;
-
+vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){
+  if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1;
 #if defined __GNUC_2__
   return myVTK2ObjIds[theVtkID];
 #else
index 3290640361cbd6e7b476f5986e1878ddac85f5dd..a74b707336daa8c344cb01dbe92506f5b63ce5d8 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_GEOMETRYFILTER_H
 #define VTKVIEWER_GEOMETRYFILTER_H
index 1f69e6085d76aa66a8681c7474371e4dfb807a97..6bc13e78e7198268b69588e2f151921307251b3d 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #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]<right) && (aPnt[1]>bottom) && (aPnt[1]<top));
index ed3f08d99fd1ec5bcd8d30b5c0de6b3996f6ece2..d9eb4833fed97880d8c5998f5383d24d9ac5eb1f 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -121,13 +121,13 @@ class VTKVIEWER_EXPORT VTKViewer_InteractorStyle : public QObject, public vtkInt
   bool IsInRect(vtkCell* theCell, 
                const int left, const int top, 
                const int right, const int bottom);
-  bool IsInRect(float* thePoint, 
+  bool IsInRect(vtkFloatingPointType* thePoint, 
                const int left, const int top, 
                const int right, const int bottom);
 
   int State;
-  float MotionFactor;
-  float RadianToDegree;                 // constant: for conv from deg to rad
+  vtkFloatingPointType MotionFactor;
+  vtkFloatingPointType RadianToDegree;                 // constant: for conv from deg to rad
   double myScale;
 
   VTKViewer_Actor *myPreViewActor, *myPreSelectionActor, *mySelectedActor;
index be6cfe1e0c54ba97ce05ec5ad16d9e37dfcf96e8..172976d7ea06d5b2f29ea951dc278e851a8188ff 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 09bc8149f4eb145413b42954744e3f3d0d5d4f0d..3e683348f77f35997a195f26b5ea5a732a4b527d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_PASSTHROUGHFILTER_H
 #define VTKVIEWER_PASSTHROUGHFILTER_H
index f0a00caaa5c4454aa6ffd6a2163328f623f33439..d8f883b7ac1eefa3c39c99b736ba7d74a83dd30c 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 using namespace std;
 
-//----------------------------------------------------------------------------
+
 vtkStandardNewMacro(VTKViewer_RectPicker);
 
-//----------------------------------------------------------------------------
+
 /*!Constructor. Do nothing*/
 VTKViewer_RectPicker::VTKViewer_RectPicker()
 {
 }
 
-//----------------------------------------------------------------------------
+
 /*!Perform pick operation with selection rectangle provided. Normally the 
  * first two values for the selection top-left and right-bottom points are 
  * x-y pixel coordinate, and the third value is =0. 
@@ -427,7 +427,7 @@ char GetIntersectionPoint(const float start[3], const float end[3],
   return result;
 }
 
-//----------------------------------------------------------------------------
+
 /*! Bounding box intersection with hexahedron. Origin[4][4] starts the ray from corner points, 
  * dir[4][3] is the vector components of the ray in the x-y-z directions. 
  * (Notes: the intersection ray dir[4][3] is NOT normalized.)
@@ -724,7 +724,6 @@ char VTKViewer_RectPicker::HitBBox (float bounds[6], float origin[4][4], float d
   return inside;
 }
 
-//----------------------------------------------------------------------------
 /*! Position of point relative to hexahedron. p1[4][4] is the corner points of top face, 
  * p2[4][4] is the corner points of bottom face. 
  * \retval The method returns a non-zero value, if the point is inside.
@@ -850,7 +849,6 @@ char VTKViewer_RectPicker::PointInside(float p[3], float p1[4][4], float p2[4][4
   return inside;
 }
 
-//----------------------------------------------------------------------------
 float VTKViewer_RectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol, 
                                             vtkAssemblyPath *path, vtkProp3D *prop3D, 
                                             vtkAbstractMapper3D *mapper)
index c6d90cbd50febb48dac8500a75150dc2a91b666e..e202016301eaa36a725689656c70200bbe670786 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index a6ccdfd6aefa3aead1baff25a7519249b2bcc9c5..82bcf80ec64b2e36a1423f7e9139e33429c2873d 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_RenderWindow.h"
 
@@ -136,7 +136,7 @@ void VTKViewer_RenderWindow::wheelEvent(QWheelEvent* event)
 void VTKViewer_RenderWindow::onChangeBackgroundColor()
 {
   //float red, green, blue;
-  float backint[3];
+  vtkFloatingPointType backint[3];
 
   vtkRendererCollection * theRenderers = myRW->GetRenderers();
   theRenderers->InitTraversal();
index c83b0307ec1db995dfc4aaa257f15118e415a4ad..e85b1c549566769ddb044656786ff27dc59539f6 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_RENDERWINDOW_H
 #define VTKVIEWER_RENDERWINDOW_H
index daf93e15cb6c35a3af2ed82fcc1730827aab5d9e..9445c5b15d123e2e605d0e1950689f429159779c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_RenderWindowInteractor.h"
 #include "VTKViewer_RenderWindow.h"
@@ -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);
 }
index 9d06598b87f77ee7803167736d8ccc9352ad172b..435e5b4b8f334d0213b6bab2d710897fc3f2ce53 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_RENDERWINDOWINTERACTOR_H
 #define VTKVIEWER_RENDERWINDOWINTERACTOR_H
index b2825687a633ba0ff76d9599a9d90ad59f1b97ec..b4a7fb6a27f338ccd6e8be17b62c1314299aafdd 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -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");
 
index 9b60d49782a7449ad9a2ed21825e05bb120b54d3..4d2a416bb546aadbf515953d45a14368a8d7deb6 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_SHRINKFILTER_H
 #define VTKVIEWER_SHRINKFILTER_H
index d0f7db71277a2c8b372f34e1be38d78312264d65..4526d455533ace5e3091520524d99fa128c4c11b 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index 478d982c62f5d724cd036c766ca68d70c0f2b358..9ef36457738acc78eb49cd02402e92fdbc135947 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_TRANSFORM_H
 #define VTKVIEWER_TRANSFORM_H
index f54e97de1a627fd21d93d1756ad74bc5a70ac358..cdfc14a1fc449efd36e38d2c1984790c1c26e86d 100755 (executable)
@@ -17,7 +17,7 @@
 //  License along with 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 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
index ecc2b3cb279d9b0a12a4565e39121f248256ad98..3087a03e9196aa8a7750384b0ab28012dc4a700b 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_TRANSFORMFILTER_H
 #define VTKVIEWER_TRANSFORMFILTER_H
index a6670cb87132b9745aa267d52ed53bdd2d6150e5..c426e0280d7cb5e319e9a4042a8cdbfcfe409c0c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_Trihedron.h"
 #include "VTKViewer_Actor.h"
@@ -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();
index d134740f83e19b34b19f6930b88b525a2a5b7179..0d29f11d8fd491f289ebfacc4756965d6251f13c 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_TRIHEDRON_H
 #define 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_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
    */
index a05b0a36f5654b691ee82f7d34a13466088d18c6..5f061a64bc52ef94caacb6cac3bc00f9f4a64045 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
+#include "VTKViewer_Utilities.h"
 #include "VTKViewer_Actor.h"
 
+#include <algorithm>
+
 // VTK Includes
 #include <vtkMath.h>
 #include <vtkCamera.h>
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
-#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;
-  float bounds[6];
-  int aCount = ComputeVisiblePropBounds(theRenderer,bounds);
+  if(!theRenderer)
+    return;
+
+  vtkCamera* aCamera = theRenderer->GetActiveCamera();
+  if(!aCamera) 
+    return;
+
+  vtkFloatingPointType aBounds[6];
+  int aCount = ComputeVisiblePropBounds(theRenderer,aBounds);
+
   if(theUsingZeroFocalPoint || aCount){
-    float aLength = bounds[1]-bounds[0];
-    aLength = max((bounds[3]-bounds[2]),aLength);
-    aLength = max((bounds[5]-bounds[4]),aLength);
+    static vtkFloatingPointType MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT;
+
+    vtkFloatingPointType aLength = aBounds[1]-aBounds[0];
+    aLength = max((aBounds[3]-aBounds[2]),aLength);
+    aLength = max((aBounds[5]-aBounds[4]),aLength);
     
-    double vn[3];
-    if ( theRenderer->GetActiveCamera() != NULL )
-      theRenderer->GetActiveCamera()->GetViewPlaneNormal(vn);
-    else{
+    if(aLength < MIN_DISTANCE)
       return;
-    }
+
+    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]));
+    
+    if(aWidth < MIN_DISTANCE)
+      return;
+
+    vtkFloatingPointType aViewPlaneNormal[3];
+    aCamera->GetViewPlaneNormal(aViewPlaneNormal);
     
-    float center[3] = {0.0, 0.0, 0.0};
+    vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0};
     if(!theUsingZeroFocalPoint){
-      center[0] = (bounds[0] + bounds[1])/2.0;
-      center[1] = (bounds[2] + bounds[3])/2.0;
-      center[2] = (bounds[4] + bounds[5])/2.0;
+      aCenter[0] = (aBounds[0] + aBounds[1])/2.0;
+      aCenter[1] = (aBounds[2] + aBounds[3])/2.0;
+      aCenter[2] = (aBounds[4] + aBounds[5])/2.0;
     }
-    theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]);
-    
-    float 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]));
+    aCamera->SetFocalPoint(aCenter[0],aCenter[1],aCenter[2]);
     
-    double ang = theRenderer->GetActiveCamera()->GetViewAngle();
-    float distance = 2.0*width/tan(ang*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 *vup = theRenderer->GetActiveCamera()->GetViewUp();
-    if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 ){
-      theRenderer->GetActiveCamera()->SetViewUp(-vup[2], vup[0], vup[1]);
-    }
+    vtkFloatingPointType aViewUp[3];
+    aCamera->GetViewUp(aViewUp);
+    if(fabs(vtkMath::Dot(aViewUp,aViewPlaneNormal)) > 0.999)
+      aCamera->SetViewUp(-aViewUp[2], aViewUp[0], aViewUp[1]);
     
     // update the camera
-    theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0],
-                                                center[1]+distance*vn[1],
-                                                center[2]+distance*vn[2]);
+    aCamera->SetPosition(aCenter[0]+aDistance*aViewPlaneNormal[0],
+                        aCenter[1]+aDistance*aViewPlaneNormal[1],
+                        aCenter[2]+aDistance*aViewPlaneNormal[2]);
+
     // find size of the window
-    int* winsize = theRenderer->GetSize();
-    if(winsize[0] < winsize[1]) width *= float(winsize[1])/float(winsize[0]);
+    int* aWinSize = theRenderer->GetSize();
+    if(aWinSize[0] < aWinSize[1]) 
+      aWidth *= vtkFloatingPointType(aWinSize[1])/vtkFloatingPointType(aWinSize[0]);
     
-    if(theUsingZeroFocalPoint) width *= sqrt(2.0);
+    if(theUsingZeroFocalPoint) 
+      aWidth *= sqrt(2.0);
     
-    theRenderer->GetActiveCamera()->SetParallelScale(width/2.0);
+    aCamera->SetParallelScale(aWidth/2.0);
   }
-  //workaround on VTK
-  //theRenderer->ResetCameraClippingRange(bounds);
+
   ResetCameraClippingRange(theRenderer);
 }
 
 /*! 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;
@@ -94,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;
   
@@ -150,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;
@@ -180,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
index 6341e885d67ed3ca98f3b3898fd16ec1785567f9..7ef9cc550c63e20bf47310a7d1eda3b28fb76d4b 100755 (executable)
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_UTILITIES_H
 #define VTKVIEWER_UTILITIES_H
 
-#include <VTKViewer.h>
+#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
index b4e62266a9534a3462347a17284940fd3beac44f..5ec7a8c58335fe28a30c13dbc6281e7317bc4e30 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 /*=========================================================================
 
@@ -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);
index 8ce64cdd4d1f1787736fff2448d51423a97e15f8..5838f6a1d837abb212a60ccf608dd80def0a0df2 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 /*=========================================================================
 
index 2dedb7984f2432b81c17a696377143c0ff73fed5..d67c92d1e8cea7b614bfceb6f212ad0999e4c7ea 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_ViewManager.h"
 #include "VTKViewer_ViewModel.h"
index 03f6d21da7bf939742f05f5c2e05da1dcb533d97..49d9a26c8b88d6c2234bc224a316da0891839ee5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_VIEWMANAGER_H
 #define VTKVIEWER_VIEWMANAGER_H
index f8fd9913e88222fe5be78a63d61d601c504a6bdc..9653aeacf11aa2686004790210b42f842454c0c2 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_ViewModel.h"
 #include "VTKViewer_ViewWindow.h"
index 0ca65ab79efea878297f4a20f32ec2be72f3b0ac..06cab857f563c93057d5a945422d3918cde406e5 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_VIEWMODEL_H
 #define VTKVIEWER_VIEWMODEL_H
index d4500095a314523e6bee492b6484f8b5280d5e92..aba392028637f0304e817fda6a49477d1e0690dd 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #include "VTKViewer_ViewWindow.h"
 #include "VTKViewer_ViewModel.h"
@@ -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);
@@ -559,3 +559,54 @@ QImage VTKViewer_ViewWindow::dumpView()
   QPixmap px = QPixmap::grabWindow( myRenderWindow->winId() );
   return px.convertToImage();
 }
+
+/*! The method returns the visual parameters of this view as a formated string
+ */
+QString VTKViewer_ViewWindow::getVisualParameters()
+{
+  double pos[3], focalPnt[3], viewUp[3], parScale, scale[3];
+
+  vtkCamera* camera = myRenderer->GetActiveCamera();
+  camera->GetPosition( pos );
+  camera->GetFocalPoint( focalPnt );
+  camera->GetViewUp( viewUp );
+  parScale = camera->GetParallelScale();
+  GetScale( scale );
+
+  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] );
+  return retStr;
+}
+
+/*! The method restors visual parameters of this view from a formated string
+ */
+void VTKViewer_ViewWindow::setVisualParameters( const QString& parameters )
+{
+  QStringList paramsLst = QStringList::split( '*', parameters, true );
+  if ( paramsLst.size() == 13 ) {
+    double pos[3], focalPnt[3], viewUp[3], parScale, scale[3];
+    pos[0] = paramsLst[0].toDouble();
+    pos[1] = paramsLst[1].toDouble();
+    pos[2] = paramsLst[2].toDouble();
+    focalPnt[0] = paramsLst[3].toDouble();
+    focalPnt[1] = paramsLst[4].toDouble();
+    focalPnt[2] = paramsLst[5].toDouble();
+    viewUp[0] = paramsLst[6].toDouble();
+    viewUp[1] = paramsLst[7].toDouble();
+    viewUp[2] = paramsLst[8].toDouble();
+    parScale = paramsLst[9].toDouble();
+    scale[0] = paramsLst[10].toDouble();
+    scale[1] = paramsLst[11].toDouble();
+    scale[2] = paramsLst[12].toDouble();
+
+    vtkCamera* camera = myRenderer->GetActiveCamera();
+    camera->SetPosition( pos );
+    camera->SetFocalPoint( focalPnt );
+    camera->SetViewUp( viewUp );
+    camera->SetParallelScale( parScale );
+    myTransform->SetMatrixScale( scale[0], scale[1], scale[2] );
+    myRWInteractor->Render();
+  }
+}
index 951d96d4cbb7d39632c47385fd2657fcffca2436..05c9ee9a8979705c2ea86474bc7881a75afe7ed3 100755 (executable)
@@ -14,7 +14,7 @@
 // License along with 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 #ifndef VTKVIEWER_VIEWWINDOW_H
 #define VTKVIEWER_VIEWWINDOW_H
@@ -70,6 +70,9 @@ public:
   void AddActor( VTKViewer_Actor*, bool update = false );
   void RemoveActor( VTKViewer_Actor*, bool update = false);
 
+  virtual QString   getVisualParameters();
+  virtual void      setVisualParameters( const QString& parameters );
+
 public slots:
   void onFrontView();
   void onBackView();
diff --git a/src/VTKViewer/resources/VTKViewerM_images.po b/src/VTKViewer/resources/VTKViewerM_images.po
deleted file mode 100644 (file)
index ce2c6c7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#  VISU VISUGUI : GUI of VISU component
-#
-#  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   : 
-#  Module : 
-
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
-"PO-Revision-Date: 2005-05-10 15:20+0400\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
-
-msgid "ICON_SVTK_SCALING"
-msgstr "view_scaling.png"
-
-msgid "ICON_GRADUATED_AXES"
-msgstr "view_graduated_axes.png"
diff --git a/src/VTKViewer/resources/VTKViewerM_msg_en.po b/src/VTKViewer/resources/VTKViewerM_msg_en.po
deleted file mode 100644 (file)
index 7f2c72c..0000000
+++ /dev/null
@@ -1,109 +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 <EMAIL@ADDRESS>\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
index ba4e5f730c3b86540a1593f90284a9af84b33503..0f618ddc518502fb6aed4e1ee2600219d2ff6aab 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
index 603fbb3c09a26c9cc07f4a6d15cf5352d9c05958..e98a1dc3cc7eee055ce8ed073e358089eff90db8 100755 (executable)
@@ -17,7 +17,7 @@
 #  License along with 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 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
 #
@@ -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..."
 
index 3d01ad18482c5a4b8c37a4d4784935bbf9dfda78..9065e6b4545832f1d932e15b4bfd4af4cceffc96 100755 (executable)
Binary files a/src/VTKViewer/resources/view_update_rate.png and b/src/VTKViewer/resources/view_update_rate.png differ